코드를 연구하고 싶기 때문에 github 리포지토리를 복제했지만 Android Studio에서 빌드하려고 할 때 약간의 문제가 발생했습니다. Google Maven 저장소를 추가하고 (Android Studio에서 프롬프트 한대로) Gradle Plugin 버전 및 Grade 버전 (각각 3.5.2 및 5.4.1)을 업데이트 한 후 다음 오류로 인해 빌드가 실패합니다.
원인 : 중복 된 항목 : META-INF / MANIFEST.MF
그리고 이것은 더 구체적입니다.
원인 : java.util.zip.ZipException : 중복 항목 : META-INF / MANIFEST.MF
내 프로젝트 레벨 build.gradle 파일은 다음과 같습니다.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven {
url 'https://maven.google.com'
}
}
}
다음은 내 모듈 build.gradle 파일입니다 (아무것도 시도하기 전에).
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.thelittlenaruto.supportdesignexample"
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation ('com.android.support:appcompat-v7:22.2.1')
implementation ('com.android.support:design:22.2.1')
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
}
지금까지 시도한 내용은 다음과 같습니다.
- 내 모듈 build.gradle 파일의 android 섹션에 다음을 추가하십시오.
sourceSets {
main{
java{
exclude '**/META-INF/MANIFEST'
exclude '**/META-INF/MANIFEST.MF'
exclude 'META-INF/MANIFEST'
exclude 'META-INF/MANIFEST.MF'
exclude '!META-INF/MANIFEST.MF'
}
}
}
- 이것을 추가 :
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
- 또한 이것 :
packagingOptions {
apply plugin: 'project-report'
exclude '**/META-INF/MANIFEST'
exclude '**/META-INF/MANIFEST.MF'
exclude 'META-INF/MANIFEST'
exclude 'META-INF/MANIFEST.MF'
exclude '!META-INF/MANIFEST.MF'
}
- 이:
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
- 이:
aaptOptions {
ignoreAssetsPattern "!META-INF/MANIFEST.MF"
ignoreAssetsPattern "META-INF/MANIFEST.MF"
}
나는이 질문에서 주로 모든 것을 시도했다고 생각
합니다 .Android Studio gradle 빌드에서 특정 파일을 제외하는 방법은 무엇입니까?
아무것도 효과가 없었습니다.
솔루션을 검색 한 후 문제가 중복 된 종속성이라고 생각합니다. 그래서 나는 다음을 시도했다.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation ('com.android.support:appcompat-v7:22.2.1'){
exclude module: 'support-v4'
}
implementation ('com.android.support:design:22.2.1')
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
}
이:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation ('com.android.support:design:22.2.1'){
exclude module: 'support-v7'
}
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
}
여전히 같은 오류가 발생합니다.
아무도 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 기대 감사합니다. 🙂
답변
으로 Rajen Raiyarela가 말했다, 파일 -> 프로젝트 구조 -> 프로젝트 -> 안드로이드 Gradle을 플러그인 버전으로 이동하여 3.5.2에서 3.5.1로 다운 그레이드.
답변
프로젝트 종속성 을 다음으로 설정하십시오 .
classpath 'com.android.tools.build:gradle:3.5.3'
또는 최신 것.
참고 : 이렇게하면 내 문제가 해결되었습니다.
답변
이 문제는 중복 종속성으로 인해 발생합니다.
Gradle 앱에서 여러 종속성을 확인하십시오.
답변
한 번만 포장하거나 전혀 포장하지 마십시오.
android {
packagingOptions {
pickFirst "META-INF/MANIFEST.MF"
// exclude "META-INF/MANIFEST.MF"
}
}