2017-06-20 20 views
5

私のプロジェクトでは、アンドロイドのビルドツール "com.android.tools.build:gradle:3.0.0-alpha4"を使用しようとしています。私のビルドスクリプトでは、過去にうまくいきましたが、もうサポートされていないような出力apkの名前を変更します。graleのapkファイル名を変更してください

applicationVariants.all { variant -> 

    def filename = "foo-${variant.baseName}-${variant.versionName}-(${android.defaultConfig.versionCode}).apk" 

    variant.outputs.all { output -> 
     output.outputFile = new File(
       output.outputFile.parent, 
       filename 
     ) 
    } 
} 

は今、私は変更しようとしているproperyは不変となりました:

Error: Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=stageDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

新規またはこれを行う方法の代替方法はありますか?

+0

[Grade Plugin 3-alpha1 outputFileが原因でエラーが発生する可能性があります](https://stackoverflow.com/questions/44044031/grade-plugin-3-alpha1-outputfile-causes-error) –

+0

エラーは実際には提供されたソリューションは私のためには機能しません。 alpha-4の新しい問題であると思われます。公式の文書からの解決策が機能しないことを反映するためにサンプルを編集しました。 – Hendrik

+0

https://stackoverflow.com/questions/44239235/android-gradle-3-0-0-alpha2-plugin-cannot-set-the-value-of-read-only-propertyの可能な複製 –

答えて

1
  1. 変更each - >変更output.outputFile
  2. allへ - >へoutputFileName

前:

android.applicationVariants.all { variant -> 

    variant.outputs.each { output -> 
     def finalVersionCode =v10000 + versionCode 
     output.versionCodeOverride = finalVersionCode 
     output.outputFile = new File(
      output.outputFile.parent,  output.outputFile.name.replace(".apk","-${finalVersion}.apk")) 
    } 
} 

後:

android.applicationVariants.all { variant -> 

    variant.outputs.all { output -> 
     def finalVersionCode = 10000 + versionCode 
     output.versionCodeOverride = finalVersionCode 
     outputFileName = new File(
      output.outputFile.parent, 
      outputFileName.replace(".apk", "-${finalVersionCode}.apk")) 
    } 
} 
0

defaultConfig閉鎖に

setProperty("archivesBaseName", archivesBaseName + "-" + versionName) 

を追加することにより、APKへversionName

関連する問題