cocos2d jsb 打包 Android APK

來源:互聯網
上載者:User

標籤:android   style   blog   class   code   c   

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

以下所說的是在cocos2d-x 2.2.2 或者 2.3 版本中。本文在Eclipse總用ndk編譯cocos2d-x。

老生常談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  


複製JS代碼到assets目錄。這裡要扯下,Android開發一般把圖片,xml等資源放在res目錄下的,等打包成APK的時候,會打包成一個檔案。Java代碼中也很容易訪問的。但是除了標準的資源,像js,音樂等只能放在assets下了,打包成APK也不會是一個檔案,解壓APK,assets裡面的資源還是原來的,不會做任何處理。這些jsb開頭的js好像要下載Cocos2d-JS才有。



注意到這裡有一個檔案叫cocos2d-jsb.js ,這個是啟動js,要跟Classes/AppDelegate.cpp中的對應起來,applicationDidFinishLaunching中有個調用 ScriptingCore::getInstance()->runScript("cocos2d-jsb.js");


3.ADT中匯入兩個項目



在左邊,右擊Import

位置是下面兩個地方:

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名字。一般是比較長。



右擊TestJs項目,選擇Properties->Builders->New->Program,

        在Main標籤下的Location,選擇Browse File Systerm...,選擇到android NDK下面的ndk-build.cmd檔案 。

                                 Working Directory,選擇Browse Workspace...,選擇本項目。


在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)

選擇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.

5。還有個錯誤關於模擬器不支援OpenglES2.0的,可以用BlueStacks軟體,它比ADT中的模擬器強大很多。當然最好還是用真機。

6.TestJs APK下載:

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

參考:

cocos2d jsb  Android

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.