Problems associated with using the latest Square cans - modification, okhttp, okio and okhttp-urlconnection

I presented the following square boxes for the function I'm working on:

  • okttp-2.0.0
  • okhttp-URLConnection-2.0.0.jar
  • Okio 1.0.0.jar
  • Modified-1.6.1.jar

I downloaded them from the maven central repository.

Everything worked fine locally, and I passed my code to svn. We have a Jenkins CI server that produces our debug and release builds. This failed.

There are several differences between my local environment and Jenkins:

  • locally I run java 8, Jenkins starts java 6
  • locally I create a debug assembly, Jenkins produces both debug and released assemblies
  • locally I have build tools for version 22.6.2, Jenkins running 18.0.1

And these are the problems that I see in Jenkins magazines:

-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'. 

Even in Jenkins, the debug assembly says that it passed, but it was not possible to create a release assembly. Is the problem only in Proguard?

I found some settings, my current proguard file has the following libs directives:

 -dontwarn com.squareup.okhttp.** -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } 

With so many differences, I'm trying to find a likely culprit! Any ideas where to start? I do not want to change the configuration to jenkins if I manage to change the proguard changes.

+7
java android retrofit jenkins
source share
2 answers

This was finally decided, but several changes were required.

  • I upgraded jdk to 7 on a node running Jenkins.
  • I updated sdk tools for Android.
  • I added the following to 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 
+16
source

Update your dx, part of your Android SDK.

0
source

All Articles