Cocos2d-x 3.2alpha创建的Lua项目在android平台移植不了的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocos2d-x 3.2alpha创建的Lua项目在android平台移植不了的问题相关的知识,希望对你有一定的参考价值。

RT

新手第一次创建了Cocos2d-x ,Lua项目,在vs2012可以成功编译运行,但是在android平台下运行不了额。。。

logcat里提示的错误是:

07-15 12:12:47.544: E/AndroidRuntime(922): FATAL EXCEPTION: main
07-15 12:12:47.544: E/AndroidRuntime(922): java.lang.UnsatisfiedLinkError: Couldn't load cocos2dlua: findLibrary returned null
07-15 12:12:47.544: E/AndroidRuntime(922): at java.lang.Runtime.loadLibrary(Runtime.java:365)
07-15 12:12:47.544: E/AndroidRuntime(922): at java.lang.System.loadLibrary(System.java:535)
07-15 12:12:47.544: E/AndroidRuntime(922): at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:68)
07-15 12:12:47.544: E/AndroidRuntime(922): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:87)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.Activity.performCreate(Activity.java:5008)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.ActivityThread.access$600(ActivityThread.java:130)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.os.Handler.dispatchMessage(Handler.java:99)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.os.Looper.loop(Looper.java:137)
07-15 12:12:47.544: E/AndroidRuntime(922): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-15 12:12:47.544: E/AndroidRuntime(922): at java.lang.reflect.Method.invokeNative(Native Method)
07-15 12:12:47.544: E/AndroidRuntime(922): at java.lang.reflect.Method.invoke(Method.java:511)
07-15 12:12:47.544: E/AndroidRuntime(922): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-15 12:12:47.544: E/AndroidRuntime(922): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-15 12:12:47.544: E/AndroidRuntime(922): at dalvik.system.NativeStart.main(Native Method)

看了网上好多资料说是,需要先编译,但是貌似cocos2d-x 3.0以上版本在proj.android目录下都不会产生build_native.py文件额。。。

这咋整额。。。求大神指教啊。

有没有大神也碰到过之中问题,求个解决方案啊

参考技术A Cocos 3.0创建默认的Lua项目时,其Android项目可谓是非常不完整。生成的项目模版。根本就不包含C++的编译。
你的异常实际上告诉你的是,你的项目libs目录下,根本就没有生成SO文件。
我也尝试过去修改这个默认的Android项目模版,不过修改量太大了,折腾了大半天才搞定。
我对你的建议是,不要使用Cocos来建Lua项目。就建普通的C++项目即可。普通的C++项目编译通过了,就可以在libs目录下得到SO库了。
反正对于Android的Lua项目,其需要的并不是C++的代码,而是一个SO库文件,
有了这个SO库文件,剩下的事就容易搞定了。追问

首先感谢你对的回答,可是这个工程实在VS2012下编译通过,可以成功运行的额,也没有libs目录,也没有SO库啊,那是需要把别的工程目录下的libs库拷过来么?

追答

在VS下可以编译通过。但是默认的Android Lua项目模版问题多多。你要配置和修改很多设置才能真正跑起来。
默认的Android项目当然可以编译通过并运行,但实际上它没有对项目需要到的C++代码作任何编译处理,你当然看不到libs目录,也看不到SO库了,但是这样的项目就是个空架子,能运行有什么用,关键代码代码都在SO库里。
而既然Android Lua对于C++的依赖也仅仅是SO库。
那从原本其它已经生成SO库的项目中取过来用当然也是可以的。
但其它项目的SO库也不一定符合要求,它可能不包含Lua library在里面,main.cpp的逻辑处理也可能不一样。
最好的办法就是直接使用Cocos2d 3 自带的Lua 项目例子。它是可能正常运行的。
配置cocos2d项目确实会遇到很多问题。。
所以就官方也推出了一个很方便的quick-cocos2d框架,
但目前这个只支持到cocos2d 2.3。。

追问

谢谢你啊。。可是cocos自带的lua例子目录下也没有libs文件夹,也没有so库,还是运行不了额,这个怎么解决啊。。。

追答

cocos自带的lua可以编译通过。。可以运行。。
运行成功后,自然会在android项目下生成libs目录,里面也会包含so库的。。
大概10月份左右。quick-cocos2d就会支持3.0以上的版本了,希望到时配置项目不会再这么麻烦。
PS:搞cocos2d的项目移植,就是各种折腾。

sonar自定义规则开发完并加载之后,为啥sonar只显示,扫描的时候扫描不出来

sonar规则写完了,也安装了,sonar页面上也显示这个规则启动了,但是在扫描的时候却扫描不出问题

造成这样的原因可能是多方面的,
1,你的某个插件损坏了,造成它启动延时过长,建议你先不加载几个最新安装的插件试试看。具体方法就是把插件vst plug等文件夹下的文件,比如DLL文件剪切到其他地方去,这样它启动时就不会加载了。
2,Nuendo软件本身坏了,注册表也损坏,重装Nuendo,如还不行只能先重装系统。(你不是开发人员根本修复不好)
3,重装声卡驱动。
参考技术A 我用自定义规则的一套代码编写了自己的规则,打包java-custom-rules-1.0-SNAPSHOT.jar部署到SonarQube服务中,用scanner扫描时自定义内容起作用,但用ecllipse的插件sonarlint连接该服务时,自定义内容就不起作用了。
请问你这后来怎么处理的?

以上是关于Cocos2d-x 3.2alpha创建的Lua项目在android平台移植不了的问题的主要内容,如果未能解决你的问题,请参考以下文章

1.Cocos2d-x Lua 核心概念

cocos2d-x-3.2 怎样创建新project

Cocos2d-x游戏开发之luaproject创建

Cocos2d-x lua游戏开发之安装Lua到mac系统

cocos2d-x的安装

在cocos2d-x中使用LUA