Android Market несколько APK ... Как насчет разных архитектур процессоров? - PullRequest
16 голосов
/ 11 августа 2011

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

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

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

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

Ответы [ 5 ]

11 голосов
/ 14 сентября 2012

Ну, наконец, Google Play позволяет иметь Multi-apk таргетинг !

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

8 голосов
/ 12 августа 2011

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

APP_ABI := armeabi armeabi-v7a x86

Это скомпилирует все три.

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

1 голос
/ 07 сентября 2011

Пожалуйста, см. Поддержка нескольких APK в документации Android. Здесь подробно описываются некоторые особенности выпуска нескольких APK одного и того же продукта / приложения.

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

0 голосов
/ 26 апреля 2017

В новой консоли разработчика 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
        }
    }
0 голосов
/ 12 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...