Я только что обновил свой Android SDK, ADT и Proguard до последней и лучшей версии.
Мой проект компилирует сборки и работает нормально в режиме отладки, но как только я пытаюсь экспортировать его подписанный APK-файл, я получаю сообщение об ошибке от мастера экспорта без каких-либо сообщений журнала ошибок на консоли Eclipse! *
Если я попытаюсь просмотреть журнал ошибок через Окно->Показать вид->Журнал ошибок
, я увижу почти одно и то же:
Я понятия не имею, что делать, потому что ни Eclipse ни Proguard не дал никакого намекана то, в чем может быть проблема.
Мой проект экспортировался нормально до этого недавнего обновления. Предупреждений о сборке нет. Никаких предупреждений о ворсе!
Я использую стандартный файл конфигурации для Android в ${sdk.dir}\tools\proguard\proguard-android.txt
:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontoptimize
-dontpreverify
-keepattributes *Annotation*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgent
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Fragment
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native ;
}
-keep public class * extends android.view.View {
public (android.content.Context);
public (android.content.Context, android.util.AttributeSet);
public (android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static ;
}
-dontwarn android.support.**
И proguard.cfg моего проекта содержит только:
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** i(...);
public static *** d(...);
public static *** w(...);
public static *** e(...);
}
Кто-нибудь видел эту проблему раньше? Есть идеи, как это исправить?
Есть прогресс?Мне удалось экспортировать подписанный APK впервые после обновления, выполнив следующие действия:
Но, к моему ужасу, в следующий раз, когда я снова попытался экспортировать подписанный APK, я получил то же самое Failed to export application
с без сообщений консоли! Опять!
Теперь мне ясно, что инструменты разработчика Android стали нестабильными. Я не могу запускать CCleaner и перезагружать Windows каждый раз, когда хочу экспортировать подписанный APK. И мне все равно, чья это вина: Android SDK? Плагин АДТ? Прогард?
Что мне теперь делать?
Есть еще прогресс?Я попытался экспортировать подписанный APK с отключенным Proguard. Он экспортировался нормально, но когда я его запускаю, он сразу же вылетает из-за невозможности найти класс активности приложения ( ClassNotFoundException
). Это странно! Он отлично работает в режиме отладки, и если бы класса активности приложения не было, он не должен был скомпилироваться! В чем дело? Не работают ли новейшие и лучшие инструменты Android-разработчика?
Я попытался поиграть с вкладкой Заказ и экспорт
, как описано в этом решении(и в этом тоже), но это не помогло.
Что мне теперь делать?