码迷,mamicode.com
首页 > 移动开发 > 详细

cocos2d jsb 打包 Android APK

时间:2014-05-18 03:35:24      阅读:412      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   class   code   c   

1.首先要会普通的cpp 打包成Android APK


以下所说的是在cocos2d-x 2.2.2 或者 2.3 版本中。本文在Eclipse总用ndk编译cocos2d-x。

bubuko.com,布布扣

老生常谈cocos2d-x JSB不是简单的js代码,涉及到C++代码,如果是Android的话又涉及到Java代码,有点复杂,如果搞过Android下的Jni的话会熟悉些。可以看下这篇文章:《Android Jni 例子 Hello JNI,ndk》

Android为了提高开发者开发应用的速度,降低难度,选择了Java,但是也可以用c或者c++,在某个版本引入了ndk。cocos2d-x是用C++开发的,所以刚好也可以在Android中使用,但是就涉及到ndk了。其实如果有Linux环境,Android完整源码,ndk编译还是比较容易的。但是大部分cocos2d-x都用windows开发,而在windows下搞ndk就比较复杂。


2.首先是一些软件准备


JDK安装,弄好环境变量,略。

去www.android.com下载ADT

google搜索ndk下载最新ndk,设置环境变量

去www.cocos2d-x.org 下载2.3版本的cocos2d-x,解压。

google搜索python 27 ,设置环境变量  (老的cocos2d-x版本不是用python 来创建项目的,vs和xcode都有模版,刚开始比较好用,但是跨平台比较麻烦,后来改用python,只需要一次创建,跨平台比较好用)

把C:\Python27;加入到PATH中。


这里还是扯下环境变量的作用,很多人不熟悉环境变量,来看下Python这个例子,假设我是安装在C盘,打开C:\Python27, 是不是看到一个exe叫做python.exe,它可以解析python代码,但是每次都要弄完整路径来解析会很麻烦的,所以就把C:\Python27加入到PATH中,这样无论在哪个目录下都可以直接访问到phthon.exe了。


3.首先建立一个javascript的cocos2d-x项目


进入cocos2d-x/tools/project-creator 目录,win7的,可以按住Shift,右击鼠标"此处打开命令窗口",输入python create_project.py -project TestJs -package com.test.example -language javascript

基本可以。大家可以打开create_project.py查看下源码,里面就有创建的例子的。也可以把下面的代码保存到txt中,后缀改成bat,双击运行下,但本质还是执行create_project.py。


@echo off    
    set /p projectName=请输入项目名称(例如:test):    
    if "%projectName%"=="" goto inputError    
    set /p packageName=请输入项目包名(例如:org.cocos2dx.test):    
    if "%packageName%"=="" goto inputError    
    set /p projectLanguage=请输入编程语言(例如:选填cpp ,lua ,javascript):   
    if "%projectLanguage%"=="" goto inputError   
    python create_project.py -project %projectName% -package %packageName% -language %projectLanguage% 
    pause     
       
    :inputError    
    @echo 项目名称或者包标示名不能为空!    
    pause  

bubuko.com,布布扣


复制JS代码到assets目录。这里要扯下,Android开发一般把图片,xml等资源放在res目录下的,等打包成APK的时候,会打包成一个文件。Java代码中也很容易访问的。但是除了标准的资源,像js,音乐等只能放在assets下了,打包成APK也不会是一个文件,解压APK,assets里面的资源还是原来的,不会做任何处理。这些jsb开头的js好像要下载Cocos2d-JS才有。


bubuko.com,布布扣


注意到这里有一个文件叫cocos2d-jsb.js ,这个是启动js,要跟Classes/AppDelegate.cpp中的对应起来,applicationDidFinishLaunching中有个调用 ScriptingCore::getInstance()->runScript("cocos2d-jsb.js");


3.ADT中导入两个项目


bubuko.com,布布扣


在左边,右击Import

bubuko.com,布布扣

位置是下面两个地方:

cocos2d-x-2.3\cocos2dx\platform\android\java

cocos2d-x-2.3\projects\TestJs\proj.android



4.设置Build 属性


打开菜单Window->Preferences->Android->NDK 编辑NDK路径到你NDK的路径,注意我这里修改了默认的ndk名字。一般是比较长。


bubuko.com,布布扣


右击TestJs项目,选择Properties->Builders->New->Program,

        在Main标签下的Location,选择Browse File Systerm...,选择到android NDK下面的ndk-build.cmd文件 。

                                 Working Directory,选择Browse Workspace...,选择本项目。

bubuko.com,布布扣


在Environment标签下,点击new,

Name:NDK_MODULE_PATH

Value:
C:\D4\cocos2d-x-2.3;C:\D4\cocos2d-x-2.3\cocos2dx\platform\third_party\android\prebuilt(注意自己的实际目录,这里定义了两个值,一个是cocos2d引擎的根目录,另外一个是....prebuilt)

bubuko.com,布布扣

选择Ok确认,返回Builders界面,去掉CDT Builder前面的勾选,并将你自己刚刚创建的Builder移动到最上面,全部配置好之后OK确认。

连接手机,运行应该就可以了。APK会生成在Bin目录下,全部的C++文件会打包成一个libcocos2djs.so放在libs/armeabi目录下。


5.常见错误


1."bash" is not found in PATH这个错误我也不知道怎么就解决了,用Eclipse编译有时候就是会抽风,多Project->Clean几次,或者删除项目重新Import试试,再或者只能下载cygwin了,把cygwin的bin目录加入到系统环境变量中。


2.Syntax and Semantic Errors这个错误是点击了jni目录下的main.cpp产生的,可以在Eclipse中对这个错误进行关闭:右击你的项目 Properties-> C/C++ General -> Code Analysis -> Syntax and Semantic Errors去掉勾。


3. unable to process assets while packaging xxx,这个错误是因为assets的权限不够,像我在Win7的C盘中建立项目,就会有这个问题,在proj.android目录中,按shift右击打开命令窗口,给assets较高权限即可: chmod 777 -R assets/


4.还有些错误,记得右击项目属性,打开Builder删除出错的Builder.

bubuko.com,布布扣

5。还有个错误关于模拟器不支持OpenglES2.0的,可以用BlueStacks软件,它比ADT中的模拟器强大很多。当然最好还是用真机。

6.TestJs APK下载:

http://www.waitingfy.com/archives/1126/testjs

参考:

cocos2d jsb  Android


cocos2d jsb 打包 Android APK,布布扣,bubuko.com

cocos2d jsb 打包 Android APK

标签:android   style   blog   class   code   c   

原文地址:http://blog.csdn.net/fox64194167/article/details/25462969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!