yandexmapkit-android
yandexmapkit-android copied to clipboard
Тестовый пример не работает
Тестовый пример в новой версии не работает ни на реальном устройстве (Galaxy S II) с версией Андроид 4.0.3, ни на эмуляторе. Похожая проблема описывалась здесь https://github.com/yandexmobile/yandexmapkit-android/issues/49 но решения так и не было показано.
Подробнее:
- API-ключ подставлен во все layout, где используется объект MapView,
- ресурсы из yandexmapkit-library добавлены в yandexmapkit-sample,
- библиотека classes.jar подключена,
- папка armeabi добавлена. Проект собирается под IntelliJ IDEA, предыдущая версия библиотеки (компилируется тоже под IDEA) работает и с тестовым примером и в реальном приложении, новая -нет!
Тестовый пример компилируется успешно, хоть и ругается, что классы ImageBalloonItem, OverlayGeoCode "must either be declared abstract or implement abstract method 'compareTo (T)' in 'Comparable' ". Приложение запускается - показывается список тестовых примеров, но при выборе любого из них - выдаёт ошибку:
10-14 16:50:02.086: ERROR/AndroidRuntime(22248): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.mapkittest/ru.mapkittest.defaultoverlay.DefaultOverlayActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class ru.yandex.yandexmapkit.MapView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class ru.yandex.yandexmapkit.MapView
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:271)
at android.app.Activity.setContentView(Activity.java:1835)
at ru.mapkittest.defaultoverlay.DefaultOverlayActivity.onCreate(DefaultOverlayActivity.java:42)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
... 22 more
Caused by: java.lang.NoClassDefFoundError: ru.yandex.yandexmapkit.R$string
at ck.a(Unknown Source)
at ru.yandex.yandexmapkit.MapController.
А зачем вы все копировали? На сколько мне известно IDEA тоже подериживает library-android. В примере лежит готовая apk которая собрана из всего что лежит в гитхабе. Проверте у Вас такой же размер? Так как судя по логу у Вас проблемы с ресурсами которых нет в собранной вами apk
- Заново склонировал репозиторий примера (чистая установка)
- ресурсы из yandexmapkit-library в yandexmapkit-sample в этот раз не добавлялись
- добавлен в проект модуль yandexmapkit-library с указанием, что это "Is library project"
- для модуля yandexmapkit-sample добавлена зависимость от yandexmapkit-library (в разделе Dependencies)
- там же для модуля yandexmapkit-sample добавлена библиотека classes.jar (находится yandexmapkit-library/lib), без неё не компилилось.
Результат аналогичен вышеописанному - приложение запускается, но при выборе любого пункта меню валится с точно такой же ошибкой: android.view.InflateException: Binary XML file line #6: Error inflating class ru.yandex.yandexmapkit.MapView
Размер получаемого apk 923 195 байт, (apk с гитхаба 920 745 байт)
Может всё-таки скомпилите библиотеку в виде единого jar-файла как и раньше было? Блин, столько времени уже ушло на эти опыты...
P.S. Пробовал и на IntelliJ IDEA 11.1.3 и на новой IntelliJ IDEA 12
У меня абсолютно аналогичная проблема с новой версией решилась установкой яндекс карт на голый htc desire s и все заработало! После удаления яндекс карт все равно YMK работает. Использую Идею. На эмуляторах, точнее на виртуал боксе завелось только на тех сборках, где ровно впилены библиотеки совместимости с ARM архитектурой.
Добавте android.permission.WRITE_SETTINGS
Данное разрешение присутствует изначально.
Попробовал сейчас удаление и установку заново Яндекс.Карт - ничего не изменилось. Может всё-таки у вас получится сделать библиотеку в виде единого jar-файла?
А собранный пример работает ?
Смотря что считать работой - приложение компилируется, запускается, на экране показывается список тестовых примеров (Объект на карте, Стандартный балун, Нестандартный балун 1 и т.д.), но при выборе любого из них - валится с вышеописанной ошибкой.
Я так понимаю, вам предлагают запустить на девайсе скомпилированный apk из репозитория:
$git clone https://github.com/yandexmobile/yandexmapkit-android.git $adb install yandexmapkit-android/yandexmapkit-sample/bin/yandexmapkit-sample.apk
Наверное так.
Но у меня на desire s этот же apk не работал. Наверно, все-таки разные у нас проблемы.
apk из репозитория работает коректно - всё запускается. Проблема в том, что не получается самостоятельно повторить этот пример на основе новой библиотеки. Старая апрелевская версия библиотеки yandexmapkit-android.jar работает на той же IDEA и с тем же телефоном нормально, в т.ч. и встроенная в реальный проект.
Извините что долго не писал удалось ли побороть проблему ?
Проблема осталась. Сейчас мои банковские приложения используют апрелевскую версию библиотеки yandexmapkit-android.jar Переходить в среду Eclipse ради новой версии Yandex Map Kit не хочется.
Если это не критично можете прислать тестовый пример с новым мапкитом так как собираете его вы. Мы попробуем собрать его на соей стороне может поймем в чем дело. А не побывали все ресурсы скопировать в свой проект, а также приатачить к проекту jar
Отправил в ответном письме по e-mail
Письмо вернулось. А как вам отправить архив с тестовым примером под IntelliJ IDEA? По какому адресу?
Проблема решена?
Проблема осталась, в проектах использую апрелевскую версию библиотеки, которая была в виде единого jar-файла. У кого-нибудь получилось подружить IntelliJ IDEA 12.0.2 (Build #IC-123.123) с yandexmapkit-android?
Столкнулся с таким же вопросом в IDEA 12.0.4. После небольшого шаманства вроде как палит:
В Project Structure:
- Modules - "+" - Import Module -
yandexmapkit-android/yandexmapkit-library
. Здесь еще через "+" создал Android Module. Галка "Library Module" должна стоять. - В Modules, выбрав
yandexmapkit-library
из Dependencies убрал всеcom.android.ide.eclipse.*
. - Там же в Modules, выбрав клиентское приложение: Dependencies - "+" - Module Dependency... -
yandexmapkit-library
и Dependencies - "+" - Library... - Java -yandexmapkit-android/yandexmapkit-library/libs/classes.jar
.
По сути, что-либо не работало по одной из трех причин:
- Не вкомпиливалась в APK
*.so
-библиотека. - Не импортились классы из
classes.jar
. - В APK не включались сгенеренные классы из
gen
. В stacktrace'е выше, по сути, причина именно эта: не найден автосгенеренный классru.yandex.yandexmapkit.R$string
из модуляyandexmapkit-library
.
Не работает apk из репозитория yandexmapkit-android/yandexmapkit-sample/bin/yandexmapkit-sample.apk Пробую запустить на эмуляторе Android version 4.0.4 Выводится список примеров, выбираешь любой элемент списка программа слетает.
В чем проблема? Так долго я не возился еще ни с одной библиотекой. То одно не работает то другое. Пробуешь все варианты, потом пробуешь тестовый пример, а он тоже не работает. ЖЕСТЬ!!! Это же Yandex!!! Ребята постыдитесь!!! На собеседования ходил так там такие "умники" сидят, головоломки просят решить, а сами такую ерунду пишут.
ЖЕСТЬ!!! Установил в эмулятор apk Yandex Maps v3.20 заработал пример ))) Как сделать чтобы библиотека работала без Yandex Maps?
Всем привет, тоже была аналогичная проблема, 2 дня бился удалось решить вот каким способом
а папках libs вашего проекта и библиотеки должны быть одинаковые списки "типов процессоров", попросту говоря, если например в библиотеке есть только armeabi то в вашем проект в папке libs тоже должен остаться только armeabi (остальные папки удалить)
после удаления все прекрасно работает (эти папки появляются если вы используете нативные библиотеки - NDK)
может кому поможет...
Как подключить yandex карты к приложению в Android Studio ?