【原生】CocosCreator apk打包发布 (APPABI、jsc、网易易盾、权限、app名称图标、包名、签名)

时间:2024-02-20 09:22:28

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类型:

  1. armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
  2. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
  3. armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
  4. x86: 平板、模拟器用得比较多。
  5. 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