[Android/Java] BuildConfig.versionName/BuildConfig.versionCodeを取得


Android Studio 4.1.3(windows版) で動作確認しています

BuildConfig.versionName/BuildConfig.versionCodeが直接BuildConfigから取得できなくなってしまいました
アプリケーションの場合以下の方法でも取得できますが
ライブラリなどサブモジュールのversionName/versionCodeを取得したい場合に以下の方法では取得できないようですので別の方法を紹介させていただきます
※packageNameにサブモジュールのパッケージ名を設定して取得はできません

java
// 以下はエラー
// String versionName = BuildConfig.versionName;
// long versionCode = BuildConfig.versionCode;

try {
    String packageName = getPackageName();
    String versionName = getPackageManager().getPackageInfo(packageName , 0).versionName;
    long versionCode = getPackageManager().getPackageInfo(packageName , 0).versionCode;
}
catch (Exception e) {}

build.gradleの設定

対象のbuild.gradleに以下のようにbuildConfigField の設定を追加します

build.gradle
android {
    defaultConfig {
        versionCode 1
        versionName '1.0'
        buildConfigField "long", "VERSION_CODE", "${defaultConfig.versionCode}"
        buildConfigField "String", "VERSION_NAME", "\"${defaultConfig.versionName}\""
    }
}

取得できるようになりました
BuildConfigが更新されない場合はClean Project/Rebuild Projectを実行してください

java
String versionName = BuildConfig.VERSION_NAME;
long versionCode = BuildConfig.VERSION_CODE;

参考