pgr*_*eze 13 android parse-platform
我正在Android Android应用程序中使用Android Marshmallow支持,但我有依赖项,它们使用不推荐使用的Apache HTTP客户端(包括Parse).
按照这里的建议,我补充说:
useLibrary 'org.apache.http.legacy'
Run Code Online (Sandbox Code Playgroud)
在我的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)
Run Code Online (Sandbox Code Playgroud)
谢谢.
Ric*_*ier 10
这个问题分为两部分:
为了完整起见,我将在下面的两个部分进行说明.
对于那些寻求快速修复的人来说,解决方案是将以下行添加到ProGuard配置文件中:
-dontwarn android.net.SSLCertificateSocketFactory
Run Code Online (Sandbox Code Playgroud)
Android-M删除了对Apache HTTP库的支持.如问题中所述,修复方法是通过更新build.gradle来使用旧版支持JAR.这是具有更多上下文的代码:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
useLibrary 'org.apache.http.legacy'
....
}
Run Code Online (Sandbox Code Playgroud)
当ProGuard尝试处理Parse.com时,实际错误来自ProGuard.
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
Run Code Online (Sandbox Code Playgroud)
Parse现在是开源的,所以检查问题会在GitHub上显示这个页面:
讨论解释说这只是一个ProGuard配置项,可以通过根据相关问题更新配置来安全地修复:
以下是更改(第3行修复了我们的问题,第4行修复了相关问题):
-keepattributes *Annotation*
-keepattributes Signature
-dontwarn android.net.SSLCertificateSocketFactory
-dontwarn android.app.Notification
-dontwarn com.squareup.**
-dontwarn okio.**
Run Code Online (Sandbox Code Playgroud)
如本评论中所述,忽略警告是安全的,因为这些类仅用于仍包含所提及类的Android版本.
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |