2017-08-23 13 views
3

私は、次の依存関係のAndroidプロジェクトを持っている:JAR依存関係が存在しない場合、コンパイルエラーを取得する方法はありますか?

-- Android App 

---> MySDK.Jar 

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

これはコモンズ・lang3に依存しているMySDK.jarです。

私はAndroidスタジオで作業していますので、私は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 can(Mavenとして)は依存関係をMavenリポジトリ(MavenCentralとして)からtransftivelyに解決します。 MySDKをMavenリポジトリ(オープンソース版のNexusやArtifactoryなど)に入れた場合、MySDKを使用するすべての人が自動的にcommons-lang3を描画し、実行時に何かを見逃すことはありません。

0

プロジェクトにjarファイルを追加するだけの場合は、欠落している依存関係について警告することはできません。

これを行うには、maven repoにjarファイルを公開する必要があります。
このようにして、gradleがダウンロードしなければならない依存関係を説明するpomファイルがあります。

-1

MySDK.jarorg.apache.commons:commons-lang3:3.5を入れ、MySDK.init()方法でorg.apache.commons:commons-lang3:3.5'に属しているWHE、あなたのApplicationonCreate()

に別の方法を初期化する()されて入れ、メソッドを呼び出して、MySDK.init() int型のようなあなたのMySDK.jarの方法を提供します

は、それはあなたのお役に立てば幸いです:)

関連する問題