Как я могу проверить тип apk флаттера [выпуск или разделенный APK: Arm64-v8a...]Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу проверить тип apk флаттера [выпуск или разделенный APK: Arm64-v8a...]

Сообщение Anonymous »

На самом деле я пытаюсь реализовать обновления внутри приложения, потому что не хочу распространять приложение в Google Play. При таком подходе я хочу предоставить пользователям разделенный APK ABI в соответствии с поддерживаемым ими ABI вместо APK универсального выпуска. Поскольку размер моего приложения составляет до 50 МБ, лучше предложить разделенные APK-файлы.
Приведенная ниже функция работает нормально, но при обновлении приложения возникают проблемы. В частности, если у меня уже установлена ​​неразделенная версия APK, а затем я пытаюсь выполнить обновление до последней версии, устройство проверяет свой ABI и загружает соответствующий APK. Однако во время установки я получаю сообщение об ошибке «Приложение не установлено» из-за несовместимости форматов APK. Например, эта ошибка возникает при наличии полного APK-файла и последующей загрузке разделенного APK. Эта проблема затрагивает все сценарии APK/ABI, что делает эту функцию непрактичной.
Вот мой код:

Код: Выделить всё

/**
* Checks for updates of the app and shows a dialog to update if a new version is available.
*
*
*
* Example:
* ```dart
* checkForUpdates(context);
* ```
*/
Future checkForUpdates(BuildContext context) async {
// Get the current app version
String currentAppVersion = await getCurrentAppVersion();
print("the current package version: $currentAppVersion");
// Get the list of supported ABIs (Application Binary Interfaces) of the device
List supportedAbis = await getDeviceABIs();
// Create an instance of the FeatureService
final FeatureService featureService = FeatureService();
// Fetch the app update content from the server
List appUpdateContent = await featureService.fetchAppUpdate(context);
// Initialize variables to store the latest version and APK URL
String apkUrl = '';
String latestVersion = '';

// Iterate through the app update content
for (AppUpdate appUpdateInfo in appUpdateContent) {
print("the latest package version: ${appUpdateInfo.appVersion}");
// Check if the app update is the latest version and is newer than the current version
if (appUpdateInfo.isLatest && appUpdateInfo.appVersion.compareTo(currentAppVersion) > 0) {
// Update the latest version and APK URL based on the device's ABI
latestVersion = appUpdateInfo.appVersion;
if (supportedAbis.contains("arm64-v8a")) {
// Use the arm64-v8a APK URL
apkUrl = appUpdateInfo.arm64_v8a;
} else if (supportedAbis.contains("armeabi-v7a")) {
// Use the armeabi-v7a APK URL
apkUrl = appUpdateInfo.armeabi_v7a;
} else if (supportedAbis.contains("x86_64")) {
// Use the x86_64 APK URL
apkUrl = appUpdateInfo.x86_64;
} else {
// Use the release APK URL as a fallback
apkUrl = appUpdateInfo.release;
return; // Exit the function early
}
}
}

// Check if a new version is available
if (latestVersion.compareTo(currentAppVersion) > 0) {
// Show the update dialog and handle the download process
showUpdateDialog(apkUrl, latestVersion);
}
}
Есть ли способ определить тип уже установленного APK, например выпуск, разделенный ABI или отладочный, чтобы я мог указать правильный URL-адрес APK? Например, если установлен APK-файл Armeabi-v7a, последним обновлением также должен быть APK-файл Armeabi-v7a.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -arm64-v8a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»