![](/img/trans.png)
[英]Adobe Native Extensions: How do I package third party libraries (.jar) in a Android Native Extension for my Flex App?
[英]how do i put my native libraries on obj/local
因此,我已經制作了一個Android.mk文件,並且我認為它已經完成了工作。 我正在使用.so文件,但沒有它們的源文件。
這是我的Android.mk文件。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := wfdsinkemu
LOCAL_SRC_FILES := lib/armeabi-v7a/libwfdsinkemu.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := gstreamer_android
LOCAL_SRC_FILES := lib/armeabi-v7a/libgstreamer_android.so
include $(PREBUILT_SHARED_LIBRARY)
這是我的Application.mk文件。
APP_ABI := all
APP_OPTIM := release
APP_PLATFORM := android-8
APP_STL := c++_shared
APP_BUILD_SCRIPT := jni/Android.mk
APP_MODULES := libgstreamer_android libwfdsinkemu
但我認為本機庫仍未復制到obj / local文件夾中,因為該應用程序仍因UnsatisfiedLinkError崩潰而崩潰。
我已經在使用ReLinker,它仍然顯示此錯誤。
Fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libgstreamer_android.so" not found
順便說一句,我正在嘗試在運行牛軋糖的android盒上進行此工作。
將我的targetSdkVersion從26降級到22后,它可以正常工作,我認為使用AlertDialog顯示了錯誤。 錯誤是
Detected problems with app native libraries
(please consult log for detail):
libwfdsinkemu.so: invalid DT_NEEDED entry "./obj/local/armeabi-v7a/libgstreamer_android.so"
您需要告訴gradle您已經預先構建了NDK庫。
https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs
android {
...
sourceSets {
main {
jniLibs.srcDirs 'imported-lib/src/', 'more-imported-libs/src/'
}
}
}
因此,很明顯,從牛軋糖或棉花糖到最新的Android api(牛軋糖),谷歌更改了一些安全策略,使得本機庫的使用難以實現。
經過一番研究,我找到了一個答案,說我需要將targetSdkVersion
為22(最初為26)。 進行更改后,它已經起作用。 看來這是android api棉花糖及以上版本的錯誤。 我希望他們在即將發布的版本中簡化本機庫的使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.