Android studio4.0 内嵌 UnityActivity

2023-10-27

用最简单方法嵌入UnityActivity

哥们我在网上牌子都翻烂了,各种各样的姿势看的我眼花缭乱,最终觉得野花还是挺香的。自己动手摸索起来了!

首先,得导出Unity Android工程

导出工程不多说,看图写话!这里External Tools里的Android环境全是用Unity Hub手动导入的,完全没有问题。当然你也可以自己去下载SDK,JDK,NDK这些玩意,小白的话不折磨个半天是弄不明白的。但哥们我还是啰嗦一句,我们是Unity3d程序,建议直接用官方爸爸提供的Hub去安装Android环境吧。
在这里插入图片描述

在这里插入图片描述

我这里使用的是Unity2019.3.4f 导出的Unity android工程,unityLibrary目录下有两个模块:

  • launcher
  • unityLibrary

Unity官方声明这样是为了把Unity的项目完全剥离出来,方便之后二次处理,我这里就只使用unityLibrary。

特别注意:该项目中是没有gradle/wrapper/gradle-wrapper.properties该文件架构的。所以别傻傻的去找了。

在这里插入图片描述

其次,新建android studio工程

新建android工程,我这里android studio 版本是4.1.2,菜鸡互啄,新建完全Next——>Next。当然,这里你得懂得起android studio最起码的知识,新建工程,导入模块,模块依赖对吧。不然还是先去看看android sudio的第一个hello world的例子吧。

  1. 新建好的工程,打开Project视图,然后点击工具栏上的File->New->ImportModule。这里点击的是最顶部工具栏上的File。

  2. 导入模块,这里只需要导入unityLibrary模块,launcher模块不需要导入。因为我们自己新建了一个android项目,只需要在新建项目的activity里显示unityActivity就行了。
    在这里插入图片描述

  3. 导入成功后,选中app模块,右键找到Open Module Settings设置,将unityLibrary设置成app模块的依赖项。
    在这里插入图片描述

  4. 在MainActivity.java中添加如下代码。这里就最简单的代码,在默认activity里打开UnityActivity,别跟我说为啥,我尼玛会生气。
    在这里插入图片描述

  5. 点击Sync Project with Gradle Files,然后进行build,build前你得把模拟器或者手机接好啊,不然build个卵。我这里用的夜神模拟器,版本7.0.0.6,还是挺好用的。

  6. 上面直接build肯定是不成功的,毕竟Unity导出的android工程和android studio自己创建的,配置文件还是有些区别的,嫡庶还是存在嫌隙的。接下来我们开始解决错误,不多,请拿包瓜子继续嗑瓜,继续撸,继续看,我猜哥们儿的手都起茧了吧,节制啊。

排错

  1. 第一次build将出现以下错误。抓重点“ java.lang.UnsatisfiedLinkError”,无非就是少了一些库的引用而已。在app模块的build.gradle中添加红框内的配置信息。当然其他基础配置要保持一致,
    如:
    compileSdkVersion 30
    minSdkVersion 19
    targetSdkVersion 30
    versionCode 1
    versionName 1.0

2021-03-30 14:11:47.661 7154-7154/com.snoopy.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.snoopy.myapplication, PID: 7154
java.lang.Error: FATAL EXCEPTION [main]
Unity version : 2019.3.4f1
Device model : HUAWEI LIO-AN00
Device fingerprint: HUAWEI/LIO-AN00/LIO-AN00:7.1.2/LIO-AN00/700201021:user/release-keys

Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.snoopy.myapplication-2/base.apk"],nativeLibraryDirectories=[/data/app/com.snoopy.myapplication-2/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libmain.so"

在这里插入图片描述

  1. 修改build.gradle配置文件需要点击Sync,然后在进行build。等待苦逼的结果!哎呀,我尼玛又有错。这个错,我在网上翻了很多只知道怎么改,但不知什么意思。知道的可以在评论区附上,感谢各位春风亭大佬!

