关于AndroidManifest和Unity二三事

需求

unity接入sdk需要修改manifest, 用sdk里提供的manifest果然就报错啦~动手自己改又不知道原来是什么,想了一想先把自己的包给解了再修改权限。

解apk包得manifest

转载自:Android 如何查看apk安装包的AndroidManifest.xml文件

用rar打开apk会看到AndroidManifest.xml,打开是乱码,想看到原文解决方案如下。

1、 下载工具AXMLPrinter2.jar工具:下载地址
2、 将要查看的AndroidManfist.xml文件拷贝至与工具相同文件夹下
3、 在当前文件夹打开DOS窗口
4、 执行如下命令

1
java -jar AXMLPrinter2.jar AndroidManifest.xml >> AndroidManifest.txt

执行完该命令后会在该文件夹生成AndroidManifest.txt文件,该文件便是解码后的文件。

后续修改

拿到xml文件之后把AndroidManifest.xml放在项目目录的Plugins/Android下,会发现:解自己包直接拿过去,application里一些参数会不对 比如

1
2
3
4
5
6
7
8
<application
android:theme="@7F040000"
android:label="@7F030000"
android:icon="@7F020001"
android:debuggable="false"
android:banner="@7F020000"
android:isGame="true"
>

查了一下正常的manifest后修改成这样

1
2
3
4
5
6
<application
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name"
android:icon="@drawable/app_icon"
android:debuggable="false"
android:isGame="true">

还有个坑

Unity在生成manifest的时候,会根据PlayerSettings里Target API Level修改自己写的Manifest
然后sdk要求APILevel是26,可是选项里居然最高25?!
用sdk下载器下载了26、27也没出现选项……查了一下发现,官方回复,选择Automatic就好。
见此链接:https://forum.unity.com/threads/anyone-know-if-unity-supports-android-8-android-o-api-26-in-5-6-2.479756/
image
到Temp文件夹里找到最后的Manifest发现,targetSdkVersion变成27了,终于打包成功(^-^)V。