Загрузите PlayStore бесплатное и платное приложение в зависимости от страны - PullRequest
3 голосов
/ 17 апреля 2019

Можете ли вы бесплатно выпустить тот же APK файл в Индии и платный в некоторых других странах?

Если да, то как?

Я искал и обнаружил, что нам нужно выпустить два разных apk для аналогичной ситуации.

1 Ответ

2 голосов
/ 17 апреля 2019

Есть много подходов, которые вы можете использовать, но я не думаю, что вы сможете использовать один и тот же APK для обеих целей из-за того, как работает магазин Google Play. Я полагаю, что покупки в приложении - самое близкое к распространению одного и того же APK в разных регионах (платных и бесплатных). Это означает, что вам необходимо определить, когда пользователь должен платить за ваше приложение ... и вот в чем проблема ... зная, из какой страны ваш пользователь.

Подход, который я бы использовал, заключается в создании двух APK без особых усилий путем создания двух вариантов продукта (бесплатный, платный). Опять же, используя этот подход, вы получите ДВА АПК , но, насколько мне известно, это наиболее эффективный способ достижения вашей цели распространения.

Причина, по которой я считаю этот подход более эффективным, заключается в том, что вам не нужно добавлять много кода в код для определения страны устройства. Фактически, независимо от того, какой метод вы используете для определения страны устройства (или пользователя), вы почти никогда не сможете многое сделать с этой информацией. GPS-местоположение не является хорошим индикатором (пользователь может быть индийским туристом в Испании или испанским туристом в Индии), телефонные услуги также не будут работать для телефонов или планшетов без SIM-карт. По этой причине я сосредоточу свой ответ на двух вариантах продукта и создании двух APK.

Чтобы создать эти два продукта, вам нужно объявить их в Gradle ...

android {
    flavorDimensions "version"

    productFlavors {
        free {
            dimension "version"
            applicationIdSuffix ".free"
            versionNameSuffix "-free" 
        }

        paid {
            dimension "version"
            applicationIdSuffix ".paid"
            versionNameSuffix "-paid" 
        }
    }
}

Приведенное выше заявление просто говорит Android Studio о том, что приложение использует два варианта продукта (бесплатный и платный) и что applicationId (и название версии) будут дополнены именем версии. Это необходимо, потому что вы будете генерировать два APK.

Следует отметить, что все разновидности продукта будут «наследовать» настройки, определенные в разделе defaultConfig, поэтому вы должны определить все общие конфигурации в defaultConfig

Теперь, когда вы синхронизируете проект, Android Studio будет создавать варианты сборки на основе этих разновидностей продукта. Вот пример одного из моих проектов, в которых НЕ используются вкусы продуктов ...

enter image description here

Это просто использование общих типов сборки отладки / выпуска, но если бы я настроил упомянутые выше разновидности продукта, вы бы увидели здесь 4 варианта сборки:

  • freeDebug
  • freeRelease
  • paidDebug
  • paidRelease

Теперь, когда вы переключаете варианты сборки, вы можете предоставлять разные реализации классов, разные ресурсы и т. Д., И, самое главное, вы будете создавать разные APK для каждого варианта сборки при сборке (или упаковке) своего приложения.

Таким образом, вы получите бесплатный релиз APK и платный релиз APK, который вы можете раздельно распространять в Google Play. Может показаться, что у вас есть два разных приложения, но дело в том, что (с точки зрения разработки) это почти одно и то же приложение, разработанное с использованием Product Flavors, и усилия по созданию этих двух приложений минимальны !!!

Имея в виду все вышесказанное, вы можете видеть, что "довольно легко":

  1. Добавление подписок или покупок в приложении только к одному вкусу / варианту (Платно)
  2. Раздай бесплатный в Индию
  3. Распределите платное по всему миру

Теперь я действительно не знаю, есть ли простой способ достичь последнего пункта (3) ... распространение в Google Play во все страны, кроме одной (Индия). Это может быть непростой задачей - выбирать одну страну за раз

...