我正在開發一個應該作為 Android sdk 作業的專案,該專案包括:
- 用于演示的應用程式模塊
- 一個名為 mainSdkModule 的模塊
- mainSdkModule 中使用的其他次要模塊(比如 moduleA 和 moduleB)
在mainSdkModule進口moduleA和moduleB這種方式:
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 之外,其他專案甚至都不應該看到這個依賴項,這是否正常?我如何在核心中包含moduleA并moduleB在不公開這些內部模塊的情況下為匯入 SDK 的人授予對它們的訪問權限?
uj5u.com熱心網友回復:
在 Android Studio 中
執行此操作:
1-檔案 -> 專案結構
2-從左側選單中選擇依賴項
3-選擇您看到的應用程式 和 - 在螢屏頂部中間,單擊
4-選擇模塊依賴項并勾選您的 mainSdkModule 并添加它到您的應用模塊
5-選擇 mainSdkModule 并單擊 并勾選 ModuleA 和 ModuleB
6-應用并構建您的專案
uj5u.com熱心網友回復:
模塊 A 和 B 被宣告為外部依賴項,并將在 pom.xml 檔案中被參考。像這樣的東西:
<dependency>
<groupId>sdk-main-package</groupId>
<artifactId>moduleA</artifactId>
<version>unspecified</version>
<scope>compile</scope>
</dependency>
你想要的是創建一個fat jar或一個fat aar。胖 jar/aar 是一個 jar/aar 檔案,它也包含依賴項(而不是將它們作為外部依賴項參考)。我不知道您的 SDK 是需要是 jar 檔案還是 aar 檔案,如果您都不知道,那么您可以在此處找到區別,例如:Android Archive Library (aar) vs standard jar。
如果你需要一個胖罐子,那么你可以使用Shadow插件:https : //imperceptiblethoughts.com/shadow/introduction。
如果你需要一個胖 aar,那么你可以使用這個:https : //medium.com/android-news/android-fat-aar-from-gradle-892038facc87。還有其他解決方案,但我沒有親自測驗過其中任何一個,所以不知道哪些真正有效。如果你用谷歌搜索fat aar你會得到很多點擊,我希望其中之一可以解決你的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/396404.html
