2014-07-21 17 views
7

ho introdotto le seguenti vasi quadrati per una caratteristica su cui sto lavorando:Problemi che utilizza l'ultimo vasetti da Piazza - retrofit, okhttp, Okio e okhttp-URLConnection

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

ho scaricato questi dal repo Maven centrale.

Tutto ha funzionato bene e ho commesso il mio codice su svn. Abbiamo un server CI Jenkins che produce i nostri build di debug e release. Questo fallì.

Ci sono una serie di differenze tra il mio ambiente locale e Jenkins:

  • localmente corro Java 8, Jenkins corre Java 6
  • localmente Ho solo produco build di debug, Jenkins produce sia il debug e build di rilascio
  • localmente devo costruire strumenti versione 22.6.2, Jenkins corre 18.0.1

E questi sono il genere di problemi che sto vedendo nei registri 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'. 

Anche su Jenkins la build di debug dice che è passata ma non è riuscita la build di rilascio. Il problema è solo Proguard?

ho trovato alcune impostazioni, il mio file di Proguard corrente ha le seguenti direttive sulle le librerie:

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

Con così tante differenze, sto cercando di trovare il probabile colpevole! Qualche idea da dove iniziare? Sono dispiaciuto di cambiare la configurazione su jenkins se riesco a farla franca con i cambiamenti di proguard.

risposta

0

Aggiorna il tuo dx, parte del tuo Android SDK.

16

Questo è stato finalmente risolto ma ha richiesto più modifiche.

  1. Ho aggiornato il jdk a 7 sul nodo che esegue Jenkins.
  2. ho aggiornato gli strumenti SDK Android
  3. ho aggiunto quanto segue al 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 
    
+0

Aggiunta -dontwarn java.util.zip ** e java.util.zip -dontnote * * ha funzionato per me – jfcartier

Problemi correlati