0

ContentProvider コントラクト クラスを使用して jar ファイルをビルドするために、プロジェクトで別のアーティファクトを作成しようとしています。この jar を構築するには、次のタスクを使用します。

task contractsJar(type: Jar) {
  from android.applicationVariants.release.javaCompile.destinationDir
  includes "contract classes filter"
  into "$buildDir/libs"
}

contractsJar.dependsOn 'compileReleaseJava'

ただし、このタスクは、システム ルートにベース パスを持つ jar をビルドします (Mac OS X の場合は です/Users/myuser...)。プロジェクトルートにベースパスを持つ「正しい」jarを作成するにはどうすればよいですか?

4

1 に答える 1

0

次の 2 つの問題がありました。

  1. android.applicationVariants.release は最初は存在しないため、使用する必要がありますDomainObjectCollection.all()
  2. intoいくつかの奇妙な方法で動作します-それを使用すると、jar はシステムルートをベースフォルダーとして持ちます

したがって、結果の構成:

task contractsJar(type: Jar, dependsOn: 'compileReleaseJava')

android.applicationVariants.all() { variant ->
  if (variant.name == "release") {
    contractsJar {
      from variant.javaCompile.destinationDir
      include "filter pattern (ANT style)"
      baseName="contracts"
    }
  }
}
于 2014-01-10T15:10:58.943 に答える