如何从主应用获取图书馆资源的路径?文件系统中的资产存储在哪里?
在我的Android Studio(1.1.0)项目中,我有app和library模块,如下所示:
project
- [lib]
- src
- main
- assets // <--
- hello.txt
- java
- jni // native files
- [app]
- src
- main
- java
我无法通过调用getFilesDir().getPath() + "hello.txt"
解析"/data/data/com.package.app/files/hello.txt"
gradle
会自动合并资源库和应用资产吗?我是否需要在我的lib或app中修改build.gradle
?
我需要路径的原因是我可以从NDK
访问资产。
答案 0 :(得分:1)
假设您的代码在一个Activity或Context
的任何内容中运行,以获取资产中文件存储的输入流:
AssetManager am = getAssets(); // called from Context
String name = "hello.txt"; // relative path to a file in assets directory
InputStream is = am.open(name);
的更多信息
答案 1 :(得分:1)
如何从主应用程序获取库资源的路径?
资产没有路径。
文件系统中的资产存储在哪里?
它们不存储在文件系统中。它们是APK中的条目。
我需要路径的原因是我可以从NDK访问资产。
我不知道NDK代码有直接访问资产的能力。我的猜测是你需要以其他方式将这些数据传递给你的NDK代码。最糟糕的情况是,你可以将你从InputStream
获得的AssetManager
传递给你的JNI方法,尽管我不知道它的效果如何。