一.AndroidStudio打包
1.通过Unity导出Android Studio能够打开的工程
步骤
1.设置导出基本信息:公司名、游戏名、图标、包名等关键信息
2.在File——>Build Settings中,勾选 Export Project 选项
3.点击Export 导出按钮
2.在Android Studio中打开Unity导出的工程
步骤
1.打开Android Studio
2.新选择 打开工程
3.选择 之前导出的对应文件夹
4.弹出提示时,使用Android Studio中的 Android SDK,可以避免打包失败
5.等待工程加载结束
6.更新Gradle版本,保证之后打包成功
3.使用Android Studio生成应用程序apk
步骤
1.在 工具栏——>Build——>Build Bundle...——>Build APK
构建一次工程,保证构建成功,根据报错解决问题
常见问题:
1.The option 'android.enableR8' is deprecated 由于新版本Gradle默认使用R8混淆
所以不需要这个选项设置了
在Project选项中 找到 gradle.properties 删除 android.enableR8
2.SDK Tools 版本不匹配
更新SDK使用的路径,使用Android Studio自己的路径,或者更新SDK
2.在 工具栏——>Build——>Build Bundle...——>Generate Signed Bundle
发布APK,可以设置密钥库相关内容后进行打包即可
3.测试生成的apk文件
4.总结
如果不需要将Unity功能嵌入到Android项目中进行二次开发
我们一般不使用该种打包方式
直接在Unity中进行打包更加的方便
我们只需要保证能够正常通过Android Studio打包Unity导出的工程即可
二.Android开发原理
1.Android应用程序的基本构成
1.Android SDK
提供了用于开发Android应用程序的各种API和工具
2.编程语言
使用Java或者Kotlin语言进行开发,他们提供了丰富的库和API
3.XML配置文件
Android应用程序使用XML来定义UI布局、样式和资源信息等
4.应用程序组件
Android应用程序有四种组件组成:
4-1:Activity(活动)
主要用于实现用户界面,代表一个屏幕或窗口,包含了各种UI组件,按钮,文本,输入框等等
4-2:Service(服务)
是一种可以在后台执行长时间运行操作的组件,没有用户界面,一般用于处理和交互无关的逻辑
比如:上传、下载、音乐播放等
4-3:Broadcast Receiver(广播接收器)
主要用于接受系统或者其他应用程序发出的广播消息
消息可以来自系统事件(比如网络连接变化、设备启动等),也可以来自其它应用程序
4-4:Content Provider(内容提供程序)
用于管理应用程序数据,可以让其它应用程序或系统访问本应用中的数据,也可以让本应用访问其它应用或系统的数据
比如用于存储应用程序数据,图片、音频、视频等
等等
在开发Android应用程序时,其实主要就是在编写基于这四种组件的逻辑
日常开发时,更多的就是在利用Android SDK中的API 开发Activity活动组件(类似游戏中UI界面逻辑开发)
如果有其他后台或者拓展功能,才会使用其它3种组件
2.AndroidManifest.xml文件的作用
它是Android应用程序的应用清单文件
每个应用程序都必须包含一个,并且文件名必须是AndroidManifest.xml
该文件中包含了应用程序的配置信息,Android系统会根据该配置来运行应用程序
该文件中包含的重要信息有:
1.应用程序包含的四大组件的内容(Activity,Service,Broadcast Receiver,Content Provider)
2.应用程序的权限(存储权限、互联网访问权限等等)
3.应用程序元数据(程序名称、版本号、图标、包名等等)
4.应用程序启动信息(默认启动哪一个Activity)
常用标签作用:
manifest标签:主要包含包名、版本号等等
uses-permission标签:应用程序权限
application标签:应用程序各组件包含在其中,还可以配置一些图标、文本、样式等等信息
activity标签:Activity组件的具体信息
meta-data标签:为Activity提供元数据,可以通过API获取该数据
intent-filter标签:为组件声明意图(intent),其中还包含action(意图类型)和category(意图类别)两个子标签等等
3.了解这些对于我们的意义
了解了Android开发的这些基本原理信息后
之后在学习相互内嵌式,我们就能明白我们在做什么
Unity程序在打包到Android平台后,其实就是作为一个Activity存在的
之后我们在和Android相互嵌入式,我们只需要把Unity作为一个Activity单位来处理即可
三.Unity中嵌入android内容
1.Unity中嵌入Android内容指什么
在Android开发中Activity(活动)就是我们看到的一个界面(屏幕)
那么所谓的Unity中嵌入Android内容就是通过Unity打开Android中制作好的Activity
让Unity可以和Android中制作的功能进行交互
2.Activity创建
在Android项目中新建一个Activity并生成aar包
1.打开我们之前学习Unity和Android交互中建立的Android工程
2.在com.tarkr.mytestgame上点击右键,新建一个空的Activity
3.检查AnadroidManifest.xml中是否多出了对应的Activity配置
4.在MainActivity中添加函数,用于打开新建的Activity
5.生成aar包
3.Unity中进行交互处理
将aar包导入Unity后进行相关设置后导出包
1.按照之前讲解的知识点,删除aar包中需要删除的内容
2.书写对应交互逻辑,用于测试打开Android中的Activity
3.在Unity中导出包,用Android Studio打开
注意:如果要实现内嵌Android Activity,我们需要在Unity中导出安卓工程包后使用Android Studio进行打包
主要原因是,Unity中无法下载关联的相关包,会导致打包出去的内容报错
4.使用Android Studio打包
使用AndroidStudio打开我们通过Unity生成的Android包
利用我们之前学习的Android Studio打包的相关知识,进行构建,打包
根据报错,来针对性的进行修改和配置
可能出现的报错:
1.打包出去后,运行后闪退,找不到对应类。
解决方案:引用缺失的包,重新打包
2.安装后出现两个图标。
解决方案:修改AnadroidManifest.xml配置文件,移除LAUNCHER相关配置
3.界面xml报错。
解决方案:需要修改构建配置文件 加一个对应的引用 然后还需要在属性配置当中允许使用 Androidx
4.如果出现了Appcompat报错。解决方案:
3-1.修改配置文件 加一个android:theme = "@style/Theme.AppCompat.Dialog"
3-2.让我们新建的Activity直接继承Activity
等等(根据具体报错内容,查询资料进行解决)
5.总结
Unity中嵌入Android内容的关键点就是
最终打包时,我们需要在Unity中打包出安卓工程包后
再使用Android Studio进行打包
根据各种报错信息来一步步的解决问题
缺少什么就添加什么,配置有问题就修改配置
四.Android嵌入unity内容
1.Android中嵌入Unity内容指什么
在进行Android开发时,可能会有需求显示Unity开发的3D内容
一开始我们启动的是Android应用程序中的Activity
通过Activity我们想要打开Unity开发的内容进行展示
这就是Android中嵌入Unity内容的意思
注意:Android中嵌入Unity存在限制问题,退出Unity所在的Activity会退出整个App
所以如果存在Android和Unity混合开发的情况,建议采用上节课的Unity中嵌入Android的方式
2.新建Unity测试项目
1.在该项目中添加一些测试内容,比如方块旋转
2.将该项目发布为Android工程(不用设置包名等)
3.新建Android测试项目
1.新建一个Android工程
2.将Unity导出的android项目内容中的 unityLibrary 文件夹拷贝到Android工程中
3.将Unity导出的android项目内容中的 launcher 文件夹中的res中的内容拷贝到unityLibrary文件夹中合并
4.修改安卓工程中的 settings.gradle 文件,在最后添加 include ‘:unityLibrary’ 并 点击右上角同步
5.修改安卓工程中的 gradle.properties 文件,在最后添加 unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist 并再次同步
6.修改安卓工程中 app 文件夹中的 build.gradle 文件,在依赖项中 添加 implementation project(':unityLibrary')
7.在主Activity中添加一个用于跳转的按钮,并为该按钮添加监听事件,用于打开Unity的Activity
8.修改两个 AndroidManifest.xml 文件,让主Activity的作为主Activity,删除Unity相关Activity的设置
4.打包测试
设置密钥,进行打包
用模拟器进行测试
5.总结
当我们要进行Android和Unity混合开发时
建议大家采用上节课的Unity中嵌入Android内容
主要原因是,Android中嵌入Unity内容限制较大,当我们切换到Unity的Activity后
如果想要关闭当前Unity Activity返回之前的,会让整个App退出,不能达到我们想要的需求