Подтвердить что ты не робот

Android Market несколько APK... Как насчет разных архитектур процессора?

Итак, я подумал, что теперь могу загружать свое приложение, используя разные скомпилированные библиотеки NDK для целенаправленных архитектур процессора, но кажется, что это невозможно.

Кто-нибудь знает, как загрузить в Android Market различные APK, каждый из которых содержит библиотеки, скомпилированные специально для разных архитектур процессора?

Я не пробовал это и выглядел как талия пространства, но можем ли мы включить несколько скомпилированных библиотек в один APK?

Update:
По-видимому, когда пользователь устанавливает apk, неподдерживаемые библиотеки не будут установлены на устройстве. Это хорошо, но пользователю по-прежнему приходится загружать весь apk, теряя пропускную способность.

4b9b3361

Ответ 1

Ну, наконец, Google Play позволяет таргетинг на несколько APK!

"Мы добавили новые функции для приложений, которые используют поддержку нескольких APK. Теперь вы можете настроить таргетинг каждого APK на определенную собственную платформу".

Ответ 2

Если у вас нет куча кода для вашего приложения, я бы предложил просто поместить собственный код для трех архитектур, поддерживаемых андроидами, и момента, armv5, armv7 и x86. Он умножит размер части кода вашего apk, но 3 * (небольшое число) все еще небольшое число. Вы можете сделать это, изменив файл jni/Application.mk или создав его, если у вас его еще нет, и добавьте строку:

APP_ABI := armeabi armeabi-v7a x86

Это будет скомпилировано для всех трех.

Обратите внимание, что есть ошибка с текущим ndk (ndk r6), который пытается связать код x86 с кодом руки. Это исправлено, если вы получаете проект AOSP, source.android.com, или можете просто подождать, пока google-релизы r6b, которые, скорее всего, будут исправлены. В противном случае, если вы не хотите этого делать, вы можете просто отказаться от части x86 этой строки и освободить приложение без кода x86 в нем и нажать обновление, когда выйдет новый ndk. Я не знаю многих популярных устройств, которые еще используют инструкции x86.

Ответ 3

Обратитесь Несколько поддержки APK в документации по Android. Это детализирует некоторые особенности выпуска нескольких APK одного и того же продукта/приложения.

Что касается специфики NDK, и, как уже упоминалось, вы можете использовать несколько платформ /ABI в значении APP_ABI вашего Android.mk.

Ответ 4

В новой консоли разработчика Play Store, если вы хотите добавить несколько APK, вам нужно будет использовать одно и то же имя пакета и тот же ключ ключей, но другой код версии. Вы публикуете приложение, а затем сначала загружаете Apk, например, mobile_release и rollout для производства, после того как вы загрузите еще один apk, вы должны выбрать опцию RETAIN в предыдущем APK также с текущим APK.

  android {

        // To create different apk per abi
        splits {
            abi {
                enable true
                reset()
                include 'armeabi', 'armeabi-v7a', 'x86'
                universalApk true
            }
        }
    }

    import com.android.build.OutputFile

    // Map for the version code
    ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'x86': 3]
    android.applicationVariants.all { variant ->

        // assign different version code for each output
        variant.outputs.each { output ->
            int abiVersionCode = project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) ?: 0
            output.versionCodeOverride = (abiVersionCode * 1000) + android.defaultConfig.versionCode
        }
    }

Ответ 5

Вы можете объявить supports-gl-texture в своем AndroidManifest.xml для каждого отдельно скомпилированного (и повторно упакованного) приложения. Это обеспечит фильтрацию рынка, поэтому один пользователь увидит только одну версию вашего приложения.