com.snoopy.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.snoopy.myapplication, PID: 7728
java.lang.Error: FATAL EXCEPTION [main]
Unity version : 2019.3.4f1
Device model : HUAWEI LIO-AN00
Device fingerprint: HUAWEI/LIO-AN00/LIO-AN00:7.1.2/LIO-AN00/700201021:user/release-keys

Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.snoopy.myapplication/com.unity3d.player.UnityPlayerActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x0

在这里插入图片描述

  1. 终于,终于,啊啊啊,成功了。
    在这里插入图片描述

感言

终于写完了,作为一个小白,看网上大佬们写的还是有点头疼。于是按照自己的步骤整理了一遍,有不懂的可以留言。

问题

1.为啥在strings.xml添加 game_view_content_description 这个值就能解决第二个错误?

欢迎致电!*************

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android studio4.0 内嵌 UnityActivity 的相关文章

  • 成员内部类

    heartbeat this hearbeat People this heartbeat
  • Java Stream操作--常用方法

    什么是 Stream Stream 流 是一个来自数据源的元素队列并支持聚合操作 元素是特定类型的对象 形成一个队列 Java中的Stream并不会存储元素 而是按需计算 数据源 流的来源 可以是集合 数组 I O channel 产生器g
  • 会员管理系统

    一 介绍 这个会员管理系统 目前是一个专门用于房地产的会员管理系统 也可用于其他行业 功能如下 代金券模块 代金券按金额进行定额与扣减 业主模块 平台 房地产商 为了吸引会员 业主 为业主设置楼栋以及房屋 以及自动生成业主卡号 储值卡模块
  • 使用Tomcat过程中遇到无法访问http:localhost:8080的解决方法

    我们在Tomcat网站下载Apache Tomcat Welcome 后解压在电脑上面 一 检查Tomcat配置的环境变量 1 Tomcat需与jdk搭配使用 所以首先需要jdk的环境变量是已经配置好了 才可以保证Tomcat可以进行使用
  • 工作3年的程序员出去面试,结果连JVM怎么运行都不知道!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 知识点 写好的 Java 代码 他是如何运行起来的 他运行起来以后是如何变成 JVM 进程的 JVM 进程又是如何运行我们写的代码的 总结 知识点 今天给大家分
  • Docker集群编排工具之Kubernetes(K8s)学习

    Kubernetes K8s 介绍 Kubernetes安装及使用 Kubernetes使用 如果您喜欢这篇文章 别忘了点赞和评论哦
  • Modbus RTU 协议详解

    https blog csdn net qq153471503 article details 124317894 目录 Modbus是什么 Modbus分类 Modbus RTU协议数据帧结构 功能码01 读线圈状态 功能码02 读离散量
  • 在mac系统中安装node

    在mac系统中安装node js 这里使用软件包安装方式 首先打开node js的中文网站http nodejs cn download 选择16 15 0版本 下载完成之后 点击安装 出现如下页面 点击继续 点击继续 点击同意软件许可协议
  • Error Domain=NSCocoaErrorDomain Code=3840 “JSON text did not start with array or object and option t

    问题 问题是表现在移动端客户端上 移动端调用服务端接口 返回错误如下 Error Domain NSCocoaErrorDomain Code 3840 JSON text did not start with array or objec
  • pip 批量安装和卸载package

    文章目录 1 pip批量安装package 2 pip批量卸载package 3 pip换国内源 1 pip批量安装package 将需要安装的包保存在aa txt中 cd到aa txt所在目录 运行 pip install r aa tx
  • AndroidUtil - 基于Android网络连接状态全面深度检查

    一个通用的完整网络连接状态检查工具 netState ping dns http 异步执行 使用低级api 保持独立通用 public class NetworkChecker private static final String TAG
  • mysql-proxy

    mysql proxy简介 mysql proxy是mysql官方提供的mysql中间件服务 上游可接入若干个mysql client 后端可连接若干个mysql server 它使用mysql协议 任何使用mysql client的上游无
  • 2013年8月28日星期三(8-2,裁剪Cohen_sutherland算法)

    这节就是只保留裁剪区域内的像素 这个例子用直线表示 分为4种情况 1 直线完全在裁剪区外 不用处理 2 直线完全在裁剪区之内 也无需改动 直接光栅化 3 直线的一个端点在裁剪区之外 必须进行裁剪 4 直线的两个端点都在裁剪区之外 但部分在裁
  • 两个div重叠显示

    想要将兄弟div元素进行重叠 将父元素position设置为relative 子元素position设置为absolute 使用z index设置谁显示在上层 谁显示在下层
  • TLSv1.2协议了解

    首先明确TLS的作用三个作用 1 身份认证 通过证书认证来确认对方的身份 防止中间人攻击 2 数据私密性 使用对称性密钥加密传输的数据 由于密钥只有客户端 服务端有 其他人无法窥探 3 数据完整性 使用摘要算法对报文进行计算 收到消息后校验
  • poj 3980 取模运算

    Description 编写一个C函数mod int n int m 实现取模运算 Input 输入包含多行数据 每行数据是两个整数a b 1 lt a b lt 32767 数据以EOF结束 Output 于输入的每一行输出a b Sam
  • SQLServer JDBC 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    网上有不少人遇到过使用jdbc连接sqlserver出错的情况 错误信息为 Caused by com microsoft sqlserver jdbc SQLServerException 驱动程序无法通过使用安全套接字层 SSL 加密与
  • 大数据开发教程——MapReduce原理及编程

    什么是MapReduce MapReduce是一种编程模型 用于大规模数据集 大于1TB 的并行运算 概念 Map 映射 和 Reduce 归约 是它们的主要思想 都是从函数式编程语言里借来的 还有从矢量编程语言里借来的特性 MapRedu
  • protobuf版本冲突问题解决

    1 proto caffe pb h 17 2 error error This file was generated by an older version of protoc 如果你装有anaconda 以及tensorflow 或者在

