Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Jack编译器时没有行号(例如用于Log.getStackTraceString)_Android_Dex_Android Jack And Jill_Jack Compiler - Fatal编程技术网

Android 使用Jack编译器时没有行号(例如用于Log.getStackTraceString)

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),但我

我们已经为Android应用程序切换到Jack编译器,以利用Java8的特性。 然而,当我们启用缩小功能(
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