Saya menggunakan android studio 0.9.3 dengan gradle 'com.android.tools.build:gradle:0.14.+'
terapkan plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
applicationId "xxx.xxx.xxx"
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0.11"
}
signingConfigs{
releaseConfig{
storeFile file("xxxxxxx")
storePassword = "xxxx"
keyAlias = "xxxx"
keyPassword = "xxxx"
}
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.releaseConfig
// adds version to file name
applicationVariants.all { variant ->
def file = variant.outputFile
variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
// You must install or update the Support Repository through the SDK manager to use this dependency.
// You must install or update the Google Repository through the SDK manager to use this dependency.
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:appcompat-v7:19.+'
compile 'com.mcxiaoke.volley:library:1.0.6'
compile 'com.google.code.gson:gson:2.2.+'
}
Project yang dikompilasi sebelumnya tanpa perubahan apa pun pada file tersebut, saya mendapatkan:
Error: (26, 0) Metode Gradle DSL tidak ditemukan: 'runProguard ()'
Bagaimana cara memperbaikinya?
Jawaban:
Sejauh yang saya tahu
runProguard
diganti denganminifyEnabled
. Saya masih tidak yakin bagaimana mendefinisikan konfigurasi untuk proguard tetapi pencarian Google akan membantu Anda untuk mengetahuinya.Edit:
Untuk
outFile
membaca di sini: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0 bagaimana mereka melakukannya.Singkatnya: mereka menggunakan versi yang lebih kompleks:
applicationVariants.all { variant -> variant.outputs.each { output -> def apk = output.outputFile; def newName; // newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + ".apk"); if (variant.buildType.name == "release") { newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-release.apk"); } else { newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-beta.apk"); } output.outputFile = new File(apk.parentFile, newName); if (output.zipAlign) { output.outputFile = new File(apk.parentFile, newName.replace("-unaligned", "")); } logger.info('INFO: Set outputFile to ' + output.outputFile + " for [" + output.name + "]"); } }
sumber
applicationVariants.all { variant ->
baris duplikat tetapi menerima sisanya, terima kasihDaripada menggunakan
runProguard
di file gradle Anda, coba gunakanminifyEnabled
. Ini harus memperbaiki masalah.runProguard
sudah usang dan akan segera berhenti bekerja.EDIT
Untuk menggunakan
minifyEnabled
, gradle harus diperbarui ke versi 2.2 atau lebih tinggi.sumber
minifyEnabled
(tidakminifyEnable
)Perubahan dalam file app build.gradle dapat membantu:
tua:
buildTypes { release { runProguard false // this line has to be changed proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
baru:
buildTypes { release { minifyEnabled false // new version proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
sumber
Jika Anda menggunakan
gradle
plugin versi 0.14.0 atau lebih tinggi , Anda harus mengganti "runProguard
" dengan "minifyEnabled
" dibuild.gradle
file Anda .Tambahkan saja ini.
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }
minifyEnabled false
Berarti nama Build Type tidak boleh main atau androidTest (ini diberlakukan oleh plugin), dan harus unik satu sama lain.Versi baru
Gradle
plugin Android , dapat secara otomatis menghapus sumber daya yang tidak digunakan. Keuntungan besar di sini adalah ia menghapus sumber daya yang tidak digunakan tidak hanya dari kode Anda sendiri, tetapi yang lebih penting dari pustaka yang Anda gunakan (misalnya, di mana terdapat sumber daya yang disertakan untuk mendukung fitur yang sebenarnya tidak Anda gunakan dari aplikasi Anda).sumber
Mulai Gradle 0.14.4 , kesalahan ini dilaporkan sebagai kesalahan waktu kompilasi.
Jadi Anda harus mengganti
runProguard false/true
denganminifyEnabled false/true
Perubahan tersebut tercantum di Blog Pengembang Android .
sumber
Memigrasi Proyek Gradle ke versi 1.0.0 memerlukan beberapa pekerjaan penggantian nama yang mudah, semuanya dijelaskan di sini: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
Untuk proguard Anda cukup mengganti nama 'runProguard' => 'minifyEnabled', untuk yang lain lihat di bawah:
Renamed Properties in BuildTypes: runProguard => minifyEnabled zipAlign => zipAlignEnabled jniDebugBuild => jniDebuggable renderscriptDebug => renderscriptDebuggable Renamed Properties in ProductFlavors: flavorGroups => flavorDimensions packageName => applicationId testPackageName => testApplicationId renderscriptSupportMode => renderscriptSupportModeEnabled ProductFlavor.renderscriptNdkMode => renderscriptNdkModeEnabled Other Name changes InstrumentTest was renamed to androidTest.
sumber
Ini karena alat android gradle diperbarui ke 0.14.3. Ke dalam file "build.gradle", ganti
classpath 'com.android.tools.build:gradle:0.14.+'
oleh:
classpath 'com.android.tools.build:gradle:0.14.2'
Sampai mereka memperbaikinya…
sumber
runProguard telah diganti namanya menjadi minifyEnabled di Gradle versi 0.14.0 (2014/10/31).
Untuk memperbaikinya, Anda perlu mengubah runProguard menjadi minifyEnabled di file build.gradle proyek Anda.
sumber