在调试版本中运行的添加行未在签名版本中运行

时间:2016-05-11 11:50:20

标签: android android-gradle

生成签名APK时出现奇怪的行为,在调试版本中运行的添加行未在签名版本中运行,我真的需要一些帮助。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "23.0.3"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 94
        versionName "2.4.40"
    }
    buildTypes {
        release {
            minifyEnabled false
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(
                    output.outputFile.parent,
                    "Build -${variant.versionName}.apk")
        }
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
    }
}

dependencies {
    compile fileTree(dir: 'libs')
    compile project(':SalesforceSDK')
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'org.roboguice:roboguice:2.0'
    compile 'com.android.support:support-v4:20.+'
    compile ('ch.acra:acra:4.5.0'){
        exclude group: 'org.json'
    }
}

我在服务中添加了几行,以测试值是否正确,但我能看到的是我添加的行根本没有运行。我修改了一条有效的日志行。

我更新的代码

protected <T extends ResponseItem> void functionName(BaseResponse<T> response, Uri uri) {
        Log.d(TAG, "saveOrUpdate"); // did not run

.
.
.
Log.v(getClass().getName(), "Processed one row. 1"); showed correctly with added "1"

.
.
.
}

1 个答案:

答案 0 :(得分:0)

这是因为您的ProGuard设置正在删除所有&#34; Log&#34; &#34;发布&#34;的功能你的版本的版本。

您应该检查您的ProGuard文件,看看您是否找到了类似于以下内容的内容:

-assumenosideeffects class android.util.Log {
   public static boolean isLoggable(java.lang.String, int);
   public static int v(...);
   public static int i(...);
   public static int w(...);
   public static int d(...);
   public static int e(...);
}

注意:请记住,您不应该在已签名的APK上发布日志输出,例如Google Play商店。