AndroidSDK, JDK 64-bit и Windows 7 64-bit
Данная зверушка при попытке запуска SDK Manager или инсталятора ругается на отсутствие JDK, который на самом деле есть.
Решение:
Экспортируем и удаляем ветку реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\]
И импортируем её в ветку
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\]
(путем редактирования путей в файле)
Вуаля, Ондроед находит Жабу.
[Android] Поворот экрана
Варианта управления экраном три:
1. Запретить поворот экрана
В раздел activity
вписать
android:screenOrientation="portrait"
или
android:screenOrientation="landscape"
2. Обрабатываем поворот вручную
Т.к. метод onCreate()
вызывается не только при создании Activity
, но и при повороте экрана, можно отловить данные события.
Подробно можно почитать тут - http://developer.android.com/guide/topics/resources/runtime-changes.html (Кстати, там, возможно, опечатка)
Коротко:
Добавляем в класс Activity
метод:
@Override public Object onRetainNonConfigurationInstance() { final MyDataObject data = collectMyLoadedData(); return data; }
В котором производим сборку всех данных, которые нужно будет снова показать после поворота.
И в метод onCreate
добавляем конструкцию:
final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance(); if (data != null) { loadMyData(); }
В которой данные распаковываем обратно.
3. Запрет автоматического пересоздания Activity
В AndroidManifest.xml
дописать в раздел activity
android:configChanges="orientation|keyboardHidden"
Метод не рекомендуемый, т.к. в сложных приложениях придется самостоятельно обновлять данные внутри программы.
Подробнее можно тут: http://stackoverflow.com/questions/7818717/why-not-use-always-androidconfigchanges-keyboardhiddenorientation
Ну или в официальной доке.
[Android] Первое приложение
Программа будет простенькой.
По нажатию кнопки будет выводится одна из 4 фраз, выбранная случайно, в случайную же область экрана.
ОС: 2.2.2
Сделаем также иконку приложения.
Разрабатывать будем в IntelliJ IDEA
[Android NDK] Unable to find native library
Пытаясь собрать пример из NDK получаю вот такую ошибку:
Caused by: java.lang.IllegalArgumentException: Unable to find native library: native-activity
Весь интернет пишет какую-то ересь типа:
"Поправьте в AndroidManifest.xml строчку android:hasCode="false" на android:hasCode="true" и будет вам счастье"
А вот хер! Никакого эффекта.
Так бы и закончилось моё желание писать на С++ под Дроида, но тут я натыкаюсь на отличную ссылочку:
http://mobilepearls.com/labs/ndk-builder-in-eclipse/
Получается, что проблема в самом Эклипсе, блин.
Коротко:
1. Заходим в Properties проекта в раздел Builders. Жмём New...
2. Выбираем тип Program и жмём Ok
3. Location указываем путь до ndk-builer'а (я указал абсолютный путь. Под Вин это звучит так: <путь в системе>\android-ndk-r8\ndk-build.cmd)
4. Working directory - путь до папки с проектом (Моё: <путь в системе>\android-ndk-r8\samples\native-activity
5. На том же окошке переходим во вкладку Refresh, ставим галочку и выбираем Specific resources. Разворачиваем проект и ставим галочку на lib. Finish
6. Вкладка Build Options. Проверяем наличие галочки на During auto builds и ставим галку на Specify working set of relevant resources. Разворачиваем проект и ставим галочку на jni
7. Жмем Apply, Ok, Ok
Не забываем нажать Project/Clean
Всё, теперь проект запускается без ошибок.