2017-10-26 1 views
0

以前のバージョンのgradleでは、私のリリースapkのoutputFileNameを生成するために以下のようなコードがあります。Variant Api android in Gradle 4.1

applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(outputPathName) 
     } 
    } 

最後にgradleを更新した後、このコードは機能しません。私はコードを変更する必要がある公式の移行文書を読んでいます。

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

これは機能しません。このコードは、/home/pugman/AndroidStudioProjects/clickerapp/app/build/outputs/apk/releaseディレクトリにパスを作成するだけです。 また、このテキストを読んでいます:

"しかし、outputFileオブジェクトへのアクセスを含む複雑なタスクはもはや機能しません。これは、構成段階でバリアント固有のタスクが作成されなくなったためです。その出力が前面に出ていますが、構成時間が短縮されることも意味します。

これは上記の方法が機能しないことを意味しますか?

+0

あなたの完全な 'build.gradle' –

答えて

1

あなたが言ったように、official migration docsには、3.0.0で導入された最新の変更がありました。そうは言っても、それはまた、明確に述べている:

それはまだ、このような

ビルド時にAPK名の変更などの単純なタスクのために働き、確かにそれはありません:) をしかし、私はあなたのことを疑いますあなたのbuild.gradleで何か問題が起きている可能性があります。とにかく、彼らは一例でandroidapplicationVariantsの前に付けることを予告:

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

しかし、あなたはandroidクロージャ外にいるない限り、接頭辞は、例えば、を必要とされていません。

android { 
    compileSdkVersion 26 
    buildToolsVersion '26.0.2' 
    // More stuff here... 
} 

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

このdoesnの場合はあなたが発行する可能性が最も高い問題は、あなたのbuild.gradleのどこか他の場所にあります。