实际操作中遇到的问题:
1.导出aar,在Jenkins的打包WordFlow中,app安装后闪退,并且发现打出的包权限不是新的,所以新的tools-debug.aar在打包中是报error 的
2.本地打包测试,没有app 的签名文件,安装中,系统会认为是另一个包
解决新的aar打包不成功的测试 方法:
1.用dev_sdk导出Gradle源项目,主AndroidMainfest.xml,清空各种字段,其他字段和权限由放入lib的包提供;
2.本地放入签名SignKey(此目的是模拟完整的"包内下载",保持签名一致,测试新包覆盖旧包)
3.本地测试====>(true)如果成功再对比====>Jenkins包
查看、对比签名文件的方法
android签名文件的查看 (keytool 命令行)==>cd 到签名路径
打开cmd
C:\Windows\system32>D:
D:\>cd D:\android_root
D:\android_root>keytool -list -keystore 签名文件名 -v
了解到项目中没有自定义签名,使用的是Unity编辑器默认的签名==>默认指向了本机的C:\Users\<用户名>\.android 路径(由JDK生成)
Jenkins打包上,用的签名文件如下图:
Android的相关配置
清单AndroidManifest.xml
在Android目录下面不放入AndroidManifest.xml文件,unity会自动合并AndroidManifest.xml,Unity安装目录下有一份AndroidManifest.xml。
在Android目录下面放入AndroidManifest.xml文件,unity会合并其他第三方jar包到该AndroidManifest.xml下。
备注:
1、版本号不能高于unity默认AndroidManifest.xml的版本号;
2、APK文件的版本号一致,不写的话按照默认AndroidManifest.xml的版本号;
3、合并的时候会按照各自的标签自动合并。
如何验证合并后的AndroidManifest.xml
在as Build完apk,查看AndroidManifest,如图
mainTemplate.gradle模板的重要性
Unity项目树中 plugins 下的aar(或者jar),源项目中的相关Gradle设置是不会被Unity自动合并在Android主工程的Gradle下的.但是AndroidManifest.xml清单文件会自动合并.所以引出了一个关键的设置,如果没有这一步操作,讲导致app闪退.
勾选之后会在相关的路径生产模板,在里面修改相应的依赖就可以了(如图所示)
=======================================================================
------------------------------
=======================================================================
- 如果AS打aar包的话到Unity最终生成apk的话,以Unity内置的Gradle版本为主。AS中的gradle版本不能高于Unity中的gradle版本
- 如果是Unity导出AS工程到AS中生成apk的话,以AS的版本为主。Unity中的gradle版本不能高于AS中的gradle版本
项目实际情况是AS打成aar包到Unity,最终生成apk,简称 "AS2UnityPack"
查看Unity内置的gradle版本:'com.android.tools.build:gradle:3.4.0'