2017-06-20 19 views
5

Projemde android derleme araçları "com.android.tools.build:gradle:3.0.0-alpha4" kullanmaya çalışıyorum. Yapım komutumda geçmişte iyi çalışan ancak artık daha fazla desteklenmeyen çıktı apk'sini yeniden adlandırıyorum. değiştir apk filename in gradle

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 
     ) 
    } 
} 

Şimdi değişim çalışıyorum Propery değişmez oldu:

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.

yeni veya bunun nasıl yapılacağını alternatif yolu var mı?

+0

Olası çoğaltılabilir [Sınıf Eklentisi 3-alpha1 outputFile hataya neden olur] (https://stackoverflow.com/questions/44044031/grade-plugin-3-alpha1-outputfile-causes-error) –

+0

Aldığım hata aslında farklı ve verilen çözüm benim için çalışmıyor. Alfa-4'te yeni bir sorun gibi görünüyor. Örneğimi, resmi dokümanın çözümünün çalışmadığını yansıtacak şekilde düzenledim. – Hendrik

+0

Olası https://stackoverflow.com/questions/44239235/android-gradle-3-0-0-alpha2-plugin-cannot-set-the-value-of-read-only-property kopyası –

cevap

1
  1. Değişim each -> Değiştir output.outputFile
  2. all için -> için outputFileName

önce:

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")) 
    } 
} 

sonra:

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

Ör. versionNamedefaultConfig kapatılmasıyla

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

ekleyerek APK'nıza.