Cocos版本:2.4.4
一 打包apk
二 App ABi的勾选
三 加密脚本
四 网易易盾插件
五 其它问题
一 打包apk
在android studio中,选择生成带签名的apk
选择APK
选择Module处,选择你的项目。
然后如果已有签名jks文件则选择choose existing,并输入你的key store密码。 没有jks文件的话选择新建一个create new。
选择create new,新建一个key store,记住你的密码。
创建并选择key store后,选择下一步,选择v1。
v1和v2的区别查看:浅谈android签名v1和v2
二者签名所产生的结果:
v1:在v1中只对未压缩的文件内容进行了验证,所以在APK签名之后可以进行很多修改——文件可以移动,甚至可以重新压缩。即可以对签名后的文件在进行处理
v2:v2签名验证了归档中的所有字节,而不是单独的ZIP条目,如果您在构建过程中有任何定制任务,包括篡改或处理APK文件,请确保禁用它们,否则您可能会使v2签名失效,从而使您的APKs与Android 7.0和以上版本不兼容。
点击finish后,进行打包apk,可以在build栏查看打包进度。
打包成功后,会显示success;打包失败的话查看错误。
在项目中找到release目录,下面有你打包出来的apk
二 App ABI的勾选
app abi对应不同的cpu设备,勾选的越多,适应的设备越多,包体越大。
发布apk后在lib文件夹下可查看,一个有20M左右。感觉只需要勾选armeabi-v7a和x86就可以了。
app abi设备的cpu类型:
- armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
- arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
- armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
- x86: 平板、模拟器用得比较多。
- x86_64: 64位的平板。
发布后在android项目中的APP ABI配置
解压了几个线上游戏看了看lib文件夹
三 加密脚本
未加密的话解压apk包后,js的文件是这样的
勾选加密后,js文件会变成jsc后缀的文件
四 网易易盾插件
商店里有免费插件
在游戏构建发布后,打开插件
配置好后点击加密
解压经过网易易盾加固的apk,解压后的apk里图片都无法查看
json文件也无法阅读了
js文件
这个网易加固和cocos发布面板的加密可以共存。但是感觉这个插件是用来给网易易盾引流的。。。
五 其它问题
1 修改app的icon
找android项目res路径下的app图标进行替换
一共有好几个
2 修改app的名称
找到项目中的strings.xml文件,修改app_name名称
app_name在AndroidManifest.xml文件中被引用
3 修改包名
4 修改权限
安卓权限相关说明:Android中的权限
所有安卓权限API:完整安卓权限API参考文档
5 版本号设置
versionCode 用于版本控制,当已安装app是2,新下载安装的app是1时,替换会失败。
versionName 在安装时,安装界面显示给用户看的版本号
6 签名错误
在生成签名时报错
在jdk\bin目录下shift+右键,选择打开命名窗口
把keytool.exe拖动到窗口中
再输入
keytool -importkeystore -srckeystore F:\Git\Cocos_Diablo\hotUpdate\diablo.jks -destkeystore F:\Git\Cocos_Diablo\hotUpdate\diablo.jks -deststoretype pkcs12
7 transformClassesAndResourcesWithProguardForRelease
android打包时会对代码混淆,删除无用资源等,这个错误是开启了混淆但是找不到相应的类
解决方案1:
在build.gradle中将minifyEnabled和shrinkResources设置为false,则打包成功。
解决方案2:
在proguard-rules.pro文件中,将报错提示的类都设置为
-keep xxxx
-dontwarn xxxxxx