之前的文章,已经成功的生成了cocos2dx的安卓项目,但是那个版本是基于proj.android项目,是方便用eclipse进入安卓开发的。但是谷歌官方已经表明不在对ADT提供支持,因此我决定重开一篇文章专门描述android studio环境 下的cocos2dx项目开发。
在使用android studio开发之前,请设置好android studio环境可以正常使用。下文所有步骤基于android studio及gradle项目工具已经正常使用,关于as优化请参见www.cnblogs.com/smyhvae/p/4390905.html这篇博文。
在正式编译前,需要了解到cocos compile -p android --ap-??这条命令是debug版本的,发行release版本要加上 -m release。而如果使用android studio平台的项目,则加上--android-studio(三个横杠不可少)。所以完整的基于proj.android-studio项目发行版本的命令语句是:
cocos compile -p android --android-studio -m release --ap-??
proj.android-studio\builde.gradle 中的classpath 'com.android.tools.build:gradle:??' 我下载的版本默认是1.3,比较老。因为这个gradle文件使用jcenter()方法更新,所以请在https://jcenter.bintray.com/com/android/tools/build/gradle/ 下选择最新的版本。注意这个只是android-studio使用gradle插件的版本,所以不是gradle应用程序版本,版本不一样务必要明白。
proj.android-studio\gradle\wrapper\gradle-wrapper.properties 中的distributionUrl请检查C:\User\用户名\.gradle\wrapper\dist\下gradle工具的版本一致,如果没有可以按照文件默认地址下载一个放过去(不需要解压)。cocos编译将使用这个gradle工具来管理依赖和编译。
proj.android-studio\app\build.gradle 中的compileSdkVersion,targetSdkVersion值与android-sdk-windows\platforms下的android sdk版本一致(建议开发版本用较新,因为安卓新版本可以兼容老的版本。当然新版本的特性,老版本的手机就用不了)。buildToolsVersion版本与android-sdk-windows\build-tools 下的版本一致,cocos编译将使用sdk包中的build-tool来进行linux-arm编译cpp文件。
proj.android-studio\app\AndroidManifest.xml 如果你的应用程序是竖屏,可以更改android:screenOrientation="landscape"的属性值改为portrait(始终竖屏)。
proj.android-studio\app\project.properties 检查这个文件的android-sdk 版本是否一致。
以上修改后编译,基本上不会有大的问题,直到要求输入keystore文件。
因为是发行版本,安卓应用程序引入“签名”机制,防止非官方开发程序“破解”无认证。debug版本cocos自动引入了一个名为android-debug.keystone以用测试。但正式发行版本,我们需要自己提供一个keystore密钥文件。
新建cmd窗口,输入 keytool -genkey -alias [签名文件别名] -keyalg [密钥类型] -validity [密钥有效时间] -keystore [签名文件名]
比如如下示例:
keytool -genkey -alias android -keyalg JSK -validity
20000
-keystore android.keystore
|
之后依次输入姓名、组织单位名称、组织名称、城市名、省份名、中国区号(86)、确认(Y)
之后要求输入密钥密码并重复。注意,之前的密钥库密码是公钥,现在输入的是私钥,这是因为密钥类型为JSK,认证各自需要一个钥匙。这个密钥密码也要记下,后面有用。
成功的生成android.keystore后,就可以记录下路径(选中文件,shift加右键,然后复制为路径),填入之前的编译cmd窗口中回车。
之后提示输入签名文件别名,将之前创建时的-alias后别名写入回车。
然后是提示输入别名密码,将之前的密钥密码写入回车。
...FAILURE: Build Failed with an exception. ...
...android.keystore": Keystore was tampered with,or password was incorrect ...
这是因为Android规定自定义签名文件必须要跟默认的签名文件的名字一样才算正确,请检查输入然后重新执行。
上述工作完成后,最终会成功编译。虽然仍然无法运行,但这是因为Intel架构与arm架构核心不同,不能通用。将生成的apk文件拷贝到手机安装,成功运行。实际开发建议打开usb调试模式真机调试,本文不深究了。