Android 使用Jack编译器时没有行号(例如用于Log.getStackTraceString)
我们已经为Android应用程序切换到Jack编译器,以利用Java8的特性。 然而,当我们启用缩小功能(Android 使用Jack编译器时没有行号(例如用于Log.getStackTraceString),android,dex,android-jack-and-jill,jack-compiler,Android,Dex,Android Jack And Jill,Jack Compiler,我们已经为Android应用程序切换到Jack编译器,以利用Java8的特性。 然而,当我们启用缩小功能(minifyEnabled true)时,我们看到我们的应用程序在看似随机的地方崩溃了(使用旧的javac+proguard+dex时一切正常) 为了节省时间,我们决定禁用缩小功能,但现在遇到的问题是,我们的错误报告库将所有调用堆栈报告为未知行号。我还确认,我们使用Log.getStackTraceString 例如 唯一能让我们返回调用堆栈的是启用调试(debugable true),但我
minifyEnabled true
)时,我们看到我们的应用程序在看似随机的地方崩溃了(使用旧的javac+proguard+dex时一切正常)
为了节省时间,我们决定禁用缩小功能,但现在遇到的问题是,我们的错误报告库将所有调用堆栈报告为未知行号。我还确认,我们使用Log.getStackTraceString
例如
唯一能让我们返回调用堆栈的是启用调试(debugable true
),但我们不能将这样的应用程序提交到应用商店中
有什么想法吗?原来Gradle插件驱动Jack的方式如下: 如果
debug
build,则保留源代码+行信息如果
非调试
删除所有源代码+行信息
为了解决这个问题,您可以明确要求Jack保留源代码/行信息,如下所示(在您的gradle文件中):
注意:参数的值必须是字符串
您可以获得插孔支持的所有有效参数,如下所示:
java -jar <SDK>/build-tools/<build-tools-version>/jack.jar --help-properties
java-jar/buildtools//jack.jar——帮助属性
更多信息()
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