Intereting Posts
Невозможно создать экземпляр активности java.lang.ClassNotFoundException Java.lang.IllegalStateException: должно существовать некоторое перекрытие для resourceIdToResName Как использовать задачу Async для потоковой передачи аудио в android Как скрыть ActionBar при прокрутке ListView в Android? Как скрыть свой пользовательский диспетчер учетных записей из пользовательского интерфейса настроек Как добавить файлы расширения Android с помощью Qt Как определить, когда кнопка нажата и отпущена на Android Как найти высоту строки состояния в Android через React Native? Андроид показать прямоугольник на камеру Как приостановить использование разных музыкальных плееров в Android? Как открыть мое приложение для Android, когда в браузере откроется ссылка rss? Android разрабатывает шрифт LCD Я получаю странную ошибку в студии Android Как обновить фрагмент Android из активности? Как захватить геолокацию с устройством в автономном режиме – cordova

Подписанный apk, получивший отказ в proguard enable

Я пытаюсь использовать proguard в своем приложении, чтобы установить proguard в true, а затем проблема начинается. Я импортирую lib, когда я использую proguard, следуя этому -keepnames class com.somepackage.* С моим именем пакета приложение становится -keepnames class com.somepackage.* когда я Попробуйте использовать подписанный apk. Я знаю этот iS немой вопрос, но я застрял в этом за последние 5 часов, не смог найти легкое решение, поскольку я использую около 20 lib. Я тоже это сделал . Plz направить меня в этом, как я могу это сделать?

Это мой класс правил правил proguard

 -keepnames class beatbox.neelay.dummybeat.* -keepnames com.srx.widget.* -keepnames de.hdodenhof.circleimageview.CircleImageView.* -keepnames com.bumptech.glide.* -keepnames com.romainpiel.shimmer.* -keepnames com.vansuita.gaussianblur.GaussianBlur -keepnames com.antonyt.infiniteviewpager.InfinitePagerAdapter -keepnames com.antonyt.infiniteviewpager.InfiniteViewPager -keepnames com.eftimoff.viewpagertransformers.CubeOutTransformer -keepnames com.ms.square.android.glassview.GlassView -keepnames me.alexrs.fontpagertitlestrip.lib.FontPagerTitleStrip 

Теперь я не могу сгенерировать подписанный apk. Ошибка есть.

 Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'. 

Не удалось выполнить работу, см. Журналы для подробностей

Любой намек будет полезен. Консольный выход

 FAILURE: Build failed with an exception. 
  • Что пошло не так: выполнение не выполнено для задачи ': app: transformClassesAndResourcesWithProguardForRelease'.

    Не удалось выполнить работу, см. Журналы для подробностей

  • Попробуйте: запустите с опцией –stacktrace, чтобы получить трассировку стека. Запустите с опцией –info или –debug, чтобы получить больше выходных данных журнала.

