CocosCreator游戏开发打包安卓apk

我自己测试通过的打包所使用的开发工具和版本

开发工具版本 测试版本 下载 前往官网
CocosCreator 2.0~2.2 直接下载2.2Mac版 官网选择其它版本
android-sdk android-21 直接下载android sdk21-5.0 选择其他SDK版本
android-ndk android-ndk-r16-beta1 直接下载android ndk-r16-beta1 选择其他NDK版本

一、链接SDK和NDK

  • 选择偏好设置将下载好的DNKSDK指定路径,然后保存。

二、配置打包参数

  • 配置
    1、游戏名称: 你的项目游戏名
    2、发布平台: 安卓
    3、发布路径: 默认为./build
    4、初始化场景: 这儿是选择你APP运行时的第一屏出现的页面场景,如果选错会直接加载到其他页面。
    5、参与构建的场景: 只是要参与游戏的页面有关的场景都要选上。
    6、模版:default 即可
    7、包名:你自己的包名
    8、选择Target API Level,我之前选择的android-21,你选择你的就可以下载的SDK对应版本就可以了。
    9、APP ABI: armeabi-v7a

    armeabi-v7a: ARM v7 目前主流版本,第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它。
    arm64-v8a: 64位支持,第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
    x86 架构的手机、平板、模拟器用。

    10、密钥库: 发布正式版,请自行生成密钥。
    11、设备方向: 按照项目需求来。

  • 然后构建,等构建完成,选择编译等待编译完成,编译完成过后一般在路径下的 jsb-default\publish\android下。

    如果前面编译失败的情况下,直接使用Android Studio编译打包

    使用Android Studio打开build->jsb-default->frameworks->runtime-src->proj.android-studio

  • 如果遇到以下报错问题:

    • 出现一:Failed to find Platform SDK with path: platforms;android–1
      解决: 直接在gradle.properties文件中PROP_COMPILE_SDK_VERSIONPROP_TARGET_SDK_VERSION修改成已经下载好的SDK版本,我的这儿是 21,然后在Try Again

      1
      2
      3
      4
      5
      6
      Android SDK version that will be used as the compile project
      PROP_COMPILE_SDK_VERSION=-1 改成你的SDK版本
      Android SDK version that will be used as the earliest version of android this application can run on
      PROP_MIN_SDK_VERSION=16
      Android SDK version that will be used as the latest version of android this application has been tested on
      PROP_TARGET_SDK_VERSION=-1 改成你的SDK版本
    • 出现二: Android resource linking failed Output: ~/build/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml:29: error: attribute android:usesCleartextTraffic not found.error: failed processing manifest.
      解决: 直接在你的项目名称下面的manifests文件夹下AndroidManifest.xml,去掉 android:usesCleartextTraffic="true"

      android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。当属性设置为“ false”时,平台组件(如HTTP和FTP堆栈,DownloadManager和MediaPlayer)将拒绝应用程序使用明文流量的请求。避免明文通信的主要原因是缺乏机密性,真实性和防篡改保护;网络攻击者可以窃听所传输的数据,并且还可以对其进行修改而不会被检测到。

  • 我的SDK版本是Android21,所以去掉.
    这儿如果编译过慢可以gradle配置一下放在本地,就不会去网络加载了。前往下载各个gradle版本
    然后设置gradle-wrapper.properties distributionUrl=https://services.gradle.org/distributions/gradle-4.10.3-all.zip

  • 至于配置签名这儿就不多说了.
    给一个传送门Android如何生成签名文件

要耐心等待一会儿,就编译成功了

1
2
3
4
Gradle build finished in 8 s 291 ms 
Build APK(s)
APK(s) generated successfully for 1 module
Module 'xxx': locate or analyze the APK.