解決Android使用第三方庫.so自動刪除問題,android.so
1、在jni目錄下新目錄prebuilt,在此目錄下新檔案Androidusc.mk(名字隨便取),將第三方庫.so複製到此目錄
2、開啟Androidusc.mk新增內容,例如第三方庫是libScreenPop.so:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := ScreenPopLOCAL_SRC_FILES := libScreenPop.soinclude $(PREBUILT_SHARED_LIBRARY)
3、修改jni目錄下的Android.mk檔案,加入一條語句:
include $(LOCAL_PATH)/prebuilt/Androidusc.mk
Clean工程,完成。
Android找不到第三方so庫
你在linux下寫一個X86處理器的庫,要在java裡用,而且在arm處理器下。
是這意思嗎?
Android怎調用第三方SO動態連結程式庫
已瞭解解決方案:1.將SO檔案直接放到libs/armeabi下,然後代碼中System.loadLibrary("xxx");再publicnativestaticintxxx_xxx_xxx();接下來就可以直接調用xxx_xxx_xxx()方法;2.第二種方案,建立自己的SO檔案,在自己的SO檔案裡調用第三方SO,再在程式中調用自己的SO,這種比較複雜,需要建java類檔案,產生.h檔案,編寫C源檔案include之前產生的.h檔案並實現相應方法,最後用androidNDK開發包中的ndk-build指令碼產生對應的.so共用庫;求解:網上說的第二種方案,是自己引用so庫,最後聲稱JAR------解決方案--------------------------------------------------------首先要看這個SO是不是JNI規範的SO,比如有沒有返回JNI不直接支援的類型。也就是說這個SO是不是可以直接當作JNI來調用。如果答案是否定的,你只能選第二個方案。如果答案是肯定的,還要看你是不是希望這個SO的庫直接暴露給JAVA層,如果答案是否定的,你只能選第二個方案,比如你本身也是一個庫的提供者。一般如果你只有SO,就說明這個是別人提供給你的,你可以要求對方給你提供配套的JAVA調用檔案。1、這個要看這個SO是不是符合JNI調用的規範。還要看你自己的意願。2、因為第二種方法最靈活,各種情況都可以實現。3、可以------解決方案--------------------------------------------------------看能不能直接從JAVA調用的最簡單的方法就是看SO裡的函數名是不是Java_XXX_XXX_XXX格式的是就可以,你可以自己寫一個配套的JAVA檔案,注意一下SO函數名和JAVA函數名的轉換規則,或者向SO提供方索要;不是的話就選第二種方案吧。