Как определить, совместим ли APK с ABI, поддерживаемыми устройством?

Я создал приложение, которое используется для распространения приложений. Он загружает файлы apk и предлагает пользователю установить их. Если я распространю приложение с собственным кодом только для x86_x64, оно не будет установлено на устройство arm / arm64. Установщик пакета сообщает, что приложение несовместимо с устройством.

Есть ли способ определить совместимость, прежде чем предлагать пользователю? Начиная с Api Level 21 я могу использовать Build.SUPPORTED_ABIS, чтобы определить, какой тип ABI может обрабатывать процессор устройства. Но как я могу узнать из APK, если он содержит нативный код?

На моем компьютере я могу сделать это с помощью "aapt d --values ​​badging vlc-arm64.apk", который выдает "native-code: 'arm64-v8a'", но у меня нет aapt на устройстве Android. Есть ли эквивалент?

1 ответ

Спасибо за совет, я подумал, что, возможно, есть более элегантный способ. Но предложенное вами решение работает. Я перебираю zip-архив с ZipInputStream и проверяю все пути, которые начинаются с lib/xxxx/fileZ, и сохраняю часть xxxx, которая является ABI, поддерживаемым apk. Если в apk нет включенных библиотек, apk поддерживается всеми устройствами Android с минимальным sdk.

Другие вопросы по тегам