2016-08-15 39 views
1

我已經使用NDK構建了本地C用戶空間應用程序(使用NDK中的BUILD_EXECUTABLE屬性)。鏈接到Android平臺中自定義位置中的共享對象

我的應用程序由使用少量共享對象的主程序組成(使用BUILD_SHARED_LIBRARY創建的共享庫)。

我可以正常運行應用程序(我正在使用LG-G4)但是:只有將* .so文件複製到手機上的/ system/lib和/ system/lib64時纔有效。

有沒有辦法將* .so文件複製到某個自定義位置(比如/ data/my_dir),並且應用程序仍然可以在運行時鏈接到* .so's?

+0

你不需要任何特殊權限'rwx'位於'/ data/local/tmp'中的文件。如果問題仍然存在,您可以嘗試。 – Onik

回答

0

我知道答案已經晚了,但無論如何,這個答案可能對其他遇到這種問題的人有幫助。你不必從您的本機庫目錄的任何地方複製*的.so庫,只是告訴您的庫位於這樣的事情的ProcessBuilder:

//your process builder which executes 
ProcessBuilder pb = new ProcessBuilder(argvlist); 
//lbpath - path (your native dir) of shared libraries which are used by executable 
pb.environment().put("LD_LIBRARY_PATH", lbpath);