如何通过只公开其核心模块来导入多模块SDK项目



我正在开发一个项目,该项目应该作为Android sdk运行,该项目包括:

  • 用于演示的应用程序模块
  • 一个名为mainSdkModule的模块
  • mainSdkModule中使用的其他次要模块(比如模块A和模块B(

mainSdkModule以这种方式导入moduleAmoduleB

implementation project(':moduleA')
implementation project(':moduleB')

我将整个项目作为SDK发布,我想在另一个应用程序项目中使用。为了测试这个SDK的集成,我暂时将它发布到我的本地maven文件夹中。发生的情况是,当我将sdk导入应用程序项目时,构建失败,并出现以下错误:

Could not find sdk-main-package:moduleA:unspecified.
Required by:
project :mainSdkModule > sdk-main-package:core:1.0.0

我可以通过将每个模块发布为独立库来避免这个错误,但我需要在不公开它们的情况下将它们保留在内部。

应用程序项目要求一个依赖项,而除了sdk项目之外,其他项目都不应该看到这个依赖项,这正常吗?如何在核心中包含moduleAmoduleB,并为那些导入SDK的人授予对它们的访问权限,而不在maven上公开这些内部模块?

模块A和B被声明为外部依赖项,并将在pom.xml文件中引用。类似这样的东西:

<dependency>
<groupId>sdk-main-package</groupId>
<artifactId>moduleA</artifactId>
<version>unspecified</version>
<scope>compile</scope>
</dependency>

您想要的是创建一个胖罐子脂肪ar。fat-jar/aar是一个jar/aar文件,它还包括依赖项(而不是将它们作为外部依赖项引用(。我不知道你的SDK需要是一个jar文件还是一个aar文件,如果你不知道两者,那么你可以在这里找到区别,例如:Android档案库(aar(与标准jar。

如果您需要胖罐子,那么您可以使用Shadow插件:https://imperceptiblethoughts.com/shadow/introduction.

如果您需要脂肪aar,则可以使用以下方法:https://medium.com/android-news/android-fat-aar-from-gradle-892038facc87.还有其他解决方案,但我还没有亲自测试过,所以不知道哪一个真正有效。如果你在fat aar上搜索,你会得到很多点击,我希望其中一个能解决你的问题。

在Android Studio中
这样做:
1-文件->项目结构
2从左侧菜单中选择依赖项
3选择您在屏幕中上角看到的+和-应用程序,单击+
4-选择模块依赖项并勾选您的mainSdkModule并将其添加到您的应用程序模块
5-选择mainSdkModule并单击+并勾选ModuleA和ModuleB
6-应用并构建您的项目

最新更新