保护行号发行

问题描述 投票:0回答:1

我遇到了一个与保镖有关的问题。在我的proguard-rules.pro中,我已经设置了保持行号:

# Keep line numbers
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

并且在我的build.gradle中,同时打开了minifyEnabledebugrelease

buildTypes {
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'google-api-client.pro'

            signingConfig signingConfigs.debug

            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'google-api-client.pro'

            signingConfig signingConfigs.release

            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
    }

但是当我崩溃时,Debug输出行号是正确的,但是发布行号是错误的。这是使用minifyEnable进行调试的日志,行号正确:

java.lang.NullPointerException: Attempt to invoke a virtual method on a null object reference
        at com.frontrow.vlog.ui.personalpage.PersonalPageFragment.musicClicked(SourceFile:952) // The line number is the right position at my source code.
        at com.frontrow.vlog.ui.personalpage.PersonalPageFragment_ViewBinding$e.a(SourceFile:244)
        at butterknife.internal.b.onClick(SourceFile:18)

但是使用minifyEnable发行时行号不正确是错误的,

java.lang.NullPointerException: Attempt to invoke a virtual method on a null object reference
        at com.frontrow.vlog.ui.personalpage.PersonalPageFragment.musicClicked(SourceFile:1) // The line number is error.
        at com.frontrow.vlog.ui.personalpage.PersonalPageFragment_ViewBinding$e.a(SourceFile:1)
        at butterknife.internal.b.onClick(SourceFile:4)

如何解决此问题,以使发布输出可以使用正确的行号?

android proguard
1个回答
0
投票

嗯,我知道这是R8问题。我在android.enableR8=false中设置了gradle.properties,并且行号正确。似乎gradle版本大于3.4.0,它将默认打开r8。

© www.soinside.com 2019 - 2024. All rights reserved.