繁体   English   中英

如何通过仅暴露其核心模块来导入多模块SDK项目

[英]How to import multi-module SDK project by exposing its core module only

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

  • 一个用于演示的应用模块
  • 一个名为 mainSdkModule 的模块
  • mainSdkModule 中使用的其他次要模块(比如说 moduleA 和 moduleB)

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 上公开这些内部模块?

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

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

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

你想要的是创建一个胖 jar或一个胖 aar fat jar/aar 是一个 jar/aar 文件,它还包含依赖项(而不是将它们作为外部依赖项引用)。 I don't know if your SDK needs to be a jar file or an aar file and if you don't know either then you can find out the difference eg here: Android Archive Library (aar) vs standard jar .

如果你需要一个胖子 jar那么你可以使用Shadow插件: https://imperceptiblethoughts.com/shadow/introduction

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM