2016-11-18 8 views
3

Мы перешли к компилятору Jack для нашего приложения для Android, чтобы воспользоваться возможностями Java8. Однако, когда мы включили minification (minifyEnabled true), мы увидели, что наше приложение разбилось в казалось бы случайных местах (все было хорошо работает со старым javac + proguard + dex).номера строк (например, для Log.getStackTraceString) с компилятором Jack

Чтобы сэкономить время, мы решили отключить минимизацию, но теперь проблема, с которой мы столкнулись сейчас, заключается в том, что наша библиотека отчетов об ошибках сообщает обо всех вызовах как неизвестные номера строк. Я также подтвердил, что мы получаем одну и ту же разбитую трассировку стека с Log.getStackTraceString

E.g.

com.foo.android.bar: XXX 
at com.foo.android.bar.quax(Unknown Source) 

Единственное, что, кажется, дает нам наш стек вызовов обратно, чтобы включить отладку (debuggable true), но мы не можем представить наше приложение, как это в магазине.

Любые идеи?

ответ

1

Оказывается, что плагин Gradle дисков Джека следующим образом:

если debug сборки держать источник + линия информация
если non-debug полоса всего источника + линия информации

работать вокруг этого вы можете явно задать Джек сохранить информацию источника/линии, как так (в вашем Gradle файле):

jackOptions { 
    enabled true 
    additionalParameters(
     "jack.dex.debug.lines": "true", 
     "jack.dex.debug.source": "true") 
} 

Примечание: что значение аргумента ДОЛЖЕН быть строкой!

Вы можете получить все допустимые параметры Джек поддерживает так:

java -jar <SDK>/build-tools/<build-tools-version>/jack.jar --help-properties 

еще некоторая информация (https://code.google.com/p/android/issues/detail?id=228093)