随机推荐

  • 【软件测试】—— 基础知识总结

    目录 基础篇 1 什么是软件测试 2 软件测试的目的 3 软件测试与软件开发的区别 概念篇 1 什么是需求 2 需求是软件测试的依据 3 测试用例 4 什么是BUG 5 开发模型 5个模型 1 瀑布模型 2 螺旋模型 3 4 增量模型 迭代
  • 继续谈下调用约定

    继续谈下调用约定 今天写了个DLL是用extern C 导出的 以前一直用 def文件 结果出现了以下错误 无法解析的外部符号 declspec dllimport int cdecl SetStatus int imp SetStatus
  • 原生js jquery设置输入框不可编辑,attr、prop对比

    1 设置输入框不可编辑 点击switch按钮 输入框可编辑和不可编辑切换 p E mail p
  • 期权是什么?一分钟带你玩转期权策略!

    很多人问我期权是什么 这个问题怎么回答呢 首先期权是一种交易模式 如同股票期货一样 但它又不同于股票和期货 因为它有自己的交易规则和特性 期权更多是一种工具 可以做空大盘对冲下跌风险 下文解答期权是什么 一分钟带你玩转期权策略 本文来自 期
  • 使用Python的requests库与chatGPT进行通信

    前言 在人工智能领域 自然语言处理模型如OpenAI GPT 3 5 Turbo具有广泛的应用 虽然官方提供了Python库来与这些模型进行交互 但也有一些人更喜欢使用requests库来自定义请求和处理响应 比如现在很多第三方LLM都提供
  • epoll 相对于select的优势

    epoll 相对于select的优势 分类 LinuxKnowHow 819 0 举报 收藏 这个问题至今才去查 是因为我需要用的地方真的不是很多 学习了那么多年 不知道自己究竟学了什么 觉得自己的优势就是针对特定知识点都熟悉点 一整套的软
  • 微信小程序支付踩坑notify_url(支付回调)

    最近做了微信小程序支付 支付成功之后发现notify url回调地址竟然没有访问 检查了无数次代码 下单结果里面的回调地址看了又看 都没有错啊 把回调地址复制出来到浏览器上面 外网也是可以访问的啊 然后我再分析 为什么以前公众号支付都没有出
  • Rust - 简单使用 reqwest 发起 HTTP 请求

    Rust 简单使用 reqwest 发起 HTTP 请求 一 reqwest 是什么 二 使用 reqwest 发起请求 1 在 Cargo tom 添加依赖 2 main rs 三 文章参考 一 reqwest 是什么 reqwest 是
  • Lua调用Unity完成登入注册

    今天的内容是用Lua调用Unity完成登入注册 这里只是完成了一个很简单的功能哦 注意哦 这里间的Lua文件放在同一个过程的同一个文件夹下 这里用到了一个Lua模块 a CS UnityEngine Lua调用C 需要这个前缀 One fu
  • 项目管理软件dhtmlxGantt配置教程(十):如何设置时间和范围

    1 时间单位 要设置比例的单位 请使用相应比例对象中的unit属性 可能的值是 分钟 小时 天 周 季度 月 年 gantt config scales unit month step 1 format F Y unit day step
  • vue路由history模式刷新页面出现404问题

    vue hash模式下 URL中存在 用 history 模式就能解决这个问题 但是history模式会出现刷新页面后 页面出现404 解决的办法是用nginx配置一下 在nginx的配置文件中修改 方法一 server listen 90
  • oracle中nextday,Oracle日期函数 next_day

    Oracle日期函数 next day 在Oracle是提供了next day求指定日期的下一个日期 语法 next day date weekday date is used to find the next weekday weekda
  • TCP/IP的层次结构以及各层数据封装的过程 (一)

    参考文献 TCP IP详解 卷1 协议 Tcp ip协议的四个层次 在以上的图中 FTP属于应用层的协议 TCP UDP属于运输层的协议 在TCP IP协议族中 网络层IP提供的是一种不可靠的服务 它尽可能的把分组从源节点送到目的节点 但是
  • libevent源码学习(9):事件event

    目录 在event之前需要知道的event base event结构体 创建 注册一个event 向event base中添加一个event 设置event的优先级 激活一个event 删除一个event 获取指定event的状态 纯超时e
  • AD覆铜技巧、连接类型问题。

    首先先说说连接的问题 如过孔的连接主要分两种 一直是直接连接的过孔 另一种就是梅花孔 或十字孔 那么这两种连接有什么特别的地方呢 直接连接 使过孔或者焊盘与覆铜层接触面积更大 可以将整块铜层作为器件的散热板 易于散热 适合连接一些大功率 发
  • js实现todolist总结

    首先在网页布局设置好的情况下 进行js文件的编写 要求实现增加 删除 和实时变化 其实这都可以在存在浏览器的本地存储中 下面先列出我的html页面及css文件内容
  • 众享比特中标中电投电力工程有限公司区块链项目

    近日 众享比特中标中电投电力工程有限公司的区块链系统在建设项目档案中跨企业认证应用项目 众享比特将与中电投电力工程有限公司展开密切合作 应用区块链技术助力其实现工程建设档案在项目公司 监理单位 总承包单位 施工单位等跨企业认证 破解数字化档
  • 中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 中尺度混凝土二维有限元求解是一种常见的工程
  • 天平数学,12个球称3次

    天平数学 12个球称3次 问题 天平数学问题 有12个外观完全一样的球 其中有一个球和其他球的重量不一致 如何使用一个天平称3次得出不一致的球是哪个 解答 方法一 12个球 1 2 3 4 5 6 7 8 9 10 11 12 第一次 1
  • Android studio4.0 内嵌 UnityActivity

    Android studio4 0 内嵌 UnityActivity 用最简单方法嵌入UnityActivity 首先 得导出Unity Android工程 其次 新建android studio工程 排错 感言 问题 用最简单方法嵌入Un