【问题标题】:Path to android library assets in Android? [duplicate]Android中android库资产的路径? [复制]
【发布时间】:2015-03-18 20:38:23
【问题描述】:

如何从主应用获取库资源的路径?资产存储在文件系统的什么位置?

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

【问题讨论】:

    标签: android android-studio android-assets


    【解决方案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

    【讨论】:

      【解决方案2】:

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

      资产没有路径。

      资产存储在文件系统的什么位置?

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

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

      我不知道 NDK 代码具有直接访问资产的能力。我的猜测是,您需要以其他方式将该数据传输到您的 NDK 代码中。在最坏的情况下,您可以将您从AssetManager 获得的InputStream 9see Kirill 的回答)传递到您的 JNI 方法中,尽管我不知道它的效果如何。

      【讨论】:

      • 哦,我错过了问题的 NDK 部分!这是already on SO
      • @KirillK:哦,很酷,他们确实为此提供了一个选项。感谢您指出!
      • 谢谢。就我而言,库模块中的资产是否会包含在 APK 中?
      • @RyanR:是的,Android 库项目/模块中的资产应该打包到 APK 中。
      猜你喜欢
      • 2017-08-07
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多