各位大神好,最近遇到的一个问题一直没有解决,望各位大神帮忙,谢谢。
问题描述:一个Android的aar包需要与cocos2dx交互(通过jnihelper),逻辑代码(cpp文件)都写在了cocos2dx项目的Class文件夹下,现在想将逻辑代码封装成一个动态so库,供其他项目使用。
Android.mk内容如下:
LOCAL_PATH := (call my-dir)
include (CLEAR_VARS)
APP_ABI := armeabi
include $(CLEAR_VARS)
(call import-add-path,(LOCAL_PATH)/…/…/…/cocos2d)
(call import-add-path,(LOCAL_PATH)/…/…/…/cocos2d/external)
(call import-add-path,(LOCAL_PATH)/…/…/…/cocos2d/cocos)
(call import-add-path,(LOCAL_PATH)/…/…/…/cocos2d/cocos/audio/include)
LOCAL_MODULE := sample_shared
LOCAL_MODULE_FILENAME := libsample
LOCAL_SRC_FILES := …/…/…/Classes/a.cpp
…/…/…/Classes/b.cpp
…/…/…/Classes/c.cpp
LOCAL_SHARED_LIBRARIES := cocos2dx_static
include (BUILD_SHARED_LIBRARY)
(call import-module,.)
目前的做法是在该目录下直接ndk-build,生成so文件。
遇到的问题:
- 需要编写进so库的文件很少,但是打包生成的so很大(3个cpp文件,so文件5.4M);
- 新项目集成so文件后,接口调用正常,但执行cocos2d::JniHelper::getStaticMethodInfo报错,直接crash,错误信息如下:
backtrace:
pc 0012515e /lib/arm/libsample.so (_ZN7cocos2d9JniHelper8cacheEnvEP7_JavaVM+1)
pc 00125215 /lib/arm/libsample.so (_ZN7cocos2d9JniHelper6getEnvEv+24)
pc 001252b7 /lib/arm/libsample.so (ZN7cocos2d9JniHelper19getStaticMethodInfoERNS_14JniMethodInfo_EPKcS4_S4+22);
希望大神们帮忙解决问题,或是分享一下你们的经验,谢谢;