1. ホーム
  2. android

[解決済み] String型のbuildConfigFieldを生成する方法

2022-04-14 02:44:34

質問

私の Android Studio プロジェクトには、2つの build configuration といくつかの 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'
    }
}

以下のようなエラーが発生します。

/path/to/generated/BuildConfig.java
    Error:(14, 47) error: ';' expected
    Error:(15, 47) error: ';' expected

生成された BuildConfig.java は次のようになります。

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

の方がいいと思います。 APP_VERSIONSERVER_URL は、引用符がないため、String 型として正しく生成されません。

なぜこのような方法で生成されるのか、よくわかりません。どうすればこの問題を解決できるのか、教えてください。

解決方法は?

文字列型のビルド設定フィールドは、このように宣言します。

buildConfigField "String", "SERVER_URL", "\"http://dev.myserver.com\""

は引用符で囲まれたフィールド名で、フィールドの値はさらに引用符で囲まれたエスケープされたものです。