踩坑盘点
1.选择导出成Eclipse还是Android Studio?
强烈建议导出成Android Studio!!!我在跟台湾对接SDK时他们那边给的SDK是aar,而我以前学过eclipse但是没有接触过Android Studio。为了能够尽快完成任务,我选择使用我熟悉的Eclipse来工作。于是噩梦开始了…
首先我们遇到的aar需要将它解压,创建一个文件夹把它里面的jar文件放到libs文件夹下,然后做成library,再引入工程中,这个可以自行百度。
然后由于谷歌的包巨大无比几十M,导致超出了Eclipse的最大限制,无法打包APK,于是我开始删减谷歌的jar包,把谷歌地图等class文件删除(当然还删除了其他一些我以为无关紧要的class文件,最后跑项目出现报错闪退了,无奈恢复谷歌原版的Jar包吧)
然后又是引入了Eclipse不含有的布局constraint,只能把它换成LinearLayout了
再来就是台湾那边需要加入firebase,它已经很多年前不支持Eclipse了,办法也有,但是需要麻烦台湾技术也跟着一起改变json文件读取,等等问题
最后我无奈只能选择使用Android Studio重新搭工程。
Android Studio踩坑!
这东西贼坑就坑在输出的bug贼不明显,要自己去运行命令,一般能看到的bug是下面这样的:
反正错误一大堆,具体是什么,我也不知道。
最后经验总结直接看第一行,比如这个就是app:transformClassesWithMultidexlistForDebug
然后去Terminal中输入gradlew transformClassesWithMultidexlistForDebug,看堆栈,找问题
一般就是一些代码的,xml的,build.gradle的问题之类的,都会有指定的程序去运行一下看结果。
再来一个坑:安卓P不支持直接使用HTTP或者HTTPS,要在application中加入android:usesCleartextTraffic="true"否则会报eption: Cleartext HTTP traffic to XXX not permitted
导入的jar包文件太大会报一个Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchive
要在app层的build.gradle的defaultConfig中加上multiDexEnabled true
Unity申请权限延后弹出
一般情况下打开游戏后Unity会立马申请需要的权限(读写,录音等),但是因为SDK中用到的是动态申请这些权限,而如果在游戏一开始就申请则可能会在谷歌审核的时候被拒。
解决办法:
在Xml清单文件中加入
<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />
Unity版本选择
强烈建议开发版本为2017.4之后的版本,在此之前的版本都不支持打出64位的包。而谷歌目前要求必须出64位的apk才能允许在2019.8月之后提供更新apk的服务!
一些Gradlew命令
gradlew assembleRelease --出包
如果将unity作为library引入需要以下步骤
- File/New/Import Moudle
- 将unity的gradle applicationId删除
- 设置apply plugin: ‘com.android.library’
- 主工程引入implementation project(path: ‘:sdkdemo’)
- 删除unity androidManifest中的activity标签页
- 主工程androidManifest.xml appliaction中设置
<meta-data android:name="unityplayer.UnityActivity"
android:value="true" />
安卓文件路径注意事项
千万不要使用反斜杠进行文件路径操作,否则将可能出现如下情况:强烈建议使用/