Я являюсь совершенно новым к Eclipse и Android, но несколько знакомым с Java. Это сказанное, я пытался следовать 'Привет Android' учебное руководство от сайта разработчика с помощью последнего Eclipse (Galieo) и 2,1 Android SDK, я нахожусь на Macintosh рабочий Snow Leopard (OS X 10.6). У меня есть виртуальное устройство по умолчанию (хотя моя цель на самом деле для телефонов как мой собственный HTC Incredible, который имеет процессор львиного зева и конечно все последнее снаряжение в смартфонах).
Все, казалось, пошло хорошо, пока я не перешел в RUN>RUN
и затем выбранное 'Приложение Android'. Мой компьютер вращает свои колеса некоторое время, и затем я вижу две ошибки. Я вставил вывод от Eclipse ниже:
[2010-05-04 01:53:46 - HelloAndroid] ------------------------------
[2010-05-04 01:53:46 - HelloAndroid] Android Launch!
[2010-05-04 01:53:46 - HelloAndroid] adb is running normally.
[2010-05-04 01:53:46 - HelloAndroid] Performing com.example.helloandroid.HelloAndroid activity launch
[2010-05-04 01:53:46 - HelloAndroid] Automatic Target Mode: launching new emulator with compatible AVD 'myAVD'
[2010-05-04 01:53:46 - HelloAndroid] Launching a new emulator with Virtual Device 'myAVD'
[2010-05-04 01:53:58 - HelloAndroid] New emulator found: emulator-5554
[2010-05-04 01:53:58 - HelloAndroid] Waiting for HOME ('android.process.acore') to be launched...
[2010-05-04 01:53:59 - Emulator] 2010-05-04 01:53:59.501 emulator[10398:903] Warning once: This application, or a library it uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw and move to Quartz.
[2010-05-04 01:54:23 - HelloAndroid] emulator-5554 disconnected! Cancelling 'com.example.helloandroid.HelloAndroid activity launch'!
Я никогда не вижу текст в эмуляторе и катастрофических отказах эмулятора с сообщением об этом выходящий неожиданно.
Состояния отчета о катастрофическом отказе:
Process: emulator [10472]
Path: /Applications/android-sdk-mac_86/tools/emulator
Identifier: emulator
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: eclipse [10468]
Date/Time: 2010-05-04 02:25:41.153 -0500
OS Version: Mac OS X 10.6.3 (10D573)
Report Version: 6
Interval Since Last Report: 2558914 sec
Crashes Since Last Report: 4
Per-App Crashes Since Last Report: 2
Anonymous UUID: C5F178C1-5290-4CA9-AD6E-E9C4F5582754
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000001fd2f000
Crashed Thread: 3
Примечание: Выполнение эмулятора из командной строки с:
iainnitro-Mac:tools iainnitro$ ./emulator -avd myAVD
2010-05-04 02:49:23.011 emulator[10556:903] Warning once: This application, or a library it
uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw
and move to Quartz.
Segmentation fault
iainnitro-Mac:tools iainnitro$
приводит к отказу сегментации (как отмечено выше от терминального вывода). Таким образом, эмулятор умирает самостоятельно, прежде чем что-либо можно будет показать.
Я попытался перезапустить процессы ADB.
Фактический код линию за линией из учебного руководства, и я никогда не мог добраться до части XML все же.
Я не уверен что не так с моей установкой среды или если это - просто несовместимость с Snow Leopard? Я ДЕЙСТВИТЕЛЬНО ценил бы любую справку в разрешении этого, поскольку я очень интересуюсь разработкой на этой платформе.
Слова благодарности,
Mike-N-Lawrence, Канзас
Это обсуждалось с двумя предложенными решениями http://code.google.com/p/android/issues/detail?id=724
Комментарий 17 от zachrcrowe , 06 января 2010 г. К вашему сведению - мне пришлось изменить строку в примере Hello Android, чтобы читать this.setContentView (tv); для того, чтобы он работал. Как упоминалось выше, предупреждение об устаревании не должно влиять на функциональность эмулятора.
Комментарий 18, автор: mfrony, 14 января 2010 г. У меня была такая же проблема, когда я запускал пример Hello Android. Я решил эту проблему и смог запустить свой первый код для Android, изменив цель сборки проекта с 1.1 на 1.5.
По какой-то причине я перестал получать ошибку сегментации, когда добавил:
this.setContentView(tv);
"this", похоже, решил проблему. Ошибка seg возникает, если вы пытаетесь запустить эмулятор без какого-либо файла .apk, как я полагаю. (Я тоже получал это из командной строки). Надеюсь, учебник будет обновлен.
Прямого опыта нет, но, похоже, это повторяющаяся проблема:
Эта тема предполагает:
Вы не дали эмулятору загрузиться до конца. Запустите его и подождите, пока не появится рабочий стол, как на настоящем телефоне.
В этой теме упоминается (я подозреваю, что пункт 1. не является для вас проблемой):
Возьмите больше оперативной памяти. Я работал на 256 МБ (что, как я полагаю, ниже минимальных требований), только сегодня обновил до 1024 МБ (давно собирался), приложение теперь запускается нормально. Хотя я все еще вижу некоторые сообщения об ошибках в эмуляторе, они, похоже, ничего не делают.
Установка из командной строки. Это немного трудоемко, но вы можете запустить эмулятор из командной строки (при условии, что
добавлен в переменную PATH), просто введите emulator, затем перейдите к расположению
\tools your_app_here. apk
, и выполните
adb install your_app_here.apk
Если вы запускаете эмулятор из Eclipse, сначала выполните
adb kill-service
, а затемadb start-service
(илиkill-server
/start-server
. не уверен в точности команд). После этого ваше приложение будет установлено на эмуляторе.
Также (немного старый, но может быть все еще актуальным)
Возможно, эмулятор работает так медленно, а adb-сервер или другой компонент, например "DDMS", немного "отчаялся", потому что, похоже, он ждет, пока эмулятор инициализирует какое-то
HOME
приложение.
Но эмулятор работает медленно, консоль в Eclipse выдает сообщение:emulator-5554 отключен! Отмена запуска 'com.android.hello.HelloAndroid'!;
и эмулятор продолжает работать нормально и загружать свою систему, но не запускает приложение, которое я создал.Поэтому для решения этой проблемы я запускаю программу, и когда эмулятор открывается, я возвращаюсь в eclipse в DDMS Perspective и на вкладке Device нажимаю кнопку "
restart adb server
", после чего консоль показывает мне сообщение "emulator-5554 disconnected!
".
Я делаю это несколько раз, пока эмулятор наконец не загрузит ОС.
После загрузки ОС на эмуляторе, eclipse не отправляет ошибку разъединения, а "отправляет" приложение, которое я создал, также в консоли появляются сообщения об этом.
Затем наконец-то появляется на мобильном "Hello, Android".