【问题标题】:Android Studio - What is the Java Resources Folder?Android Studio - 什么是 Java 资源文件夹?
【发布时间】:2017-09-01 15:13:03
【问题描述】:

我知道有两个众所周知的文件夹可以放置资源。

第一个是/assets 文件夹,文档说:

包含应按原样编译成 .apk 文件的文件。您可以像使用 URI 的典型文件系统一样导航此目录,并使用 AssetManager 将文件作为字节流读取。例如,这是放置纹理和游戏数据的好位置。

第二个是/res 文件夹,文档说:

包含应用程序资源,例如可绘制文件、布局文件和 UI 字符串。有关详细信息,请参阅应用程序资源。

现在我想知道,还有第三个选项可以创建资源文件夹"New > Folder > Java Resources Folder" 对我来说,我看起来像是 IntelliJ 中 Android 插件的一部分,因为它前面有一个小的 Android 符号 。

你知道它的用途是什么吗?我找不到任何关于它的文档。

我的第一个猜测是在您想为 JVM 测试提供资源的情况下使用它。

【问题讨论】:

  • 我也找不到这方面的任何文档...

标签: android android-studio intellij-idea android-resources


【解决方案1】:
  • 在标准 Java 世界中

    资源可以直接嵌入到“你的源代码树”中,并与 Class 的方法 getResource 一起使用(有关更精确的描述,请参阅 java 文档)。

  • 在安卓世界中

    不推荐这种做法(根本不工作,因为此类资源已从生成的 APK 中删除)。您仍然可以声明 Java 资源文件夹(请参阅 build.gradle : sourceSets { main { resources.srcDirs = ['src/main/java/yourresourcesfolder'] } } 结果在 apk 中:

  • 结论

    由于资源的文件夹树被删除,从我的角度来看,使用 java 的资源文件夹变得毫无用处(在 android 项目中)。使用 android 的资产文件夹是更好的选择(也可以避免资源的名称冲突,但这是另一个故事:D)

【讨论】:

  • 因此该选项不是 Android 插件的一部分。它只是有一个误导性图标
  • Max,我在下面添加了我的答案,其中包含一个在 Android 应用中使用的用例。
【解决方案2】:

这篇文章有点老了,但我想提供一个答案,解释 Android 上 java 资源目录的一个用例。如果这个文件夹存在于项目的选项中,那是因为可以用它来做一些事情......

输入Service Loader,这有助于将其他服务(又名库)连接到您的主应用程序中,它可以用作您的Android库的Gateway来扩展功能的功能,仅公开接口或抽象类,服务加载器提供实现,而不是您的项目可以直接访问它们。

这是example of how it's implemented。因此,总而言之,您必须创建的文件夹 (META-INF/services) 和文件才能在 Android 应用程序上使用服务加载器,需要在此 Java Resources Folder 中,否则您的提供商将无法看到任何实现。

如果您想查看它,您可以在我的示例中看到它的工作原理:https://github.com/difereto-globant/test-library-feature/tree/1.0.9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多