获得" VERSION NAME"来自aar的味道

时间:2016-07-22 00:08:17

标签: android android-productflavors

我正在使用一个库,我想要提取正在使用它的应用程序的应用程序版本,一切都很好用反射

Class.forName(context.getPackageName() + ".BuildConfig");

但是......然后......我把应用程序分成了各种风格,图书馆现在无法找到BuildConfig类,它总是抛出" Class not found Exception" ...调试我注意到我想要它的版本名称是默认项目ID或我的类所在的物理名称,而不是风味应用程序ID。

这是我的gradle配置。

productFlavors {
    development {
        applicationId "com.dev.testit"
        buildConfigField 'String', 'API', '"api"'
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName '1.N'
    }
    production {
        applicationId "com.testit"
        buildConfigField 'String', 'API', '"prod"'
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName '1.S'
    }
}

有办法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

public static String getAppVersionName(Context context) {
    if (context == null) 
        return null;

    PackageManager packageManager = context.getPackageManager();

    try {
        PackageInfo info = packageManager.getPackageInfo(context.getPackageName(), 0);
        return info.versionName;

    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

请参阅doc here