Проверьте источник загрузки, чтобы изменить URL-адрес API в приложении для Android

Я переношу приложение iOS на Android, и мне нужно изменить URL-адрес API в зависимости от того, подключено ли оно через USB, загружено в виде .apk или установлено через магазин Google Play.

Это сделано для того, чтобы я мог использовать свой локальный API-интерфейс разработки, промежуточный API, а затем, очевидно, общедоступный API-интерфейс производства/релиза.

Раньше я проверял, работает ли приложение через Eclipse:

if ( ( appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0 ) {
    debug_value = "1";
}

Но мне нужно проверить разницу между test/release.

В iOS я только что протестировал макрос препроцессора DEBUG, а также добавил его для ADHOC.


person Pete    schedule 03.06.2014    source источник


Ответы (2)


Я не верю, что вы можете увидеть разницу между *.apk и Google Play, если это одна и та же сборка.

С другой стороны, если вы используете Gradle, довольно просто добавить ключевые слова к имени, которые вы сможете проверить позже.

Это пример из моего приложения:

    buildTypes {
        debug {
            versionNameSuffix = "-DEBUG"
        }
        release {
            signingConfig signingConfigs.release
        }
    }

это позволяет нам проверить приложение на:

getPackageManager()
     .getPackageInfo(getPackageName(), 0)
     .versionName
     .contains("DEBUG");
person Budius    schedule 03.06.2014

Я обнаружил, что могу использовать метод getInstallerPackageaName(), чтобы проверить, был ли он установлен через приложение (например, Google Play), иначе он вернет NULL.

Я использовал этот код (это приложение Cordova):

PackageManager packageManager = this.cordova.getActivity().getPackageManager();
String installer = packageManager.getInstallerPackageName( "com.myapp" );

if ( installer == null ) {
    // not installed via application (like Google Play)
} else {
    // installed via application
}

Вероятно, мне следует расширить это, чтобы специально проверять названия магазинов, но я только начинаю с этого, и, похоже, есть некоторое несоответствие относительно того, какое имя пакета установщика вернет Google Play (см. Вопросы, перечисленные ниже)

Документы Android для getInstallerPackageName():

http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstallerPackageName(java.lang.String)

Подобные вопросы по SO:

person Pete    schedule 04.06.2014