En mi Android Studio
proyecto hay dos build configuration
con algunos 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'
}
}
Estoy obteniendo y error de la siguiente manera:
/path/to/generated/BuildConfig.java
Error:(14, 47) error: ';' expected
Error:(15, 47) error: ';' expected
el generado BuildConfig.java
es el siguiente:
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;
}
Creo que APP_VERSION
y SERVER_URL
no se están generando correctamente como tipo de cadena, no tienen comillas.
No estoy seguro de por qué se está generando de esa manera. Avíseme cómo puedo resolver estos problemas.
android
android-gradle-plugin
Abdullah
fuente
fuente
buildConfigField "String", APP_VERSION, ' "0.0.1" '
(sin espacios, por supuesto)Respuestas:
Los campos de configuración de compilación de tipo de cadena deben declararse así:
el nombre del campo entre comillas, el valor del campo en comillas escapadas adicionalmente.
fuente
SERVER_URL
entre comillas. Lo sabrías si lo probaras antes de comentar. El mensaje de error esError:(32, 0) Could not find property 'SERVER_URL' on BuildType_...
def FIELD_NAME = "SERVER_URL"
ybuildConfigField "boolean", FIELD_NAME, "false"
trabajan bien juntos. Si falta la definición de SERVER_URL, se bloqueará, probablemente eso es lo que está haciendo mal.¿Por qué todos están tan enojados por escapar de las comillas dobles? ¡Parece feo! Esto es Groovy, muchachos, pueden mezclar comillas simples y dobles:
fuente
Si "resolviendo los problemas" quiere decir que no tiene que hacer dobles comillas literales, no he encontrado nada, ya que parece estar funcionando según lo diseñado.
He estado experimentando con mover los literales a " gradle.properties " como una solución alternativa, convirtiendo potencialmente varias líneas feas en una sola línea fea.
Al igual que:
gradle.properties
Pensamientos adicionales:
fuente
CONFIG = { k -> if (project.properties.containsKey(k)) "\"${project.properties.get(k)}\"" else throw new RuntimeException("No such variable: " + k) }
Estaba confundido también. Pero hay un sentido: "String" define el tipo de campo, mientras que el valor del campo no se cita automáticamente para permitirnos usar expresiones aquí:
buildConfigField "String", "TEST", "new Integer(10).toString()"
De lo contrario, no sería posible.
fuente
Escapar de sus comillas:
fuente
Utilizar
para variable. Referencia desde aquí
fuente
en la aplicación build.gradle
luego en BuildConfig
fuente
Solo \ "
my stuff
\" funcionó para mí. Y tengo todo tipo de personajes extrañosmy stuff
.fuente