Установить место установки для Android 1.6?

Я пишу приложение, совместимое с Android 1.6, но я бы хотел предоставить пользователям Android 2.2 возможность перенести установку приложения на свою SD-карту.

Как я могу скомпилировать свое приложение для 1.6, но все же позволить пользователям 2.2 установить его на свой sd?

2 ответа

Решение

В вашем манифесте:

  • В <manifest>, добавлять "android:installLocation="preferExternal"
  • Держите свой текущий uses-sdk как "<uses-sdk android:minSdkVersion="4">"

Затем перейдите в Project > Properties > Android (слева), измените цель сборки на 2.2, и все готово.

Ваш проект будет собираться с использованием 2.2 (но все еще требует только 1.6), но устройства под управлением 1.6 будут просто игнорировать ваш новый параметр "installLocation" в манифесте. Только будьте осторожны, чтобы не добавлять материал 2.2 в ваш реальный код, так как компилятор больше не будет его ловить.

Это не так легко, как предполагает руководство разработчика. Во-первых, приложение не собирается, если в манифесте присутствует installLocation, а для цели сборки установлено любое другое значение, кроме 2.2:

error: No resource identifier found for attribute 'installLocation' in 
package 'android'

Таким образом, чтобы проверить обратную совместимость, установив цель сборки на 1.6, манифест должен быть также отредактирован.

Во-вторых, когда цель сборки установлена ​​на 2.2, я не могу выбрать эмулятор с более низким уровнем API для тестирования. Я все еще могу вручную запустить эмулятор 1.6 и запустить приложение на нем, но мне любопытно, появится ли мое приложение на Android Market для устройств 1.6, если моя цель сборки 2.2 (хотя minSdkVersion=4). У меня нет реального устройства для тестирования. Может кто-то подтвердить, что это не влияет на доступность на рынке?

Наконец, это предупреждение остается:

Attribute minSdkVersion (4) is lower than the project target API level (8)
Другие вопросы по тегам