cocos2dx3.15 使用sqlite3后打包闪退

win32下是正常的,使用android studio打包闪退。操作就是根据官方文档来的,下载的sqlite3.h和.c文件。

环境:
android studio为3.0 beta4(之前用的2.3版本 但是sqlite3.c会报错无法打包,换成3.0不会报错)
安卓最小版本14
目标版本25
编译版本25
ADK为android studio自带的版本

错误信息:
09-25 17:07:05.712: D/dalvikvm(8086): Trying to load lib /data/app-lib/org.cocos2dx.SqliteTest-1/libMyGame.so 0x9501ef50
09-25 17:07:05.732: E/dalvikvm(8086): dlopen("/data/app-lib/org.cocos2dx.SqliteTest-1/libMyGame.so") failed: dlopen failed: “/data/app-lib/org.cocos2dx.SqliteTest-1/libMyGame.so” has unexpected e_machine: 40
09-25 17:07:05.732: D/AndroidRuntime(8086): Shutting down VM
09-25 17:07:05.732: W/dalvikvm(8086): threadid=1: thread exiting with uncaught exception (group=0x94d30b20)
09-25 17:07:05.742: E/AndroidRuntime(8086): FATAL EXCEPTION: main
09-25 17:07:05.742: E/AndroidRuntime(8086): Process: org.cocos2dx.SqliteTest, PID: 8086
09-25 17:07:05.742: E/AndroidRuntime(8086): java.lang.UnsatisfiedLinkError: dlopen failed: “/data/app-lib/org.cocos2dx.SqliteTest-1/libMyGame.so” has unexpected e_machine: 40
09-25 17:07:05.742: E/AndroidRuntime(8086): at java.lang.Runtime.loadLibrary(Runtime.java:364)
09-25 17:07:05.742: E/AndroidRuntime(8086): at java.lang.System.loadLibrary(System.java:526)
09-25 17:07:05.742: E/AndroidRuntime(8086): at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:248)
09-25 17:07:05.742: E/AndroidRuntime(8086): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:264)
09-25 17:07:05.742: E/AndroidRuntime(8086): at org.cocos2dx.cpp.AppActivity.onCreate(AppActivity.java:41)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.Activity.performCreate(Activity.java:5231)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2243)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.ActivityThread.access$800(ActivityThread.java:135)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.os.Handler.dispatchMessage(Handler.java:102)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.os.Looper.loop(Looper.java:136)
09-25 17:07:05.742: E/AndroidRuntime(8086): at android.app.ActivityThread.main(ActivityThread.java:5019)
09-25 17:07:05.742: E/AndroidRuntime(8086): at java.lang.reflect.Method.invokeNative(Native Method)
09-25 17:07:05.742: E/AndroidRuntime(8086): at java.lang.reflect.Method.invoke(Method.java:515)
09-25 17:07:05.742: E/AndroidRuntime(8086): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-25 17:07:05.742: E/AndroidRuntime(8086): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
09-25 17:07:05.742: E/AndroidRuntime(8086): at dalvik.system.NativeStart.main(Native Method)
09-25 17:07:05.772: W/ActivityManager(473): Force finishing activity org.cocos2dx.SqliteTest/org.cocos2dx.cpp.AppActivity
09-25 17:07:05.882: D/dalvikvm(473): GC_FOR_ALLOC freed 2165K, 33% free 13451K/20052K, paused 63ms, total 65ms
09-25 17:07:05.922: W/WindowManager(473): updateFocusedWindowLocked, focusedAppToken is null.
09-25 17:07:06.402: W/ActivityManager(473): Activity pause timeout for ActivityRecord{4ac040b0 u0 org.cocos2dx.SqliteTest/org.cocos2dx.cpp.AppActivity t65 f}
09-25 17:07:06.522: W/EGL_emulation(692): eglSurfaceAttrib not implemented
09-25 17:07:06.972: W/NetworkManagementSocketTagger(473): setKernelCountSet(10835, 0) failed with errno -13
09-25 17:07:11.011: W/PlatformStatsUtil(972): Could not retrieve Usage & Diagnostics setting. Giving up.
09-25 17:07:15.341: E/WindowManager(473): Starting window AppWindowToken{4ab56c68 token=Token{4ab8f3ec ActivityRecord{4ac040b0 u0 org.cocos2dx.SqliteTest/org.cocos2dx.cpp.AppActivity t65}}} timed out
09-25 17:07:15.581: I/qtaguid(783): Untagging socket 76 failed errno=-13
09-25 17:07:15.581: W/NetworkManagementSocketTagger(783): untagSocket(76) failed with errno -13
09-25 17:07:15.581: I/qtaguid(783): Tagging socket 76 with tag 3000040100000000(805307393) for uid 10007 failed errno=-13
09-25 17:07:15.581: I/NetworkManagementSocketTagger(783): tagSocketFd(76, 805307393, 10007) failed with errno-13
09-25 17:07:16.971: W/ActivityManager(473): Activity destroy timeout for ActivityRecord{4ac040b0 u0 org.cocos2dx.SqliteTest/org.cocos2dx.cpp.AppActivity t65 f}

为了测试问题就是直接在HelloWorldScene里面添加的这些代码,log里只输出了**************************************数据库1。如果屏蔽sqlite使用的代码,安装包不会闪退。

代码如下(数据库已拷贝到files下):

sqlite3 *pdb = NULL;
string path= FileUtils::getInstance()->getWritablePath()+"data.db";

CCLOG("**************************************数据库1");
int result = sqlite3_open(path.c_str(), &pdb);

CCLOG("**************************************数据库2");

sqlite3_close(pdb);
CCLOG("**************************************数据库3");

不知道有人遇到过相同的问题没,还是使用的姿势不对…
@minggo

手动顶一下……

应该是你用的姿势不对 我这边用得好好的 自己绑定的SQLITE JSB接口

麻烦你能提供下你用的sqlite3的文件吗

sqlite.zip (1.5 MB)
已经JSB绑定好的SQLITE 直接可以用 如果你是jsb用户的话

我是c++用户:sweat_smile:

谢谢了,我试试替换文件看看可以不…

替换后闪退还是= = 我在找找原因吧
因为打包时候一直提示 错误:Application targets deprecated ABI(s): armeabi 但是可以打包,找了下网上也没提这个问题的。
@minggo