Fin*_*ive 8 java android jenkins retrofit okhttp
我为我正在研究的一个功能介绍了以下Square广口瓶:
我从中央maven repo下载了这些.
一切都在本地工作正常,我将我的代码提交给svn.我们有一个Jenkins CI服务器,可以生成我们的调试和发布版本.这失败了.
我的本地环境与Jenkins之间存在许多差异:
这些是我在Jenkins日志中看到的那类问题:
-compile:
[javac] Compiling 545 source files to /var/lib/jenkins/jobs/Planner_4_10_Retrofit/workspace/Planner_4_10_Retrofit/bin/classes
[javac] warning: /var/lib/jenkins/jobs/Planner_4_10_Retrofit/workspace/Planner_4_10_Retrofit/libs/okhttp-2.0.0.jar(com/squareup/okhttp/OkHttpClient.class): major version 51 is newer than 50, the highest major version supported by this compiler.
[javac] It is recommended that the compiler be upgraded.
[dex] Pre-Dexing /var/lib/jenkins/jobs/Planner_4_10_Retrofit/workspace/Planner_4_10_Retrofit/libs/okhttp-urlconnection-2.0.0.jar -> okhttp-urlconnection-2.0.0-5f923d75acdde39a4616800eb222e1bf.jar
[dx]
[dx] trouble processing:
[dx] bad class file magic (cafebabe) or version (0033.0000)
[dx] ...while parsing com/squareup/okhttp/internal/huc/CacheAdapter.class
[dx] ...while processing com/squareup/okhttp/internal/huc/CacheAdapter.class
[proguard] Initializing...
[proguard] Warning: retrofit.RxSupport$1: can't find superclass or interface rx.Observable$OnSubscribe
[proguard] Warning: okio.DeflaterSink: can't find referenced method 'int deflate(byte[],int,int,int)' in class java.util.zip.Deflater
[proguard] Warning: okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
[proguard] Warning: okio.Okio: can't find referenced class java.nio.file.Files
[proguard] Warning: retrofit.appengine.UrlFetchClient: can't find referenced class com.google.appengine.api.urlfetch.HTTPMethod
[proguard] Warning: retrofit.appengine.UrlFetchClient: can't find referenced class com.google.appengine.api.urlfetch.URLFetchServiceFactory
[proguard] Warning: retrofit.appengine.UrlFetchClient: can't find referenced class com.google.appengine.api.urlfetch.URLFetchService
[proguard] Note: there were 10 unresolved dynamic references to classes or interfaces.
[proguard] You should check if you need to specify additional program jars.
[proguard] Warning: there were 90 unresolved references to classes or interfaces.
[proguard] You may need to specify additional library jars (using '-libraryjars').
[proguard] Warning: there were 1 unresolved references to program class members.
[proguard] Your input classes appear to be inconsistent.
[proguard] You may need to recompile them and try again.
[proguard] Alternatively, you may have to specify the option
[proguard] '-dontskipnonpubliclibraryclassmembers'.
Run Code Online (Sandbox Code Playgroud)
甚至在Jenkins上,调试版本说它已经通过但是发布版本失败了.这个问题只有Proguard吗?
我找到了一些设置,我当前的proguard文件有关于libs的以下指令:
-dontwarn com.squareup.okhttp.**
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* <methods>;
}
Run Code Online (Sandbox Code Playgroud)
由于存在这么多差异,我试图找到可能的罪魁祸首!任何想法从哪里开始?我不愿意改变jenkins的配置,如果我可以通过proguard更改来逃脱.
Fin*_*ive 17
这最终解决了,但需要多次更改.
我在proguard中添加了以下内容:
-dontwarn com.facebook.android.BuildConfig
-dontwarn rx.**
-dontwarn okio.**
-dontwarn com.squareup.okhttp.*
-dontwarn retrofit.appengine.UrlFetchClient
-keepattributes *Annotation*
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* <methods>;
}
-keepattributes Signature
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
9009 次 |
| 最近记录: |