我有一个通用共享本机库,它与现有的用于各种 ARM 版本和扩展的其他共享库链接。我必须在运行时切换使用哪一个。我的 Android.mk 很简单:
include $(CLEAR_VARS)
LOCAL_MODULE := player
LOCAL_SRC_FILES := some_cpp_sources...
LOCAL_LDFLAGS := -L$(LOCAL_PATH)/../bin
LOCAL_LDLIBS := -llog -lz -lm –lplayer_engine
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
include $(BUILD_SHARED_LIBRARY)
问题是:
- 我必须
player_engine
在链接时指定本机库 ( ) - 主库所依赖的 - 我有更多版本的
player_engine
库 - 库必须具有相同的名称;否则我需要在 Android.mk 脚本中指定所有这些,这会
UnsatisfiedLinkError
在尝试根据 ARM 版本和扩展名仅加载正确的脚本时导致异常 - 构建脚本仅在 libs 文件夹中创建 armeabi 和 armeabi-v7a 子文件夹,任何其他手动创建的子文件夹在创建 apk 后将被删除。
如何解决这个问题呢?