Android Studioでarrパッケージをビルドしようとしています。このパッケージには、Zendeskの依存関係が含まれています。
allprojects {
repositories {
maven { url 'https://zendesk.artifactoryonline.com/zendesk/repo' }
}
}
compile (group: 'com.zendesk', name: 'sdk', version: '1.7.0.1') {
transitive = true
}
compile (group: 'com.zopim.Android', name: 'sdk', version: '1.3.1.1') {
transitive = true
}
Unity3dプロジェクト用にこのパッケージをビルドしたいと思います。このパッケージには、Zendeskのすべての依存関係が含まれている必要があります(推移的= trueプロパティ)。 aarファイルを開くと、Zendeskの依存関係はありません。なにが問題ですか?
デフォルトでは、AARには依存関係は含まれていません。それらを含めたい場合は、手動で行うか、このタスクが役立つ可能性があるか、artifactory/your cacheフォルダーからパッケージにこれらのライブラリをコピーする必要があります: https://stackoverflow.com/a/33539941/ 4310905
私はこの答えが少し遅れることを知っています、しかしそれでも...
作成したtransitive
パラメータには、推移的な依存関係(依存関係の依存関係)が含まれます。これは、compile
に設定した依存関係のpom.xml
ファイルで設定する必要があります。したがって、他の目的を意図していない限り、aar
パッケージに対して実際にそれを行う必要はありません。
まず、aar
を(jar
フォルダー内の)いくつかのlibs
と一緒にパッケージ化できるが、aar
をaar
内にパッケージ化することはできないと考えてください。
問題を解決するためのアプローチは次のとおりです。
jar
ファイルであるかを確認します。jar
の場合は、それらをフォルダーにコピーし、compile
クロージャー内のそのフォルダーをdependencies
に設定します。だから多かれ少なかれこのようなもの:
configurations {
mypackage // create a new configuration, whose dependencies will be inspected
}
dependencies {
mypackage 'com.zendesk:sdk:1.7.0.1' // set your dependency referenced by the mypackage configuration
compile fileTree(dir: "${buildDir.path}/resolvedArtifacts", include: ['*.jar']) // this will compile the jar files within that folder, although the files are not there yet
}
task resolveArtifacts(type: Copy) {
// iterate over the resolved artifacts from your 'mypackage' configuration
configurations.mypackage.resolvedConfiguration.resolvedArtifacts.each { ResolvedArtifact resolvedArtifact ->
// check if the resolved artifact is a jar file
if ((resolvedArtifact.file.name.drop(resolvedArtifact.file.name.lastIndexOf('.') + 1) == 'jar')) {
// in case it is, copy it to the folder that is set to 'compile' in your 'dependencies' closure
from resolvedArtifact.file
into "${buildDir.path}/resolvedArtifacts"
}
}
}
これで./gradlew clean resolveArtifacts build
を実行でき、aar
パッケージには解決されたjar
sが含まれます。
これがお役に立てば幸いです。