我需要在我的 Android 应用程序中指定一些本机库的位置。我用一个硬编码的字符串来完成这个:
public static final String DLL_DIR_STR = "/data/data/my.application.package/lib";
但想从 Android 获取路径。在这样的帖子之后,我使用 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() 错误,但初始文件加载正常。它可能是本机代码中的东西吗?谢谢你的帮助。