Android插件-无法引用AAR的资源

时间:2019-02-06 18:50:41

标签: android kotlin aar

编辑:

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

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

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


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

  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:字符串资源ID ...

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

在我的库代码中: Resuces $ NotFoundException:资源ID类型#0x5无效

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

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

com.my_library.name.LibraryClass()

a生成AAR错误吗?是否有采取特殊步骤以允许访问资源?我在我的应用程序中添加错了吗?

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

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

注意3:该应用程序没有任何默认活动。它是另一个应用程序的插件。我认为这与不起作用有关。我尝试了一些“样本”项目,并且在那儿工作正常。

1 个答案:

答案 0 :(得分:0)

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