我需要在我的Android應用程序中指定一些本地庫的位置。我用硬編碼的字符串來完成這個工作:獲取Android應用程序庫目錄
public static final String DLL_DIR_STR = "/data/data/my.application.package/lib";
但是想要從Android獲取路徑。下面的帖子像this,我使用GETDIR()來查找lib目錄,改變
superCollider = new SCAudio(DLL_DIR_STR);
到
superCollider = new SCAudio(container.$context().getDir("lib", 0).getAbsolutePath());
奇怪的是,初始庫似乎加載正確
Trying to load lib /data/data/my.application.package/lib/libsndfile.so 0x42718d80
Added shared lib /data/data/my.application.package/lib/libsndfile.so 0x42718d80
No JNI_OnLoad found in /data/data/my.application.package/lib/libsndfile.so 0x42718d80, skipping init
Trying to load lib /data/data/my.application.package/lib/libscsynth.so 0x42718d80
Added shared lib /data/data/my.application.package/lib/libscsynth.so 0x42718d80
但是,當libscsynth試圖加載一些額外的代碼,它使用了錯誤的路徑:
OK, listing opendir(/data/data/my.application.package/app_lib)
「app_」來自哪裏?我以爲我必須使用getDir()錯誤,但初始文件加載正常。它可以是本地代碼中的東西嗎?謝謝你的幫助。
您可能使用** System.loadLibrary()** - 此方法知道應用程序庫的安裝位置。相反,** getDir()** _works hard_提供一個目錄,您的應用程序可以安全地用於文件操作,以便它不會與特殊目錄衝突,其中** lib **就是一個例子。 –