9

Я написал приложение для Android, которое отлично работало до сих пор. Затем я добавил функции для облачных сообщений Google (GCM). Я использовал демонстрационный проект от Google, который, кажется, добавил аналитику и индексацию приложений и т. Д.Android-приложение, начиная с медленного - dex2oat Zip отсутствует. Отменено - Gradle 2.10

Теперь, начиная приложение, работает по назначению, но занимает много времени. В журнале показано много сообщений:

I/dex2oat: ---------------------------------------------------- 
I/dex2oat: <SS>: S T A R T I N G . . . 
I/dex2oat: <SS>: Zip is absent. Canceled. 
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-measurement-8.4.0_d76b40d326ea93493481fa158b18846c1c4627dd-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-measurement-8.4.0_d76b40d326ea93493481fa158b18846c1c4627dd-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m 
I/dex2oat: dex2oat took 288.616ms (threads: 4) 
I/dex2oat: ---------------------------------------------------- 
I/dex2oat: <SS>: S T A R T I N G . . . 
I/dex2oat: <SS>: Zip is absent. Canceled. 
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-maps-8.4.0_36e4d7c4ee371ae72ff4fba4383d7535cc7f3d3a-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-maps-8.4.0_36e4d7c4ee371ae72ff4fba4383d7535cc7f3d3a-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m 
I/dex2oat: dex2oat took 321.095ms (threads: 4) 
I/dex2oat: ---------------------------------------------------- 
I/dex2oat: <SS>: S T A R T I N G . . . 
I/dex2oat: <SS>: Zip is absent. Canceled. 
I/dex2oat: /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/world.b2g.b2gether/files/instant-run/dex/slice-com.google.android.gms-play-services-location-8.4.0_298f1e5056d6eea423c13052ef0c9136963ce27b-classes.dex --oat-fd=29 --art-fd=-1 --oat-location=/data/data/world.b2g.b2gether/cache/slice-com.google.android.gms-play-services-location-8.4.0_298f1e5056d6eea423c13052ef0c9136963ce27b-classes.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m 
I/dex2oat: dex2oat took 298.720ms (threads: 4) 
I/dex2oat: ---------------------------------------------------- 
... 

Похоже, что пакетов нет. Поскольку мне не нужны какие-либо из этих функций (кроме карт и GCM), я отключил опции для Google Analytics, Authentication ... в Android Studio. Тем не менее, эти сообщения все еще появляются.

Возможно, это связано с тем, что я применяю службы в файле build.gradle?

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile files('libs/greendao-2.1.0.jar') 
    compile project(':volley') 
    compile 'com.android.support:support-v13:23.3.0' 
    compile 'com.android.support:recyclerview-v7:23.3.0' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.google.android.gms:play-services-gcm:8.4.0' 
    compile 'com.google.android.gms:play-services-maps:8.4.0' 
    compile 'com.google.android.gms:play-services-location:8.4.0' 
} 

apply plugin: 'com.google.gms.google-services' 

В приложении Gradle конфигурации я также написал

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.0.0' 
     classpath 'com.google.gms:google-services:2.0.0' 
    } 
} 

-------------------------- EDIT : --------------------------

Оказывается, это, кажется, вина Gradle в

Я проследил проблему немного вернусь к точке, когда я обновился до новой Android Studio. В какой-то момент мне пришлось переключиться с Gradle 2.8 на Gradle 2.10. Если я изменю его на Gradle 2.8, эта проблема исчезнет. К сожалению, Android Studio говорит, что мне нужно обновить до 2.10.

И что я могу сделать?

----------------------- EDIT 07.June.2016: -------------- ---------

похоже, с новым обновлением для Android Studio 2.1.2 эта ошибка исправлена ​​(или, по крайней мере, я не вижу, это сообщение больше)

+0

'compile 'com.google.android.gms: play-services: 8.4.0' 'Почти никогда не рекомендуется включать всю библиотеку игровых сервисов, почему вы это делаете? Кроме того, вы уже, кажется, включаете частичные библиотеки, которые вам нужны –

+0

Он был включен таким образом в пример проекта из Google. Я могу проверить это снова. Так что я должен удалить это из класса, а также в зависимости от градиента? classpath 'com.google.gms: google-services: 2.0.0-beta6' –

+1

Вам нужна ссылка в пути к классам, а также 'apply plugin', но вам не нужен компилятор com.google.android. gms: play-services: 8.4.0'', также почему вы вручную отредактировали созданный json-файл? –

ответ

11

Наконец Я нашел ответ. Проблема была действительно Грейдл. Но не сама новая версия. Гораздо больше создается инстанс.

То, что я узнал:

Проблема, кажется, что с включенной Instant Run не могут быть найдены некоторые «кусочки» для рамок. Это также влияет на телефон при запуске приложения независимо от компилятора (например, начиная с помощью App Drawer). Похоже, что уже скомпилированные библиотеки необходимо снова искать/связывать/скомпилировать. Причина, по которой это происходит только с Gradle 2.10 или выше, не была самой версией, а просто, что Gradle 2.8 не поддерживает новую функцию.

Решение:

Пока лучшая работа вокруг было деактивировать funcionality в:

Настройки/сборки, выполнения, развертывание/Instant Run -> Включить Instant Run для горячего кода подкачки

>> EDIT: Все еще обновление для Android Studio 2.1, похоже, не исправляет эту проблему для меня.

enter image description here

+0

Instant Run с GCM и PS запустил время запуска приложений слишком медленно. :/ –

+0

Возможно, вы можете взглянуть на журнал и посмотреть, есть ли у вас те же проблемы с dex2oat, что и я. Вы не найдете его в «выбранном приложении», хотя посмотрите на правильный фильтр. –

+0

Нет. В моем случае он висит на огромной линии, начинающейся как «I/InstantRun: инкрементный путь dex/...' В системе нет специальных строк журнала. –

-1

Я также столкнулся с этой проблемой. Скорость загрузки моего приложения слишком низкая. Я проверил логарифм ниже. I/dex2oat: dex2oat взял 288.616ms После того, как я снял флажок в поле, которое автор упомянул, проблема решена.