Убедитесь, что проект Android не вызывает API с более новым, чем предполагалось, уровнем API - PullRequest
2 голосов
/ 03 сентября 2011

При разработке приложения для Android, скажем, я хочу, чтобы оно было совместимо с устройствами 1.6 (API уровня 4), но при этом поддерживало функции 2.2 (API уровня 8), такие как добавление android:installLocation для включения перемещения приложения на SD-карту. Поэтому я настроил Eclipse для компиляции против 2.2 SDK вместо 1.6 SDK.

Добавление атрибута unknown , например android:installLocation, не приводит к сбою приложения при работе на устройстве 1.6, но в случае кодирования я вызываю некоторый API, который недоступен в 1.6, например android.util.Pair или Base64, приложение будет зависать при запуске в 1.6.

Можно ли (например, через плагин Eclipse) во время сборки (не во время выполнения!) Проверить, совместим ли проект с 1.6, другими словами, проверить, есть ли какие-либо вызовы API для любого из методы / классы, требующие более 1,6 (API уровня 4)?

Ответы [ 3 ]

0 голосов
/ 04 сентября 2011

Это сложная задача для изящного решения в коде. Я задал очень похожий вопрос здесь .

Мне кажется, что вы, возможно, задаете не тот вопрос. Проверка вызовов для новых функций API является разумной, но если вы хотите, чтобы ваше приложение работало хорошо в нескольких версиях, вам потребуется код, который выполняет вызовы для старых и новых уровней API, в зависимости от ситуации. Есть много способов сделать это, и это считается наилучшей практикой.

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

0 голосов
/ 15 июня 2015

Я знаю, что этот вопрос древний, но есть решение "Святого Грааля" (по крайней мере, с точки зрения ваших пользователей):

Вы можете опубликовать две версии своего приложения, для одной из которых требуется уровень API 8, а для другой - уровень API 4. Затем используйте versionCode 100, 101, 102, 103, ... для версии 4 и versionCode 200, 201, 202, 203, ... для версии 8 уровня.

Таким образом, если пользователю доступен API уровня 8, ему предлагается только версия уровня 8 вашего приложения, поскольку у него более высокий код версии. А пользователям, имеющим только API уровня 4–7, предлагается только другая версия, так как другая несовместима.

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

Более подробную информацию можно найти в Android Поддержка нескольких APK Документация.

0 голосов
/ 04 сентября 2011

Лучший способ проверить, использует ли ваше приложение несуществующий API на старых телефонах, - это изменить цель на старую версию (начиная с минимальной, которую вы поддерживаете) и посмотреть, есть ли у вас ошибки компиляции ... Этобудет указывать на несовместимые вызовы API.По крайней мере, так я это делаю.

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