生成签名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"
.
.
.
}
这是因为您的ProGuard设置正在删除构建的"Release"版本的所有"Log"函数。
你应该检查你的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(...);
}
注意:请记住,您不应该将Signed APK上的日志输出发布到例如Google Play Store。