Получение неверного кода версии и названия версии в версии выпуска приложения для Android - PullRequest
0 голосов
/ 21 февраля 2019

Я использую приведенный ниже код, чтобы программно получить имя версии и код версии в классе MyApplication, и я объявил их как статические члены

public class MyApplication extends Application {
   Public static String MY_VERSION_NAME;
   Public static int MY_VERSION_NAME;  
    @Override
    public void onCreate() {
       getPackageInfo();
    }  
    private void getPackageInfo() {
        Context context = getApplicationContext();
        PackageManager manager = context.getPackageManager();
        try {
            PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
            MY_VERSION_NAME = info.versionName;
            MY_VERSION_CODE = (int) PackageInfoCompat.getLongVersionCode(info);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            myversionName = "Unknown-01";
        }
   } 
}

, и мой файл gradle приложения:

android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
    applicationId "com.example"
    minSdkVersion 19 
    targetSdkVersion 28
    versionCode 15
    versionName "0.95"
    vectorDrawables.useSupportLibrary = true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
    debug {
        applicationIdSuffix '.debug'
        versionNameSuffix '-DEBUG'
    }
}
lintOptions {
    disable 'MissingTranslation'
}


compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}}

Показывает правильное имя версии (0.95-DEBUG) и код версии (15) в режиме отладки, но отображает имя старой версии (0.85) и код версии (11) в режиме выпуска.

как я могу решитьЭта проблема?Я пробовал это на многих устройствах, и результат тот же.

РЕДАКТИРОВАТЬ: проблема существует в настройке> приложение> информация о приложении тоже.

1 Ответ

0 голосов
/ 21 февраля 2019

Вместо использования

PackageManager manager = context.getPackageManager();
        try {
            PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
            MY_VERSION_NAME = info.versionName;
            MY_VERSION_CODE = (int) PackageInfoCompat.getLongVersionCode(info);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            myversionName = "Unknown-01";
        }

Использовать

BuildConfig.VERSION_NAME
BuildConfig.VERSION_CODE

* Редактировать

Где YOUR_MODULE_PACKAGE_NAME - это имя модуля, когда вы хотите получить информацию.

Помните, что если вы передадите контекст вашей заявки, вы получите информацию об этом модуле

PackageInfo packageInfo = getPackageManager().getPackageInfo(YOUR_MODULE_PACKAGE_NAME, 0);
packageInfo.versionName;
packageInfo.versionCode;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...