【发布时间】:2019-02-06 18:50:41
【问题描述】:
编辑:
进一步探索后,问题实际上是:如何在应用程序的插件中包含 AAR 文件?
我正在编写一个插件,然后该插件被另一个应用程序加载。在这种情况下,我找不到资源。但我可以访问所有课程。 如果我把我的插件变成一个独立的应用程序。我什至可以访问资源。
如果包含在插件中并加载到另一个应用程序中,如何使 aar 工作?
所以我知道有一百万个这样的问题,但是似乎没有任何效果,所以也许我错过了一些东西。
- 我创建了一个简单的android库-文件->新建->新模块->Android库
-
我将库添加到我的项目中
flatDir{ dirs "./aar" } // project gradle implementation (name: "the_library_name", ext: "aar") // module gradle 我可以从库中访问任何 Kotlin 类
我无法从 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:应用程序没有任何默认活动。它是另一个应用程序的插件。我认为这与它不起作用的事实有关。我尝试了一些“示例”项目,它在那里运行良好。
【问题讨论】: