2016-11-18 57 views
3

我們已經切換到我們的Android應用程序的Jack編譯器以利用Java8功能。 但是,當我們啓用縮小(minifyEnabled true)時,我們看到我們的應用程序崩潰在看似隨機的地方(它與舊的javac + proguard + dex都工作正常)。使用Jack編譯器無行號(例如Log.getStackTraceString)

爲了節省時間,現在我們決定禁用縮小,但現在我們遇到的問題是我們的錯誤報告庫將所有調用堆棧報告爲未知行號。我也證實,我們得到了與Log.getStackTraceString

E.g.

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

,似乎給我們我們的調用堆棧回來的唯一的事情就是啓用調試(debuggable true),但我們不能提交我們的應用程序一樣,進店。

任何想法?

回答

1

原來的搖籃插件驅動傑克如下:

如果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

相關問題