Как определить, совместим ли 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.