我想在我的应用程序中使用proguard,我启用它但是当我想生成apk文件时,它给了我这个错误:
Information:Gradle tasks [:app:assembleRelease] :app:preBuild UP-TO-DATE :app:preReleaseBuild UP-TO-DATE :app:checkReleaseManifest :app:preDebugBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE :app:prepareComAndroidSupportCardviewV72300Library UP-TO-DATE :app:prepareComAndroidSupportDesign2300Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72300Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE :app:prepareJpWasabeefRecyclerviewAnimators122Library UP-TO-DATE :app:prepareReleaseDependencies :app:compileReleaseAidl UP-TO-DATE :app:compileReleaseRenderscript UP-TO-DATE :app:generateReleaseBuildConfig UP-TO-DATE :app:generateReleaseAssets UP-TO-DATE :app:mergeReleaseAssets UP-TO-DATE :app:generateReleaseResValues UP-TO-DATE :app:generateReleaseResources UP-TO-DATE :app:mergeReleaseResources UP-TO-DATE :app:processReleaseManifest UP-TO-DATE :app:processReleaseResources UP-TO-DATE :app:generateReleaseSources UP-TO-DATE :app:processReleaseJavaRes UP-TO-DATE :app:compileReleaseJava UP-TO-DATE :app:compileReleaseNdk UP-TO-DATE :app:compileReleaseSources UP-TO-DATE :app:lintVitalRelease :app:proguardRelease Note: there were 7 duplicate class definitions. (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass) Warning:library class org.apache.http.conn.scheme.LayeredSocketFactory extends or implements program class org.apache.http.conn.scheme.SocketFactory Warning:org.acra.ErrorReporter: can't find referenced method 'void setLatestEventInfo(android.content.Context,java.lang.CharSequence,android.app.PendingIntent)' in library class android.app.Notification Warning:library class android.webkit.WebView depends on program class android.net.http.SslCertificate Warning:library class org.apache.http.conn.ssl.SSLSocketFactory depends on program class org.apache.http.conn.scheme.HostNameResolver Warning:library class org.apache.http.conn.ssl.SSLSocketFactory depends on program class org.apache.http.params.HttpParams Warning:library class org.apache.http.params.HttpConnectionParams depends on program class org.apache.http.params.HttpParams Warning:there were 17 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 1 unresolved references to library class members. You probably need to update the library versions. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember) :app:proguardRelease Failed Error:Execution Failed for task ':app:proguardRelease'. > java.io.IOException: Please correct the above warnings first.
我正在使用最新版本的sdk 23,这是我的gradle文件:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion '23.0.0' defaultConfig { applicationId "com.x.x" minSdkVersion 11 targetSdkVersion 23 } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' } } } dependencies { compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.android.support:recyclerview-v7:23.0.0' compile files('libs/acra-4.5.0.jar') compile files('libs/universal-image-loader-1.8.4-with-sources.jar') compile files('libs/org.apache.http.legacy.jar') compile 'com.android.support:cardview-v7:23.0.0' compile 'jp.wasabeef:recyclerview-animators:1.2.2' compile 'com.android.support:design:23.0.0' }
怎么了 ?我在这段代码中做错了什么?
谢谢
解决方法
只需在proguard上添加:
-keep class org.apache.http.** { *; } -dontwarn org.apache.http.** -dontwarn android.net.**