내 애플리케이션의 APK 생성에 문제가 있습니다.ProGuard minification을 사용하는 경우 Android Studio에서 APK를 만들 수 없습니다.
내가 디버깅/응용 프로그램을 실행하면 정상적으로 작동합니다. 내가 해당 APK를 생성 할 때, 안드로이드 스튜디오 나에게 경고를 많이하고 하나의 오류를 제공합니다 :
Note: there were 159 duplicate class definitions.
(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Warning:com.thoughtworks.xstream.converters.reflection.CGLIBEnhancedConverter$ReverseEngineeredCallbackFilter: can't find superclass or interface net.sf.cglib.proxy.CallbackFilter
Warning:org.apache.harmony.awt.datatransfer.DataProxy: can't find superclass or interface java.awt.datatransfer.Transferable
Warning:org.apache.harmony.awt.datatransfer.NativeClipboard: can't find superclass or interface java.awt.datatransfer.Clipboard
Warning:library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
Warning:library class org.apache.http.auth.AuthenticationException extends or implements program class org.apache.http.ProtocolException
[...]
Warning:library class org.apache.http.impl.conn.LoggingSessionOutputBuffer extends or implements program class org.apache.http.io.SessionOutputBuffer
Warning:com.itextpdf.testutils.ITextTest: can't find referenced class javax.management.OperationsException
Warning:com.itextpdf.text.pdf.BarcodeCodabar: can't find referenced class java.awt.Color
[...]
Warning:com.itextpdf.text.pdf.security.MakeXmlSignature: can't find referenced class javax.xml.crypto.dsig.spec.C14NMethodParameterSpec
[...]
Warning:com.sun.mail.handlers.image_gif: can't find referenced class java.awt.datatransfer.DataFlavor
[...]
Warning:com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl
[...]
Warning:com.thoughtworks.xstream.converters.extended.ColorConverter: can't find referenced class java.awt.Color
[...]
Warning:org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit
[...]
Warning:org.spongycastle.jce.provider.X509LDAPCertStoreSpi: can't find referenced class javax.naming.directory.InitialDirContext
[...]
Warning:library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser
[...]
Warning:library class org.apache.http.client.HttpClient depends on program class org.apache.http.HttpResponse
[...]
Warning:library class org.xmlpull.v1.XmlPullParserFactory depends on program class org.xmlpull.v1.XmlPullParser
Warning:there were 1077 unresolved references to classes or interfaces.
You may need to add missing library jars or update their versions.
If your code works fine without the missing classes, you can suppress
the warnings with '-dontwarn' options.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning:there were 141 instances of library classes depending on program classes.
You must avoid such dependencies, since the program classes will
be processed, while the library classes will remain unchanged.
(http://proguard.sourceforge.net/manual/troubleshooting.html#dependency)
Warning:there were 5 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
:vet:proguardInternalRelease FAILED
Error:Execution failed for task ':PROJECTNAME:proguardInternalRelease'.
> java.io.IOException: Please correct the above warnings first.
Information:BUILD FAILED
Information:Total time: 13.878 secs
Information:1 error
Information:679 warnings
Information:See complete output in console
프로젝트는 settings.gradle
이 같은 외부 프로젝트로 가져 오기, 라이브러리 프로젝트에 의해 형성된다 :
include ':library'
project(':library').projectDir = new File(settingsDir, '../Library/library')
모든 종속성이 있습니다. 그래서 APK 컴파일 할 수 있습니다 어떻게 그것을 해결합니까 라이브러리의
build.gradle
는
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 21
multiDexEnabled true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:support-v13:21.0.+'
compile 'com.android.support:multidex:1.0.0'
compile('ch.acra:acra:4.5.0') {
exclude group: 'org.json'
}
compile 'org.apache.httpcomponents:httpcore:4.3'
compile('org.apache.httpcomponents:httpmime:4.3.1') {
exclude group: 'org.apache.httpcomponents', module: 'httpcore'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
compile('javax.mail:mail:1.4.7') {
exclude module: 'activation'
}
compile 'com.madgag.spongycastle:pkix:1.50.0.0'
compile 'org.ccil.cowan.tagsoup:tagsoup:1.2.1'
compile ('com.itextpdf.tool:xmlworker:5.5.1'){
exclude module: 'itextpdf'
}
compile('com.thoughtworks.xstream:xstream:1.4.4') {
exclude group: 'xmlpull', module: 'xmlpull'
}
compile 'com.google.zxing:core:3.0.1'
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
compile files('libs/miniTemplator.jar')
compile files('libs/itextg-5.5.1.jar')
}
하고 프로젝트 build.gradle
는
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "my.package.name"
minSdkVersion 15
targetSdkVersion 21
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
def BOOLEAN = "boolean"
def TRUE = "true"
def FALSE = "false"
def A_FIELD= "A_FIELD"
internal {
buildConfigField BOOLEAN, A_FIELD, FALSE
}
official {
buildConfigField BOOLEAN, A_FIELD, TRUE
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile project(':library')
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
}
}
입니까?
EDIT : 내 proguard-rules.pro에 -dontwarn 옵션을 많이 추가 한 후에 어쨌든 오류가 발생하고 이러한 경고를 해결할 수 없습니다 (Here). 이러한 경고는 없습니다. .) :
Warning:com.itextpdf.text.pdf.security.PdfPKCS7: can't find referenced method 'ASN1Integer(int)' in program class org.spongycastle.asn1.ASN1Integer
Warning:com.sun.activation.viewers.ImageViewer: can't find referenced method 'java.awt.Component add(java.awt.Component)' in program class com.sun.activation.viewers.ImageViewer
Warning:com.sun.activation.viewers.ImageViewer: can't find referenced method 'java.awt.Toolkit getToolkit()' in program class com.sun.activation.viewers.ImageViewer
Warning:com.sun.activation.viewers.ImageViewer: can't find referenced method 'void invalidate()' in program class com.sun.activation.viewers.ImageViewer
Warning:com.sun.activation.viewers.ImageViewer: can't find referenced method 'void validate()' in program class com.sun.activation.viewers.ImageViewer
Warning:com.sun.activation.viewers.ImageViewer: can't find referenced method 'void doLayout()' in program class com.sun.activation.viewers.ImageViewer
Warning:com.sun.activation.viewers.ImageViewerCanvas: can't find referenced method 'void invalidate()' in program class com.sun.activation.viewers.ImageViewerCanvas
Warning:com.sun.activation.viewers.ImageViewerCanvas: can't find referenced method 'void repaint()' in program class com.sun.activation.viewers.ImageViewerCanvas
Warning:com.sun.activation.viewers.TextEditor: can't find referenced method 'void setLayout(java.awt.LayoutManager)' in program class com.sun.activation.viewers.TextEditor
Warning:com.sun.activation.viewers.TextEditor: can't find referenced method 'void invalidate()' in program class com.sun.activation.viewers.TextEditor
Warning:com.sun.activation.viewers.TextViewer: can't find referenced method 'void setLayout(java.awt.LayoutManager)' in program class com.sun.activation.viewers.TextViewer
Warning:com.sun.activation.viewers.TextViewer: can't find referenced method 'java.awt.Component add(java.awt.Component)' in program class com.sun.activation.viewers.TextViewer
Warning:com.sun.activation.viewers.TextViewer: can't find referenced method 'void invalidate()' in program class com.sun.activation.viewers.TextViewer
Warning:javax.activation.ActivationDataFlavor: can't find referenced method 'boolean isMimeTypeEqual(java.awt.datatransfer.DataFlavor)' in program class javax.activation.ActivationDataFlavor
Warning:there were 14 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
:vet:proguardInternalRelease FAILED
Error:Execution failed for task ':vet:proguardInternalRelease'.
> java.io.IOException: Please correct the above warnings first.
http://proguard.sourceforge.net/manual/troubleshooting.html에 대한 경고/오류 메시지를 확인하십시오. –
귀하의 링크를 따라 proguard-rules.pro에서 -dontwarn 옵션을 많이 추가했지만 경고가 없더라도 어쨌든 오류가 발생했습니다 ... 질문을 업데이트했습니다 ... – Garro88