簡體   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