2014-02-16 4 views
2

Я использую внешние приложения, такие как foursquare api и библиотека ABS в моем приложении.proguard in android application

Когда я включаю proguard перед экспортом приложения, я получаю приведенную ниже ошибку в консоли.

Proguard возвращен с кодом ошибки 1. См. Консоль Примечание: было определено определение 3686 дубликатов классов. Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPMethod Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPMethod fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPRequest Предупреждение: fi.foyt .foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.FetchOptions $ Builder Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com .google.appengine.api.urlfetch.FetchOptions Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPRequest Предупреждение: fi.foyt.foursquare .api. io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.URLFetchServiceFactory Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api. urlfetch.URLFetchService Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не найден ссылочный класс com.google.appengine.api.urlfetch.HTTPResponse Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPResponse Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPMethod Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPMethod Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не удается найти ссылочный класс com. google.appengine.api.urlfetch.FetchOptions $ Builder Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.FetchOptions Внимание: fi.foyt. foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.URLFetchServiceFactory Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google. appengine.api.urlfetch.URLFetchService Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не найден ссылочный класс com.google.appengine.api.urlfetch.HTTPResponse Предупреждение: fi.foyt.foursquare.api. io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api.urlfetch.HTTPMethod Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не может найти ссылочный класс com.google.appengine.api. urlfetch.HTTPReque st Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: не найден ссылочный класс com.google.appengine.api.urlfetch.URLFetchService Предупреждение: fi.foyt.foursquare.api.io.GAEIOHandler: can ' t найти ссылочный класс com.google.appengine.api.urlfetch.HTTPResponse Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http.HttpServletResponse Предупреждение: fi.foyt.foursquare. example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http.HttpServletRequest Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http.HttpServletRequest Предупреждение: fi.foyt. foursquare.example.AuthenticationExample: не может найти ссылочный класс javax.servlet.http.HttpServletResponse Предупреждение: fi.f oyt.foursquare.example.AuthenticationExample: не может найти ссылочный класс javax.servlet.http.HttpServletResponse Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http.HttpServletRequest fi.foyt.foursquare.example.AuthenticationExample: не может найти ссылочный класс javax.servlet.http.HttpServletRequest Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http. HttpServletResponse Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http.HttpServletRequest Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet. http.HttpServletResponse Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http.HttpServletRequest Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не может найти ссылочный класс javax. servlet.http.HttpServletResponse Warnin g: fi.foyt.foursquare.example.AuthenticationExample: не может найти ссылочный класс javax.servlet.http.HttpServletRequest Предупреждение: fi.foyt.foursquare.example.AuthenticationExample: не удается найти ссылочный класс javax.servlet.http. HttpServletResponse Вы должны проверить, нужно ли указывать дополнительные программные банки. Предупреждение: было 35 нерешенных ссылок на классы или интерфейсы. Возможно, вам потребуется указать дополнительные библиотеки (используя '-libraryjars'). java.io.IOException: сначала выполните указанные выше предупреждения. на proguard.Initializer.execute (Initializer.java:321) в proguard.ProGuard.initialize (ProGuard.java:211) в proguard.ProGuard.execute (ProGuard.java:86) в proguard.ProGuard.main (ProGuard.java:492)

Я понял, что должен упомянуть внешние библиотеки в файле свойств Proguard. Как я должен упомянуть об этой проблеме.

Пожалуйста, смотрите мой файл Proguard

-injars  bin/classes 
-outjars  bin/classes-processed.jar 
-libraryjars E:/android/adt-bundle-windows-x86_64-20131030/sdk/platforms/android-19/android.jar 

-dontpreverify 
-repackageclasses '' 
-allowaccessmodification 
-optimizations !code/simplification/arithmetic 
-keepattributes *Annotation* 

-keep public class * extends android.app.Activity 

-keep public class * extends android.app.Service 

-keep public class * extends android.content.BroadcastReceiver 


-keep public class * extends android.content.ContentProvider 

-assumenosideeffects class android.util.Log { 
public static boolean isLoggable(java.lang.String, int); 
public static int v(...); 
public static int i(...); 
public static int w(...); 
public static int d(...); 
public static int e(...); 
} 
+0

возможно дубликат [proguard hell - не может найти ссылочный класс] (http://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class) –

ответ

1

Если вы экспортировать Android приложения с Android плагин, плагин уже определяет стандартную конфигурацию для вас. В эту конфигурацию входят основные параметры -keep и все необходимые параметры -injars и -outjars (отсюда и заметка о двойных определениях классов). Это означает, что ваш файл proguard-project.txt может быть пустым для начала; он должен содержать только конфигурацию, специфичную для проекта.

Предупреждения объясняют, что библиотека Foursquare относится к библиотеке AppEngine и даже к библиотеке сервлета, но эти последние библиотеки отсутствуют в вашем проекте. Это не проблема, так как ваше приложение предположительно отлично работает в режиме отладки, без этих библиотек, так что вы можете сказать ProGuard игнорировать эти вопросы:

-dontwarn fi.foyt.foursquare.** 

Смотрите руководство по Proguard> Устранение неполадок>Warning: can't find referenced class