Android 中 android 图书馆资产的路径?
Path to android library assets in Android?
如何从主应用程序获取库资源的路径?资产存储在文件系统中的什么位置?
在我的 Android Studio (1.1.0) 项目中,我有这样的应用程序和库模块:
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
会自动合并库和应用资产吗?我需要修改我的库或应用程序中的 build.gradle
吗?
我需要路径的原因是我可以从 NDK
.
访问资产
假设您的代码在 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);
阅读更多关于AssetManager
更多关于 doing the same in NDK
How can I obtain the path to library assets from the main app?
没有资产路径。
Where in the filesystem are assets stored?
它们没有存储在文件系统中。它们是 APK 中的条目。
The reason I need the path is so that I can access the assets from the NDK.
我不知道 NDK 代码可以直接访问资源。我的猜测是您需要以其他方式将该数据传输到您的 NDK 代码中。最坏的情况是,您可以将从 AssetManager
9see Kirill 的回答中获得的 InputStream
传递到您的 JNI 方法中,尽管我不知道它的效果如何。
如何从主应用程序获取库资源的路径?资产存储在文件系统中的什么位置?
在我的 Android Studio (1.1.0) 项目中,我有这样的应用程序和库模块:
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
会自动合并库和应用资产吗?我需要修改我的库或应用程序中的 build.gradle
吗?
我需要路径的原因是我可以从 NDK
.
假设您的代码在 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);
阅读更多关于AssetManager 更多关于 doing the same in NDK
How can I obtain the path to library assets from the main app?
没有资产路径。
Where in the filesystem are assets stored?
它们没有存储在文件系统中。它们是 APK 中的条目。
The reason I need the path is so that I can access the assets from the NDK.
我不知道 NDK 代码可以直接访问资源。我的猜测是您需要以其他方式将该数据传输到您的 NDK 代码中。最坏的情况是,您可以将从 AssetManager
9see Kirill 的回答中获得的 InputStream
传递到您的 JNI 方法中,尽管我不知道它的效果如何。