小白求助大神:基于cocos2dx Android开发第三方动态so库

各位大神好,最近遇到的一个问题一直没有解决,望各位大神帮忙,谢谢。
问题描述:一个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文件。

遇到的问题:

  1. 需要编写进so库的文件很少,但是打包生成的so很大(3个cpp文件,so文件5.4M);
  2. 新项目集成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);

希望大神们帮忙解决问题,或是分享一下你们的经验,谢谢;

1赞