2017-08-23 59 views
3

我有以下依存的Android項目:如果JAR依賴項丟失,如何獲得編譯錯誤?

-- Android App 

---> MySDK.Jar 

------> 'org.apache.commons:commons-lang3:3.5' 

這是MySDK.jar是對公地lang3的依賴。

我正在使用Android Studio,因此我使用了Gradle。

這是我的問題: 我已經將「MySDK.Jar」分享給某人,並且他已經在其上構建了自己的Android應用程序。 它的工作原理,但我們已經看到,編譯器不會注意到'org.apache.commons:commons-lang3:3.5'上缺少的依賴關係。在運行時,如果調用使用'org.apache.commons:commons-lang3:3.5'的代碼,將會發生崩潰。如果他不使用這個庫調用代碼,可能不會注意到這個問題。

我知道,我們可以通過添加以下行至Android應用的build.gradle文件解決此問題:

compile 'org.apache.commons:commons-lang3:3.5' 

我不知道是否有一種方式來獲得一個編譯錯誤表示這種缺少依賴關係?在編譯時而不是在運行時看到依賴關係問題的確更好。

這是什麼建議的良好做法?

謝謝!

回答

0

commons-lang3Android App一個傳遞依賴。因此,編譯通常不需要 - 有例外,特別是在多層次的繼承中。所以在編譯時你(通常)不知道你是否錯過了你在運行時需要的傳遞依賴。

這是Gradle進來的地方。Gradle可以(像Maven一樣)從Maven倉庫(如MavenCentral)以可穿戴方式解決依賴項。如果您將MySDK放入Maven存儲庫(如Nexus或Artifactory,它們具有開放源代碼版本),則每個使用MySDK的人都將自動繪製commons-lang3,因此您不會在運行時錯過任何內容。

0

如果你只是在項目中添加jar文件,你不能警告缺少的依賴關係。

要做到這一點,你必須發佈jar文件在maven回購
通過這種方式,您可以使用一個描述gradle必須下載的依賴關係的pom文件。

-1

提供像MySDK.init()的方法INT您MySDK.jar,調用一個方法磨片是屬於org.apache.commons:commons-lang3:3.5'MySDK.init()方法,然後把的init()到您的ApplicationonCreate()

另一種方式是,把org.apache.commons:commons-lang3:3.5MySDK.jar

希望它可以幫助你:)