2014-09-12 4 views
3

Каковы рекомендуемые методы поддержки самой широкой обратной совместимости приложения Android в зависимости от сервисов Google Play?Максимизация сервисов Google Play Обратная совместимость

документация реализации проявителя для использования Android Studio, указует на компиляцию против v5. + compile 'com.google.android.gms:play-services:5.+' который с доступной для загрузки, которые я использую, кажется, в конечном итоге, используя версию 5208000. В этот момент я получаю ошибки и предупреждение возвращаются при тестировании приложения :

W/GooglePlayServicesUtil Google Play services out of date. Requires 5208000 but found 5089036 
E/GooglePlayServicesUtil GooglePlayServices not available due to error 2

Admob, моя зависимость от Служб Google Play, похоже, работает нормально. Если вы следуете рекомендациям Google для звонка isGooglePlayServicesAvailable() и GooglePlayServicesUtil.getErrorDialog(), пользователю сообщается, что для работы приложения требуется обновление, и он отправляется в магазин, где нет доступных обновлений.

В других местах поддержка обратной совместимости означает компиляцию с самой старой версией API, которая поддерживает необходимые функции. Так что я попытался с v4 compile 'com.google.android.gms:play-services:4.+' который вызвал другую ошибку:

E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

Поиск вокруг указывает, что это ложное сообщение, и может быть проигнорировано.

Если я скомпилирую новую версию API и ее нет на устройстве, все будет работать? Или мне нужно уговорить пользователей обновлять? Лучше ли компиляция с более старой версией API и предположить, что все правильно совместимо с новыми версиями, запущенными на устройствах?

ответ

3

Я разработчик SDK, который по желанию зависит от сервисов Google Play, и мой подход, как вы упомянули, заключается в компиляции с самой старой версией Служб Google Play, которая содержит необходимые мне API, так что нисходящие клиенты не будут сталкиваться с такими проблемами.

Если необходимые API-интерфейсы доступны в версии 4, можно скомпилировать их с и следовать указаниям Google, чтобы показать запрос пользователю на обновление. Пользователи будут видеть только диалог обновления, если они работают с более старой версией v4, или если они каким-то образом остаются на v3. В любом случае диалог обновления должен правильно привести их в Play Store, где действительно будет доступность обновления.

Если требуемые API-интерфейсы доступны только в версии 5, не используйте подстановочную версию (то есть 5.+). Вы должны скомпилировать более старую версию, которая, вероятно, будет широко распространена, например, com.google.android.gms:play-services:5.0.89. Использование подстановочного знака означает, что вы скомпилируете самую последнюю версию Служб Google Play, которую вы установили в Android SDK manager, на любом компьютере/среде, в которой вы собираетесь компилировать, что для меня просто не так - я не знаю, Не заботьтесь, если это Google, создавая библиотеку, мне нравится точно знать, что я компилирую в свое приложение.

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

+0

Спасибо за комментарии, они подтверждают мое понимание. Запутанная часть заключается в том, почему в документации Google предлагается сделать то, что не является лучшей практикой и на самом деле проблематично. – ertyu

Смежные вопросы