簡體   English   中英

使用Jack編譯器沒有行號(例如對於Log.getStackTraceString)

[英]no line numbers (e.g. for Log.getStackTraceString) with Jack compiler

我們已經切換到我們的Android應用程序的Jack編譯器,以利用Java8功能。 然而,當我們啟用縮小( minifyEnabled true )時,我們看到我們的應用程序在看似隨機的地方崩潰(它與舊的javac + proguard + dex一起工作正常)。

為了節省時間,我們決定禁用縮小,但現在我們遇到的問題是我們的錯誤報告庫將所有callstack報告為未知行號。 我還確認我們使用Log.getStackTraceString得到了相同的破壞堆棧跟蹤

例如

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

似乎只給我們回調函數的唯一一件事就是啟用debug( debuggable true ),但是我們無法將這樣的應用程序提交到商店中。

有任何想法嗎?

事實證明,Gradle插件驅動Jack如下:

如果debug版本保留源+行信息
如果non-debug剝離所有源+行信息

要解決這個問題,您可以明確要求Jack保留源/行信息(在您的gradle文件中):

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

注意:參數的值必須是一個字符串!

您可以獲得Jack支持的所有有效參數,如下所示:

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

更多信息( https://code.google.com/p/android/issues/detail?id=228093

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM