ParseApacheHttpClient与Android棉花糖的问题:can';找不到引用的方法SSLSocketFactory.getHttpSocketFactory
我正在我的Android应用程序中使用Android棉花糖支持,但我有一些依赖项,它们使用的是不推荐的(包括解析) 根据建议,我添加了:ParseApacheHttpClient与Android棉花糖的问题:can';找不到引用的方法SSLSocketFactory.getHttpSocketFactory,android,parse-platform,Android,Parse Platform,我正在我的Android应用程序中使用Android棉花糖支持,但我有一些依赖项,它们使用的是不推荐的(包括解析) 根据建议,我添加了: useLibrary 'org.apache.http.legacy' 在我的app/build.gradle中,但我仍然无法编译apk: :app:compileFreeStoreDebugJavaWithJavac UP-TO-DATE :app:compileRetrolambdaFreeStoreDebug UP-TO-DATE :app:compi
useLibrary 'org.apache.http.legacy'
在我的app/build.gradle中,但我仍然无法编译apk:
:app:compileFreeStoreDebugJavaWithJavac UP-TO-DATE
:app:compileRetrolambdaFreeStoreDebug UP-TO-DATE
:app:compileFreeStoreDebugSources UP-TO-DATE
:app:proguardFreeStoreDebug
Note: there were 7 duplicate class definitions.
(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Warning: com.parse.ParseApacheHttpClient: can't find referenced method 'org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int,android.net.SSLSessionCache)' in library class android.net.SSLCertificateSocketFactory
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)
Exception while processing task
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:473)
at proguard.ProGuard.initialize(ProGuard.java:233)
at proguard.ProGuard.execute(ProGuard.java:98)
at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074)
at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139)
at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115)
at com.android.builder.tasks.Job.runTask(Job.java:48)
at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)
at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227)
at java.lang.Thread.run(Thread.java:745)
谢谢。此问题分两部分解决:
-dontwarn android.net.SSLCertificateSocketFactory
1-Apache库 Android-M取消了对Apache HTTP库的支持。正如问题中提到的,修复方法是通过更新build.gradle来使用遗留的支持JAR。下面是更具上下文的代码:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
useLibrary 'org.apache.http.legacy'
....
}
2-更新ProGuard配置 实际错误来自ProGuard,当它试图处理Parse.com时
Warning: com.parse.ParseApacheHttpClient:
can't find referenced method 'org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int,android.net.SSLSessionCache)'
in library class android.net.SSLCertificateSocketFactory
Parse现在是开源的,因此检查问题会在GitHub上显示此页面:
-keepattributes *Annotation*
-keepattributes Signature
-dontwarn android.net.SSLCertificateSocketFactory
-dontwarn android.app.Notification
-dontwarn com.squareup.**
-dontwarn okio.**
如中所述,忽略警告是安全的,因为这些类仅在仍然包含所述类的Android版本上使用。您确定
usebrary
语句位于正确位置吗?我用它来支持传统的apache,一切都很好。它应该在Android块中的模块.gradle
文件中。您能找到解决方案吗?