安卓工作室 3.2.当 buildType = release -> 错误时:commons-logging 定义了与 Android 现在提供的类冲突的类



Android Studio 3.2

在我的项目/app.build.gradle:中

dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'

在我的应用程序/build.gradle 中

apply plugin: 'com.android.application'
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(rootProject.file("app/keystore.properties")))
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.myproject"
minSdkVersion 15
targetSdkVersion 28
versionCode 421
versionName "2.1.421"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// to fix problem when annotation not build on release
javaCompileOptions {
annotationProcessorOptions {
arguments = ['resourcePackageName': "com.myproject"]
}
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
signingConfigs {
release {
keyAlias keystoreProperties['KEY_ALIAS_RELEASE']
keyPassword keystoreProperties['KEY_PASSWORD_RELEASE']
storeFile file(keystoreProperties['STORE_FILE_RELEASE'])
storePassword keystoreProperties['STORE_PASSWORD_RELEASE']
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
configBuildType(delegate, "Release instance name", "Release app name", "beta")
signingConfig signingConfigs.release
}
debug {
configBuildType(delegate, "Debug name instance", "Debug name, null)
ext.betaDistributionReleaseNotes = defaultConfig.versionName + " " + name
ext.betaDistributionEmailsFilePath = "app/beta_distribution_emails.txt"
}
} 
}
def configBuildType(buildType, instanceName, appName, appIdSuffix) {   
buildType.resValue("string", "app_name", appName)
buildType.applicationIdSuffix(appIdSuffix)
buildType.buildConfigField("String", "INSTANCE_NAME", instanceName)
}
// must be version 4.5.2
def AAVersion = '4.5.2'
dependencies {
annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
annotationProcessor "org.androidannotations:ormlite:$AAVersion"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'org.apache.commons:commons-lang3:3.8.1'
implementation 'org.apache.httpcomponents:httpclient:4.5.6'
// https://mvnrepository.com/artifact/commons-codec/commons-codec
implementation group: 'commons-codec', name: 'commons-codec', version: '1.11'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.j256.ormlite:ormlite-android:5.1'
implementation 'commons-io:commons-io:2.6'
implementation "org.androidannotations:androidannotations-api:$AAVersion"
implementation "org.androidannotations:ormlite-api:$AAVersion"   
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

buildType = debug项目成功构建并运行时。美好的但当buildType = release出现错误时:

:app:compileReleaseSources
:app:lintVitalReleaseD:myprojectapp: Error: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]
D:myprojectapp: Error: httpclient defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]
Explanation for issues of type "DuplicatePlatformClasses":
There are a number of libraries that duplicate not just functionality of
the Android platform but using the exact same class names as the ones
provided in Android -- for example the apache http classes. This can lead
to unexpected crashes.
To solve this, you need to either find a newer version of the library which
no longer has this problem, or to repackage the library (and all of its
dependencies) using something like the jarjar tool, or finally, rewriting
the code to use different APIs (for example, for http code, consider using
HttpUrlConnection or a library like okhttp).
2 errors, 0 warnings
FAILED
FAILURE: Build failed with an exception.

添加到您的应用程序/build.gradle

configurations {
all {
exclude module: 'commons-logging'
}
}

最新更新