Android中Android库资源的路径?

时间:2015-03-18 20:38:23

标签: android android-studio android-assets

如何从主应用获取图书馆资源的路径?文件系统中的资产存储在哪里?

在我的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访问资产。

2 个答案:

答案 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);

详细了解AssetManager 有关doing the same in NDK

的更多信息

答案 1 :(得分:1)

  

如何从主应用程序获取库资源的路径?

资产没有路径。

  

文件系统中的资产存储在哪里?

它们不存储在文件系统中。它们是APK中的条目。

  

我需要路径的原因是我可以从NDK访问资产。

我不知道NDK代码有直接访问资产的能力。我的猜测是你需要以其他方式将这些数据传递给你的NDK代码。最糟糕的情况是,你可以将你从InputStream获得的AssetManager传递给你的JNI方法,尽管我不知道它的效果如何。