Di saya Android Studio
proyek ada dua build configuration
dengan beberapa buildConfigField
:
buildTypes {
def SERVER_URL = "SERVER_URL"
def APP_VERSION = "APP_VERSION"
debug {
buildConfigField "String", SERVER_URL, "http://dev.myserver.com"
buildConfigField "String", APP_VERSION, "0.0.1"
}
release {
buildConfigField "String", SERVER_URL, "https://myserver.com"
buildConfigField "String", APP_VERSION, "0.0.1"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Saya menerima kesalahan sebagai berikut:
/path/to/generated/BuildConfig.java
Error:(14, 47) error: ';' expected
Error:(15, 47) error: ';' expected
yang dihasilkan BuildConfig.java
adalah sebagai berikut:
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.mycuteoffice.mcoapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Fields from build type: debug
public static final String APP_VERSION = 0.0.1;
public static final String SERVER_URL = http://dev.mycuteoffice.com;
}
Saya pikir APP_VERSION
dan SERVER_URL
tidak dihasilkan dengan benar sebagai tipe String mereka tidak memiliki tanda kutip.
Saya tidak yakin mengapa ini dibuat sedemikian rupa. Tolong beri tahu saya cara mengatasi masalah ini.
android
android-gradle-plugin
Abdullah
sumber
sumber
buildConfigField "String", APP_VERSION, ' "0.0.1" '
(tanpa spasi tentu saja)Jawaban:
Kolom tipe build build config harus dinyatakan seperti ini:
nama bidang dalam tanda kutip, nilai bidang dalam tanda kutip juga ditambahkan.
sumber
SERVER_URL
mengutip. Anda akan tahu jika Anda mencobanya sendiri sebelum berkomentar. Pesan kesalahannya adalahError:(32, 0) Could not find property 'SERVER_URL' on BuildType_...
def FIELD_NAME = "SERVER_URL"
danbuildConfigField "boolean", FIELD_NAME, "false"
bekerja dengan baik bersama. Jika Anda kehilangan definisi SERVER_URL yang akan macet, mungkin itu yang Anda lakukan salah.Mengapa semua orang sangat marah karena lolos dari tanda kutip ganda? Tampak jelek! Ini Groovy, teman-teman, Anda bisa mencampur tanda kutip tunggal dan ganda:
sumber
Jika dengan "menyelesaikan masalah" yang Anda maksud tidak harus melipatgandakan kutipan literal, saya belum menemukan apa pun karena tampaknya berfungsi sebagaimana dirancang.
Saya telah bereksperimen dengan memindahkan literal ke " gradle.properties " sebagai solusi, mengubah beberapa garis yang berpotensi jelek menjadi satu garis yang jelek.
Seperti itu:
properti
Pikiran lebih lanjut:
sumber
CONFIG = { k -> if (project.properties.containsKey(k)) "\"${project.properties.get(k)}\"" else throw new RuntimeException("No such variable: " + k) }
Saya juga bingung. Tetapi ada arti - "String" mendefinisikan jenis bidang, sedangkan nilai bidang tidak dikutip secara otomatis untuk memungkinkan kami menggunakan ekspresi di sini:
buildConfigField "String", "TEST", "new Integer(10).toString()"
Kalau tidak, itu tidak mungkin.
sumber
Lepaskan kutipan string Anda:
sumber
Menggunakan
untuk variabel. Referensi dari sini
sumber
di app build.gradle
lalu di BuildConfig
sumber
Hanya \ "
my stuff
\" yang bekerja untuk saya. Dan saya memiliki semua jenis karakter anehmy stuff
.sumber