Редактирование build.gradle

 apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "25.0.1" defaultConfig { applicationId "beatbox.neelay.dummybeat" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" renderscriptTargetApi 24 renderscriptSupportModeEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } lintOptions { checkReleaseBuilds false abortOnError false } buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } repositories { jcenter() mavenCentral() maven { url "https://jitpack.io" } maven { url 'http://Manabu-GT.github.com/GlassView/mvn-repo' } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile project(':foldingtabbar') compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7' compile 'com.android.support:design:25.2.0' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.intuit.sdp:sdp-android:1.0.4' compile 'com.leo.simplearcloader:simplearcloader:1.0.1' compile 'com.ms.square:glassview:0.1.0' compile 'de.hdodenhof:circleimageview:2.1.0' compile 'com.romainpiel.shimmer:library:1.4.0@aar' compile 'com.github.StephenVinouze:ShapeView:1.1.0' compile 'com.eftimoff:android-viewpager-transformers:1.0.1@aar' compile 'com.github.antonyt:InfiniteViewPager:v1.0.0' compile 'me.alexrs:font-pager-titlestrip:1.0.0' compile 'com.github.florent37:arclayout:1.0.1' compile 'com.android.support:cardview-v7:25.1.0' compile 'com.android.support:support-v4:25.1.0' compile 'com.github.jrvansuita:GaussianBlur:v1.0.2' compile 'com.google.code.gson:gson:2.7' compile 'com.android.support:support-vector-drawable:25.2.0' testCompile 'junit:junit:4.12' } 

Другой способ, который я пробовал для proguard-rule.pro

 -keepnames class beatbox.neelay.dummybeat.**{*;} -keepnames class com.srx.widget.**{*;} -keepnames class de.hdodenhof.circleimageview.CircleImageView.**{*;} -keepnames class com.bumptech.glide.**{*;} -keepnames class com.romainpiel.shimmer.**{*;} -keepnames class com.vansuita.gaussianblur.**{*;} -keepnames class com.antonyt.infiniteviewpager.**{*;} -keepnames class com.eftimoff.viewpagertransformers.**{*;} -keepnames class com.ms.square.android.glassview.**{*;} -keepnames class me.alexrs.fontpagertitlestrip.lib.FontPagerTitleStrip**{*;} 

Дерево зависимостей

    Причина. Не каждый класс или библиотека оптимизированы с включенным Proguard. Так что Proguard делает это, что он удаляет классы, если они не оптимизируют, какие сбои результатов и ошибки в проекте.

    Решение. В вашем файле proguard.cfg сохраняйте эти классы или библиотеку, которые не поддерживаются progaurd. Попробуйте улов, описанный здесь:
    Попробуйте добавить:

     -keep class android.support.v7.internal.** { *; } -keep interface android.support.v7.internal.** { *; } -keep class android.support.v7.** { *; } -keep interface android.support.v7.** { *; } 

    Или, если вы используете v4 lib:

     -dontwarn android.support.v4.** -keep class android.support.v4.** { *; } -dontwarn android.support.v7.** -keep class android.support.v7.** { *; } 

    Если вы используете последнюю студию Android, вы можете найти это как proguard-rules.pro

    В вашем случае попробуйте использовать -dontwarn также с именем класса. Как и ваша ошибка, показано, что она не может оптимизировать библиотеку circleimageview. Поэтому попробуйте добавить это также:

     -dontwarn hdodenhof.** -keep class hdodenhof.** 

    Если вы по-прежнему не работаете, чем понижаете свою библиотеку circleimageview:
    compile 'de.hdodenhof:circleimageview:1.3.0' Это работает для меня.

    Очень важна такая же версия для всех библиотек поддержки. Иногда библиотеки имеют рекурсивные зависимости, каждая из которых имеет другую версию, которая может привести к этой ошибке. Бег:

     ./gradlew app:dependencies 

    Чтобы увидеть зависимости для каждой библиотеки и проверить, имеют ли они все одинаковые версии. Я уже вижу, что вы используете версии библиотек поддержки 25.1.0 и 25.2.0. Кроме того, некоторые из ваших библиотек старые, поэтому они, вероятно, используют старые версии.

    Попробуй использовать:

     -keep class beatbox.neelay.dummybeat.**{*;} -dontwarn beatbox.neelay.dummybeat.** 

    вместо:

     -keepnames beatbox.neelay.dummybeat.**{*;} 

    1) Сохраняйте все аннотации

     -keepattributes SourceFile,LineNumberTable,*Annotation*,EnclosingMethod,Signature,Exceptions,InnerClasses 

    2) Держите, если у вас есть какие-либо pojos или модели и классы, которые используются для сетевого вызова

    Пример:

     -keep class com.example.android.models.** -keepclassmembers class com.example.android.models.** { *; } -keepclassmembers class com.example.android.network.** { public void set*(***); public *** get*(); public *** is*(); } 

    3) Для всех библиотек, которые вы используете, соблюдайте правила proguard

    Пример:

     -dontwarn com.zl.reik.dilatingdotsprogressbar.** -keep class com.zl.reik.dilatingdotsprogressbar.**{*;} -keep interface com.zl.reik.dilatingdotsprogressbar.**{*;} 

    Вам даже нужно придерживаться аналогичных правил защиты для «foldingtabbar», так как это также библиотека

    Если указанное решение не решит, run ./gradlew app:dependencies в вашем репозитории и отправьте мне список зависимостей

    Proguard удаляет классы, которые являются частью зависимостей, добавленных в приложение. Постарайтесь использовать их:

     -keep class hdodenhof.** -keep class android.support.v4.** { *; } -keep class android.support.v7.** { *; } -keep interface android.support.v7.** { *; } -keep class android.support.v7.internal.** { *; } -keep interface android.support.v7.internal.** { *; } 

    Отключить предупреждение для классов зависимостей:

     -dontwarn hdodenhof.** -dontwarn android.support.v4.** -dontwarn android.support.v7.** 

    В вашем коде:

     minifyEnabled true 

    Сделай это

      minifyEnabled false 

    Надеюсь, поможет 🙂