【问题标题】:Android plugin - Cannot reference AAR's resourcesAndroid 插件 - 无法引用 AAR 的资源
【发布时间】:2019-02-06 18:50:41
【问题描述】:

编辑:

进一步探索后,问题实际上是:如何在应用程序的插件中包含 AAR 文件?

我正在编写一个插件,然后该插件被另一个应用程序加载。在这种情况下,我找不到资源。但我可以访问所有课程。 如果我把我的插件变成一个独立的应用程序。我什至可以访问资源。

如果包含在插件中并加载到另一个应用程序中,如何使 aar 工作?


所以我知道有一百万个这样的问题,但是似乎没有任何效果,所以也许我错过了一些东西。

  1. 我创建了一个简单的android库-文件->新建->新模块->Android库
  2. 我将库添加到我的项目中

    flatDir{ dirs "./aar" } // project gradle
    implementation (name: "the_library_name", ext: "aar") // module gradle
    
  3. 我可以从库中访问任何 Kotlin 类

  4. 我无法从 aar 本身或引用 aar 的项目访问任何资源

在我的项目中:Resouces$NotFoundException: String resource ID...

context.getString(R.string.some_string)
// R -> com.my_project.test.R

在我的库代码中:Resouces$NotFoundException: Resource ID type #0x5 is not valid

inflater.inflate(R.layout.some_layout,....)
// R -> com.my_library.name.R

在这两种情况下,代码在尝试引用 AAR 的资源时都会失败。但这有效:

com.my_library.name.LibraryClass()

生成 AAR 是否错误?是否需要采取特殊步骤来允许访问资源?我是否在我的应用中包含错误?

注意:该库是用 kotlin 编写的,应用程序是 kotlin 和 Java 的组合。我正在从 kotlin 类访问资源。不确定这是否重要。

注意2:我首先在应用程序项目中启动了我的库 - 这意味着我可以在模块中看到库代码并更改代码。那也行不通。资源也有同样的问题。

注意3:应用程序没有任何默认活动。它是另一个应用程序的插件。我认为这与它不起作用的事实有关。我尝试了一些“示例”项目,它在那里运行良好。

【问题讨论】:

    标签: android kotlin aar


    【解决方案1】:

    回答这个问题,因为它似乎与 AAR 无关。看起来第三方应用程序有问题,因为这种方法似乎在其他任何地方都有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-30
      • 2019-06-04
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多