11/11/2018: Обновлено с учетом реальной причины и исправления
Эта проблема не давала мне покоя, пока я случайно не наткнулся на эту проблему на странице Okio GitHub.
Оказывается, что в моем случае эта проблема была вызвана комбинацией вещей:
Okio 2.1.0
+ AGP >= 3.2.0
+ ProGuard (<6.1.0-beta1) with optimizations
= Infinite execution of optimization step (build never finishes)
Если вы должны были принятьиз любой части этого уравнения все будет работать нормально.
Возможные решения в деталях:
- Используйте Okio 2.0.0 или 1.xx
- Придерживайтесь AGP 3.1.4 или более ранней версии.
- Отключите оптимизацию с флагом
-dontoptimize
в конфигурации ProGuard. - Используйте R8 вместо ProGuard:
- Для AGP3.2.x: добавьте
android.enableR8=true
к вашим gradle.properties. - Для AGP 3.3.x: R8 включен по умолчанию. Примечание: Вы можете использовать любой AGP> = 3.3.0-alpha01, но рекомендуется самое последнее (на данный момент это 3.3.0-beta03).
У каждого решения есть свои недостатки, но наиболее удобными для производства являются ( 1 ), использующие более ранние версии Okio, если вам специально не нужен v.2.1.0, или ( 3 ) отключение оптимизаций, если вы можете позволить себе иметь немного больший APK.
ОБНОВЛЕНИЕ: Проблема подтверждена из-за ProGuard и исправлена в последней бета-версии.Не ясно, когда эта версия будет включена в AGP по умолчанию, но вы можете использовать ее прямо сейчас на свой страх и риск (учитывая, что она все еще находится в бета-версии):
buildscript {
configurations.all {
resolutionStrategy {
force 'net.sf.proguard:proguard-gradle:6.1.0beta1'
}
}
}