2016-10-04 44 views
0

我已經用android ndk編譯了一個本機代碼。現在,而不是將該庫作爲.apk的一部分,我想將它安裝在android系統(system/lib64)中,並從系統加載我的應用程序。我把庫推到了system/lib64,並從android應用程序的lib文件夾中刪除了這些庫。但是,當我嘗試運行我得到將本機庫從android應用移到系統庫並從應用中訪問它

"java.lang.UnsatisfiedLinkError: dlopen failed: library "something.so" not found" 

以下是我的makefile

LOCAL_PATH:= $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE_TAGS := eng 
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/Include 
LOCAL_SRC_FILES := ABCProtocol/ABCProtocol.c ABCProtocol/DatalinkLayer.c ABCProtocol/PhysicalLayer.c 
LOCAL_MODULE := libABCXYZProtocol 
include $(BUILD_SHARED_LIBRARY) 

include $(CLEAR_VARS) 

LOCAL_MODULE_TAGS := eng 
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include $(LOCAL_PATH)/Include $(LOCAL_PATH)/Util $(LOCAL_PATH)/Include/Linux/XYZ $(LOCAL_PATH)/ABCProtocol 
LOCAL_SRC_FILES := Linux/XYZ/ABCXYZLinux.c Util/Util.c Util/Logger.c 
#LOCAL_CFLAGS += -Wno-error=format-security 
LOCAL_CFLAGS += -w 
LOCAL_MODULE := libABCXYZWrapper 
LOCAL_SHARED_LIBRARIES :=libABCXYZProtocol 
include $(BUILD_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE_TAGS := eng 
LOCAL_MODULE:=com_example_reader_ABCXYZappnote_NativeLibrary 
LOCAL_SRC_FILES:=com_example_reader_ABCXYZappnote_NativeLibrary.c 
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include $(LOCAL_PATH)/Include $(LOCAL_PATH)/Util $(LOCAL_PATH)/Include/Linux/XYZ 
#LOCAL_CFLAGS += -DANDROID 
LOCAL_SHARED_LIBRARIES:=libc libABCXYZWrapper libABCXYZProtocol 
include $(BUILD_SHARED_LIBRARY) 
+0

你能分享你的makefile(Android.mk)的代碼嗎?當您沒有推送依賴庫時,會出現此問題。在這種情況下鏈接失敗。 –

+0

刪除庫後也重新構建和安裝應用程序。如果沒有依賴關係,並且您仍然看到錯誤,則可能是您必須將它放入android源代碼並使用mm命令重新構建庫。 –

+0

我手動推送庫到lib64。我可以在那裏看到圖書館。我應該給System.loadLibrary(「system/lib64/smthng.so」);? – Arjun

回答

0

應用程序不能從系統庫位置訪問非公開的API:https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk。您的應用使用的庫必須與您的應用一起打包。

爲什麼你想把它們放在/ system/lib呢?

+0

我想要做到這一點與Android 6.0 SDK和我的目標設備也是6.0。我想要做到這一點因爲我在本地庫中有一些操作(訪問硬件),如果我使用APK進行打包,這將不起作用。我認爲它會工作,如果我使用系統庫/ lib – Arjun

+0

您將無法運送該應用程序雖然你不能修改你的用戶/系統分區 –

+0

我不打算髮布應用程序..它是一個參考板我們只在公司內部使用它 – Arjun

相關問題