Установить место установки для 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)