Обфускация в Android Studio

Есть ли какой-либо инструмент обфускации для использования с Android Studio? Плагин IntelliGuard объявлен как поддерживаемый Studio, но на самом деле он не работает из-за отсутствия плагина AntSupport. . Я не могу найти его в репозитории. Любые идеи?

P.S. Процесс сборки Android Studio основан на Gradle, поэтому я не ожидал увидеть там поддержку Ant. Может я ошибаюсь.


person no id    schedule 25.06.2013    source источник
comment
tools.android.com/tech- docs / new-build-system / может помочь   -  person Pankaj Kumar    schedule 25.06.2013


Ответы (5)


  • Базовая обфускация

Чтобы запутать код в Android Studio, просто перейдите в файл build.gradle в своем проекте Android Studio:

введите описание изображения здесь

Измените свойство minifyEnabled с false на true

введите описание изображения здесь

Это базовая обфускация.

После создания apk вы можете увидеть результат обфускации, декомпилировав apk с помощью любого программного обеспечения. Эта страница может помочь вам:

http://www.decompileandroid.com/

В результате обфускации вы увидите классы с именами: a, b, c ....

введите описание изображения здесь

И переменные и методы обфускации также будут иметь такие имена, как aa, c, ac ...

введите описание изображения здесь

  • Обычная обфускация:

Чтобы скрыть код в более сложной форме, вы можете перейти в приложение корневого каталога и создать файл .pro. Например, на следующем рисунке я создал файл: proguard-rules-new.pro. В том же каталоге вы должны увидеть файл proguard-rules.pro.

введите описание изображения здесь

Теперь добавьте созданный вами файл в файл build.gradle.

введите описание изображения здесь

И отредактируйте файл .pro, который вы создали, с вашими собственными правилами proguard.

введите описание изображения здесь

person Led Machine    schedule 29.05.2015
comment
Выдает эту ошибку после загрузки apk AccessDenied - person VVB; 28.01.2016
comment
У меня такая же конфигурация, за исключением того, что мой файл proguard.cfg пытался декомпилировать apk, а классы такие же, без искажений .. Нужно ли мне переименовывать .cfg в .pro? - person mboy; 28.10.2016
comment
Есть ли какой-нибудь плагин, который может автоматически писать правила Proguard - person Pramod Waghmare; 20.11.2017

Сначала включите minifyEnabled в файле build.gradle, например

minifyEnabled true

После этого добавьте строки ниже в файл progurad-rules.txt

-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

Чтобы убедиться, что он работает нормально, перейдите по ссылке:

http://www.javadecompilers.com/apktool, чтобы вы могли проверить их после декомпиляции.

Это будет работать, и ваши классы будут полностью скрыты.

person amit pandya    schedule 10.07.2017
comment
Лично я никогда не загружу свой apk на такой сайт! Как я могу доверять этому сайту?!? - person user2342558; 24.10.2019
comment
@ user2342558 Я дал ссылку только для тестирования и перекрестной проверки. - person amit pandya; 24.10.2019

Обновление: R8 по умолчанию включен в android studio версии 3.4.0 и выше

В android studio 3.4+ R8 включен по умолчанию, поэтому нет необходимости добавлять дополнительное свойство, хотя вы можете выбрать глубокую оптимизацию, добавив свойство fullMode в gradle.properties как:

android.enableR8.fullMode=true 

Вы можете отключить R8 и включить proguard, добавив следующие свойства в gradle.properties как:

android.enableR8 = false
useProguard = true

Сентябрь 2018 г. для Android: выпуск нового инструмента R8 < / a> средство сжатия и запутывания.

R8 - R8 - это инструмент для сжатия и минимизации java-кода, который преобразует java-байт-код в оптимизированный dex-код.

Для версии AS ниже 3.4.0.

  1. Открыть gradle.properties
  2. Добавить android.enableR8 = true

as

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit

android.enableR8 = true

Минимальные требования:

  • Android Studio 3.2, выпуск за сентябрь 2018 г. или выше
  • Java 8

Инструмент R8

R8 поддерживает Proguard:

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

Чтобы отключить R8 в AS 3.4.0 и более поздних версиях:

# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false

Примечание. Для данного типа сборки if you set useProguard to false в файле build.gradle вашего модуля приложения, Android Gradle plugin uses R8, чтобы уменьшить код вашего приложения для этого типа сборки, независимо от whether you disable R8 in your project's gradle.properties file.

person Pavneet_Singh    schedule 03.10.2018
comment
Я предполагаю, что в настоящее время параметр «android.enableR8 = true» является экспериментальным и не поддерживается. Я не предлагаю использовать его, пока не будет выпущена поддерживаемая версия. - person ilkayaktas; 16.10.2018
comment
Я сравнивал с и без. Совсем не сжалась :) - person Sabri Meviş; 13.12.2018
comment
если вы просто напишете minifyEnabled true, в выводе сборки вы увидите задачу Task: app: minifyReleaseWithR8, теперь вам не нужно делать это вручную, пусть обо всем этом позаботятся .. спасибо ... - person Maifee Ul Asad; 17.05.2020
comment
@MaifeeUlAsad да, новое поведение упоминается в обновлении, хотя оно перемещено в специальный раздел с более подробной информацией, Спасибо! - person Pavneet_Singh; 18.05.2020

Proguard хорошо поддерживается студией Android. Вам необходимо настроить Gradle для его запуска. Инструкции: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard.

person Anup Cowkur    schedule 25.06.2013
comment
Если для minifyEnabled установлено значение true, код сжимается и запутывается ProGuard. teamtreehouse.com/community/what-is-minifyenabled - person Roger Huang; 14.10.2015

после установки для minifyEnabled значения true вы можете получить две версии apk, поэтому вам нужно добавить параметр отладки в свой build.gradle, чтобы скрыть отладочную версию:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

синхронизация, сборка и сборка APK

person CodeToLife    schedule 04.03.2021