Proguard 在 Android Studio 中构建。出现错误
proguard build in Android Studio. Getting error
我正在尝试在 android studio 中为我的发布版本配置混淆器,但我收到以下错误和警告:
错误:任务“:myAccount_S:proguardRelease”执行失败。
java.io.IOException: Can't write [C:\Users\mgi\AndroidStudioProjects\MyProjects\myAccount_S\build\intermediates\classes-proguard\release\classes.jar] (Can't read [C:\Users\mgi\AndroidStudioProjects\MyAccountProjects\myAccount_S\build\intermediates\exploded-aar\MyAccountProjects\myLibrary\unspecified\libs\PushTracker-1.3.0-tracfone.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [PushTracker-1.3.0-tracfone.jar:com/mgage/push/tracker/PushManager.class]))
:myAccount_S:proguardRelease FAILED
Warning:can't write resource [META-INF/NOTICE] (Duplicate zip entry [jackson-databind-2.2.3.jar:META-INF/NOTICE])
Warning:can't write resource [META-INF/LICENSE] (Duplicate zip entry [jackson-databind-2.2.3.jar:META-INF/LICENSE])
gradle:</p>
<pre><code>buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/MANIFEST'
}
依赖关系 {
compile project(':facebookSDK')
compile 'com.android.support:support-v4:19.1.0'
compile 'com.android.support:appcompat-v7:19.1.0'
compile 'com.google.android.gms:play-services:6.5.87'
compile files('libs/BxLibrary-1.4.14.jar')
compile files('libs/commons-io-1.3.2.jar')
compile files('libs/jackson-annotations-2.2.3.jar')
compile files('libs/jackson-core-2.2.3.jar')
compile files('libs/jackson-databind-2.2.3.jar')
compile files('libs/libGoogleAnalyticsServices.jar')
compile files('libs/PushTracker-1.3.0.jar')
compile files('libs/robospice-1.4.14.jar')
compile files('libs/robospice-cache-1.4.14.jar')
}
看来是LICENSE、NOTICE等文件冲突导致的问题。不要排除,而是检查这样的事情是否解决了问题:
packagingOptions {
pickFirst 'META-INF/NOTICE'
pickFirst 'META-INF/LICENSE'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/LICENSE.txt'
pickFirst 'META-INF/NOTICE.txt'
pickFirst 'META-INF/MANIFEST'
}
只有当 jackson-databind-2.2.3.jar 被超过 1 个项目使用时才会出现这种情况。唯一的解决办法是要么使用 maven 中央存储库,要么创建第三个项目并将其用作项目中使用 jackson-databind-2.2.3.jar 之前的依赖项。
我正在尝试在 android studio 中为我的发布版本配置混淆器,但我收到以下错误和警告:
错误:任务“:myAccount_S:proguardRelease”执行失败。
java.io.IOException: Can't write [C:\Users\mgi\AndroidStudioProjects\MyProjects\myAccount_S\build\intermediates\classes-proguard\release\classes.jar] (Can't read [C:\Users\mgi\AndroidStudioProjects\MyAccountProjects\myAccount_S\build\intermediates\exploded-aar\MyAccountProjects\myLibrary\unspecified\libs\PushTracker-1.3.0-tracfone.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [PushTracker-1.3.0-tracfone.jar:com/mgage/push/tracker/PushManager.class])) :myAccount_S:proguardRelease FAILED Warning:can't write resource [META-INF/NOTICE] (Duplicate zip entry [jackson-databind-2.2.3.jar:META-INF/NOTICE]) Warning:can't write resource [META-INF/LICENSE] (Duplicate zip entry [jackson-databind-2.2.3.jar:META-INF/LICENSE])
gradle:</p>
<pre><code>buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/MANIFEST'
}
依赖关系 {
compile project(':facebookSDK') compile 'com.android.support:support-v4:19.1.0' compile 'com.android.support:appcompat-v7:19.1.0' compile 'com.google.android.gms:play-services:6.5.87' compile files('libs/BxLibrary-1.4.14.jar') compile files('libs/commons-io-1.3.2.jar') compile files('libs/jackson-annotations-2.2.3.jar') compile files('libs/jackson-core-2.2.3.jar') compile files('libs/jackson-databind-2.2.3.jar') compile files('libs/libGoogleAnalyticsServices.jar') compile files('libs/PushTracker-1.3.0.jar') compile files('libs/robospice-1.4.14.jar') compile files('libs/robospice-cache-1.4.14.jar')
}
看来是LICENSE、NOTICE等文件冲突导致的问题。不要排除,而是检查这样的事情是否解决了问题:
packagingOptions {
pickFirst 'META-INF/NOTICE'
pickFirst 'META-INF/LICENSE'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/LICENSE.txt'
pickFirst 'META-INF/NOTICE.txt'
pickFirst 'META-INF/MANIFEST'
}
只有当 jackson-databind-2.2.3.jar 被超过 1 个项目使用时才会出现这种情况。唯一的解决办法是要么使用 maven 中央存储库,要么创建第三个项目并将其用作项目中使用 jackson-databind-2.2.3.jar 之前的依赖项。