如何在Android中将模块依赖关系转换为AAR依赖关系?

时间:2020-07-20 06:14:50

标签: android gradle aar android-module

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

  1. moduleOne
  2. moduleTwo
  3. moduleThree
  4. moduleFour

我在moduleThree的gragle中定义的位置-

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

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

在我的项目gradle文件中,我已定义如下-

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

在我应用程序的setting.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(aka com.example.myproject:tagsBackground)。

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

1 个答案:

答案 0 :(得分:0)

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

在我的示例中,它是实现'com.github.mabbas007:TagsEditText:1.0.5',我已将其添加到应用程序-gradle文件中,并且在同步后可以正常工作。

如果项目包含很多此类依赖项,则应添加所有这些依赖项。但是您仍然可以遇到“清单合并失败”之类的问题。

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