之前的文章,已经成功的生成了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调试模式真机调试,本文不深究了。

Cocos在android studio下的开发的更多相关文章

  1. html5 canvas合成海报所遇问题及解决方案总结

    这篇文章主要介绍了html5 canvas合成海报所遇问题及解决方案总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  4. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  5. Ionic – Splash Screen适用于iOS,但不适用于Android

    我有一个离子应用程序,其中使用CLI命令离子资源生成的启动画面和图标iOS版本与正在渲染的启动画面完美配合,但在Android版本中,只有在加载应用程序时才会显示白屏.我检查了config.xml文件,所有路径看起来都是正确的,生成的图像出现在相应的文件夹中.(我使用了splash.psd模板来生成它们.我错过了什么?这是config.xml文件供参考,我觉得我在这里做错了–解决方法在config.xml中添加以下键:它对我有用!

  6. ios – 无法启动iPhone模拟器

    /Library/Developer/CoreSimulator/Devices/530A44CB-5978-4926-9E91-E9DBD5BFB105/data/Containers/Bundle/Application/07612A5C-659D-4C04-ACD3-D211D2830E17/ProductName.app/ProductName然后,如果您在Xcode构建设置中选择标准体系结构并再次构建和运行,则会产生以下结果:dyld:lazysymbolbindingFailed:Symbol

  7. Xamarin iOS图像在Grid内部重叠

    heyo,所以在Xamarin我有一个使用并在其中包含一对,所有这些都包含在内.这在Xamarin.Android中看起来完全没问题,但是在Xamarin.iOS中,图像与标签重叠.我不确定它的区别是什么–为什么它在Xamarin.Android中看起来不错但在iOS中它的全部都不稳定?

  8. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  9. 在iOS上向后播放HTML5视频

    我试图在iPad上反向播放HTML5视频.HTML5元素包括一个名为playbackRate的属性,它允许以更快或更慢的速率或相反的方式播放视频.根据Apple’sdocumentation,iOS不支持此属性.通过每秒多次设置currentTime属性,可以反复播放,而无需使用playbackRate.这种方法适用于桌面Safari,但似乎在iOS设备上的搜索限制为每秒1次更新–在我的情况下太慢了.有没有办法在iOS设备上向后播放HTML5视频?解决方法iOS6Safari现在支持playbackRat

  10. 在编译的iOS应用程序(IPA)中加密内容

    由于IPA结构只是一个压缩文件,包含编译代码媒体内容,如图像&音频,我如何保护内容免受别人的窃取?是否有加密可以添加到IPA?

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部