web-dev-qa-db-ja.com

com.Android.build.gradle.internal.api.ApplicationVariantImplで「outputFile」プロパティが見つかりませんでした

AS 1.0 RC 1およびプラグイン0.14.4に更新した後、build.gradleの名前変更部分に問題があります。

applicationVariants.all { variant ->
            def file = variant.outputFile
            variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
        }

今すぐ投げる:

Error:(78, 0) Could not find property 'outputFile' on com.Android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@67e7625f.

また、クラスのApplicationVariantImplにジャンプして、プロパティの名前が変更された可能性を確認することもできません。誰でもこれの回避策を知っていますか?

50
ligi

これを試して

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def file = output.outputFile
        output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }
}
83
Oleg Khalidov

より包括的に:

applicationVariants.all { variant ->
    variant.outputs.each  { output ->
        output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }
}
21
Chris

これはいくつかの理由で発生する可能性があります。

1.)最初に @ Khalidov で言ったように、試してください

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = ...
    }
}

2.)次に、他のすべてのプラグインを更新してみます。

たとえば、 Spoon でこの問題が発生しました。これは、Spoonを次のように更新することで解決しました。

classpath 'com.stanfy.spoon:spoon-gradle-plugin:0.14.1'
6
cosic

または、バリアントが1つしかない場合:

def apk = outputs[0].outputFile

の代わりに

def apk = variant.outputFile
5
Ollie C

必ず最新のgradleバージョンを実行してください(プラグインではなく、自分でgradleしてください)。

gradle-wrapper.properties。 gradle 2.1を実行していますか?

互換性の詳細: http://tools.Android.com/tech-docs/new-build-system/version-compatibility

1
Pedro Loureiro

私は次のように解決できました:

古い:

buildTypes { 
libertação {

    runProguard false  // esta linha tem que ser mudado

    proguardFiles getDefaultProguardFile ( 'Android.txt proguard-' ),  'proguard-rules.pro' 
} 

}

新しい:

buildTypes { 
libertação {

    minifyEnabled false  // nova versão

    proguardFiles getDefaultProguardFile ( 'Android.txt proguard-' ),  'proguard-rules.pro' 
} 

}

ruan65によるこの投稿で説明されているように、プロジェクトのbuil.gradleファイルで編集 エラー:(26、0)Gradle DSLメソッドが見つかりません: 'runProguard()'

そして、編集後もこの行:

applicationVariants . all { variant -> 
variant . outputs . each { output -> 
    def file = output . outputFile 
    output . outputFile =  new  File ( file . parent , file . name . replace ( ".apk" ,  "-"  + defaultConfig . versionName +  ".apk" )) 
} 

}

そこまで言われたように。それで落ち着きました!

0
Williaan Lopes