如何在android中将模块依赖转换为aar依赖



我有一个android基础项目,其中有一些可重复使用的模块,这样我就可以在任何项目中使用它们,我有4个模块依赖项,如-

  1. 模块一
  2. 模块二
  3. 模块三
  4. 模块四

我在模块中定义的位置三的抓取-

implementation project(':moduleOne')
implementation project(':moduleTwo')
implementation project(':moduleFour')

这意味着我正在使用模块三中的所有三个模块。

在我的项目等级文件中,我定义了这样的

implementation project(':moduleOne')
implementation project(':moduleTwo')
implementation project(':moduleThree')
implementation project(':moduleFour')

在我的应用程序的设置.gradle文件-

include ':app', ':moduleOne', ':moduleTwo', ':moduleThree', ':moduleFour'

所以到目前为止,我在我的应用程序中使用作为一个模块,为此我必须复制文件夹,然后粘贴到我的原始项目中。我发现这是一项乏味的工作,所以我决定创建一个aar文件,并在我的项目中直接使用它们。

但当我把所有四个aar都放在我的项目B中时,我无法访问它的资源文件,这引发了一些异常——Android资源链接失败。喷气式。我试过

  • 清理项目
  • 使缓存无效并重新启动
  • 重建项目
  • 删除生成文件夹

所以我的问题是除了提供所有模块之外,我只想提供aar文件,然后任何项目都可以将它们作为依赖项添加。我已经生成了aar文件,但面临着运行项目的问题-

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:TagsEditText="http://schemas.android.com/apk/res-auto"
android:id="@+id/sv_scan_description"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.moduleThree.ui.TagsEditText
android:id="@+id/tagsEditText"
style="@style/TextEditTheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
TagsEditText:tagsBackground="@drawable/send_to_email_bg"
---/>
</ScrollView>

AAPT:错误:找不到属性tagsBackground(又称com.example.myproject:tagsBack(。

注意,生成的Aar文件是moduleOne-debug.ar和moduleOne-release.Aar,我将版本一重命名为moduleOne.Aar并在项目中使用。可以吗?

因此,真正的问题是以这种方式创建的aar和jar不包含它们所依赖的库。如果以这种方式添加库,则需要将其所有依赖项添加到使用它的项目中

在我的例子中,它是实现"com.github.mabbas007:TagsEditText:1.0.5",我已经将它添加到应用程序-gradle文件中,在同步后,它运行良好。

如果项目包含很多这样的依赖项,则应该添加所有这些依赖项。但你仍然会遇到这样的问题:;明显合并失败";以及其他问题。

或者,您可以尝试将您的lib部署到maven或jitpack,但您需要正确设置,以确保pom文件将与所有需要的依赖项一起生成,从而能够轻松使用此库。

最新更新