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 方法中,尽管我不知道它的效果如何。