cocos lua调用java_【Tech-Lua】Cocos-2dx-Lua调用java的小白教程(三)
上周五下班前,打包成功了。我很高興,周六去踢場足球,周日去現場看了最后一分鐘掉球的恒大,度過了一個愉快的周末。然后,噩夢的周一開始了。
我再次打包,打算打包就安裝,但結果是失敗的。為何?我周五明明成功了,為何又失敗了?我又打了一次,結果就是還是失敗,原因是用了其他工程打包,而非目標的那個工程。嚓···這個明顯就是坑我自己。!@@!
又過了一整天了,其中又發生了一件很奇怪的事情。
當我選擇 android-23進行打包工程的時候,可以打包成功,可是運行失敗,報了.so文件構建錯誤的Exception。
我把這個cocos-Lua工程翻了一個遍。
開始的時候,不斷地說我們沒有定義引入Cpp中的方法。
我重新把所有的Android.mk文件全部查看了一遍。重新認識了mk文件的所有定義。
Android.mk文件屬性定義。
然后我發現,其中一個我修改的mk文件寫錯了。
就是
\frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android\Adnroid.mk
其中:
以上可以知道,把lua_HNLuaTest_auto.cpp加入到這個模塊中進行編譯。
我的錯誤在于:
這個LOCAL_STATIC_LIBRARIES可以知道,其引入了之前Park/android.mk編譯的靜態庫,其中這里的LOCAL_STATIC_LIBRARIES的名稱必須與Park/android.mk定義的模塊名稱一致,否則就連接到之前編譯的Park靜態庫.
(之前的錯誤就是這樣引起的。!@@!)
再打包apk一次,顯然,成功了。
運行,沒事~!
為了驗證可以,我就去修改AppDelegate.cpp。在他們的方法中加入一句log看看。
再打包一次apk,運行到手機中,恩·!看到log了。
這下安心了,那么就繼續往下走吧,到下一步,lua中調用這個C++類。
由于之前我們在auto/api/已經生成了lua_HNLua_auto.lua文件,根據上文提到的文章,Android平臺的引入。
1.先把這個lua文件zip壓縮。
2.把它引入到cocos code IDE工程中。如圖:
3.在lua工程中引入Test類。
4.在cocos - IDE 中運行工程。
經過一天的摧殘,你至少要懂得幾個知識點:
1.mk文件的屬性作用
2.lua打包android的apk的過程
3.cocos Lua工程的結構 ,其中它存在了相當多的引入,各個文件包引入相當亂一定要理順。所以以下總結一下 這幾天的所經歷的步驟。
1.在工程的cocos文件夾中新建c++文件,為何在這個cocos文件夾中?
2.在這個自建的C++文件夾中新加入Android.mk文件,將它編譯成一個模塊
3.在tolua工具文件夾中運行修改好了py腳本,新構建hpp文件,存放在auto文件下面。
4.修改/scripting/lua-binding/pro.android/android.mk 把c++的模塊加入編譯。
5.在工程的入口文件,注冊好C++類。
#include “../auto/lua_HNLuaTest_auto.hpp”
register_all_HNLuaTest(L);
6.壓縮生成好的lua文件,在cocosIDE工程中引入
7.在Lua工程中調用這個C++類。
其中每一個步驟都不能有點兒的出錯,因為出錯的話,錯誤難找,也難解。
最后付上我的工程例子:
CocosLuaWithCpp3
PS:工程有點大,已經壓縮了,這個你們要怪cocos-IDE了。
總結
以上是生活随笔為你收集整理的cocos lua调用java_【Tech-Lua】Cocos-2dx-Lua调用java的小白教程(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器里的DMZ主机是什么如何看哪个路由
- 下一篇: 路由器怎么设置平分网速流量多个路由器如何