2013-06-19 4 views
1

Мое приложение отлично работает при отладке, а также при экспорте в подписанный apk, если у меня отключена функция proguard, комментируя «proguard.config = $ {sdk.dir}/tools/proguard ... "в project.properties.android proguard вызывает ошибку apk

Однако, если я раскомментирую эту строку, я получаю кучу предупреждений, а proguard не создаст apk. Я могу подавить предупреждения, добавив следующие строки в Proguard-project.txt

-dontwarn com.sun.mail.imap.protocol.** 
-dontwarn org.apache.harmony.awt.** 
-dontwarn javax.activation.** 

и APK получит создана, но она не будет выполняться в телефоне. Интересно, что если я удалю эти строки и использую «-dontshrink», я продолжаю получать эти ошибки. Я бы подумал, что избавится от этой проблемы.

Я нашел в http://developer.android.com/tools/help/proguard.html, что я, вероятно, не хватает каких-то строк в моей конфигурации, но не очевидно, что это будет. Может ли кто-нибудь дать ключ?

Файл proguard.cfg по умолчанию пытается охватить общие случаи, но вы можете столкнуться с исключения, такие как ClassNotFoundException, что происходит, когда ProGuard отсекает весь класс, что ваши вызовы приложений.

Вы можете исправить ошибки, когда ProGuard удаляет ваш код, добавив строку -keep в файл proguard.cfg. Например:

-keep общественного класс

[2013-06-19 14:19:30 - Flashum2] Proguard returned with error code 1. See console 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find superclass or interface java.awt.datatransfer.Transferable 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can't find superclass or interface java.awt.datatransfer.Clipboard 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.Sasl 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslException 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslClient 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can't find referenced class javax.security.sasl.SaslException 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.auth.callback.NameCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.auth.callback.NameCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmChoiceCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmChoiceCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmChoiceCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmChoiceCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.auth.callback.NameCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator$1: can't find referenced class javax.security.sasl.RealmChoiceCallback 
    [2013-06-19 14:19:30 - Flashum2] Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans 
    [2013-06-19 14:19:30 - Flashum2] Warning: javax.activation.CommandInfo: can't find referenced class java.beans.Beans 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.Toolkit 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.ContextStorage: can't find referenced class java.awt.GraphicsEnvironment 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.DTK: can't find referenced class java.awt.datatransfer.DataFlavor 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.DTK: can't find referenced class java.awt.datatransfer.DataFlavor 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.DTK: can't find referenced class java.awt.datatransfer.DataFlavor 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.DTK: can't 
. 
. 
. 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.TextFlavor: can't find referenced class java.awt.datatransfer.SystemFlavorMap 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.TextFlavor: can't find referenced class java.awt.datatransfer.DataFlavor 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.TextFlavor: can't find referenced class java.awt.datatransfer.SystemFlavorMap 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.TextFlavor: can't find referenced class java.awt.datatransfer.SystemFlavorMap 
    [2013-06-19 14:19:30 - Flashum2] Warning: org.apache.harmony.awt.datatransfer.TextFlavor: can't find referenced class java.awt.datatransfer.DataFlavor 
    [2013-06-19 14:19:30 - Flashum2]  You should check if you need to specify additional program jars. 
    [2013-06-19 14:19:30 - Flashum2] Warning: there were 247 unresolved references to classes or interfaces. 
    [2013-06-19 14:19:30 - Flashum2]   You may need to specify additional library jars (using '-libraryjars'). 
    [2013-06-19 14:19:30 - Flashum2] java.io.IOException: Please correct the above warnings first. 
    [2013-06-19 14:19:30 - Flashum2] at proguard.Initializer.execute(Initializer.java:321) 
    [2013-06-19 14:19:30 - Flashum2] at proguard.ProGuard.initialize(ProGuard.java:211) 
    [2013-06-19 14:19:30 - Flashum2] at proguard.ProGuard.execute(ProGuard.java:86) 
    [2013-06-19 14:19:30 - Flashum2] at proguard.ProGuard.main(ProGuard.java:492) 

Вот список из банок в моей LIBS папки, если это помогает:

05/31/2013 10:47 AM <DIR>   . 
05/31/2013 10:47 AM <DIR>   .. 
05/15/2012 09:22 AM   34,093 acra-3.1.2.jar 
01/14/2013 09:07 AM   51,643 activation.jar 
01/14/2013 09:06 AM   46,184 additionnal.jar 
05/25/2013 04:14 PM   501,154 android-support-v13.jar 
05/15/2012 09:22 AM   312,866 commons-lang3-3.0.1.jar 
05/15/2012 09:22 AM   269,014 commons-net-3.0.1.jar 
05/31/2013 10:47 AM   170,927 google-api-client-1.14.1-beta.jar 
05/31/2013 10:47 AM    9,068 google-api-client-android-1.14.1-beta.jar 
05/31/2013 10:47 AM   137,977 google-api-services-drive-v2-rev76-1.14.2-beta.jar 
05/31/2013 10:47 AM   268,450 google-http-client-1.14.1-beta.jar 
05/31/2013 10:47 AM   10,072 google-http-client-android-1.14.1-beta.jar 
05/31/2013 10:47 AM    7,828 google-http-client-gson-1.14.1-beta.jar 
05/31/2013 10:47 AM    6,038 google-http-client-jackson-1.14.1-beta.jar 
05/31/2013 10:47 AM    6,076 google-http-client-jackson2-1.14.1-beta.jar 
05/31/2013 10:47 AM   64,952 google-oauth-client-1.14.1-beta.jar 
05/31/2013 10:47 AM   180,110 gson-2.1.jar 
05/31/2013 10:47 AM   206,797 jackson-core-2.1.3.jar 
05/31/2013 10:47 AM   232,131 jackson-core-asl-1.9.11.jar 
05/31/2013 10:47 AM   33,015 jsr305-1.3.9.jar 
01/14/2013 09:06 AM   440,508 mail.jar 
05/15/2012 09:22 AM   134,421 zip4j_1.2.5.jar 
+0

После нескольких дней работы я боюсь, что решение состоит в том, чтобы отключить Proguard. Я не понимаю, почему «-dontshrink» не работает. Это должно оставить все и только запутывать. Теперь я пытаюсь работать с Android Studio, но даже у нее есть свои проблемы. – cdavidyoung

+0

Hi, Вы нашли решение для этого? –

ответ

0

Может быть, немного поздно, но поиск для решение аналогичной проблемы, я узнал, что вам нужно сообщить proguard, чтобы сохранить некоторые классы в базах вашего libs. Обратитесь к журналу, где указано Warning: ... и can't find referenced class ....

Так что в вашем случае должно быть:

-keep class javax.security.** { *; } 
-keep class java.beans.** { *; } 
-keep class java.awt.** { *; } 

и

-libraryjars libs/XYZ.jar 

для каждой баночке в /libs, содержащий эти классы.

Смежные вопросы