2016-11-02 2 views
1

Я сделал приложение для Android, которое всегда работало нормально. Внезапно AVG Antivirus сообщил, что мое приложение является вредоносным ПО. Через пару часов, я нашел проблему:Android Proguard имеют некоторые проблемы с AVG Antivirus

В build.gradle, если я использую конфиг ниже, чтобы генерировать подписанный APK, AVG сообщает (в APK) как вредоносные программы:

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

Но если я комментарии последнюю строку, никакой угрозы не найдено:

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

Мой proguard-rules.pro не имеет ничего особенного:

-keepattributes Signature 
-keepattributes *Annotation* 
-keepattributes EnclosingMethod 
-keep class io.codetail.animation.arcanimator.** { *; } 
-keep class com.example.viewholders.** { 
    *; 
} 
-keep class com.android.vending.billing.** 
-keep class cn.pedant.SweetAlert.Rotate3dAnimation { 
    public <init>(...); 
} 
-keepclassmembers class com.example.models.** { 
    *; 
} 

Я использую Android Studio 2.2.2, и мой проект использует Firebase. Версия AVG Antivirus, которую я имею в своем устройстве для Android, - 5.9.0.1.224656.

«malware», идентифицированный AVG, - это Android/gp oi bccfdd.

Есть ли что-то, что я могу сделать для решения этой проблемы?

+0

удалить строки 'keep class' и' keepclassmembers' из 'proguard-rules.pro' и снова создать – Apurva

+0

@Apurva, я не могу удалить эти строки, потому что они необходимы в моем приложении. –

+0

Удаление этих строк из файла proguard не приведет к удалению этих классов из вашего пакета. '-keep class' используется для ** сохранения перечисленных классов в исходном формате **, поэтому proguard не будет кодировать эти классы при создании пакета. Поэтому безопасно удалять эти строки из файла proguard, он просто кодирует классы в неидентифицируемой форме. – Apurva

ответ

0

Наконец-то я получил решение. Просто чтобы изменить эту строку:

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 

С этим:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

По словам Android Studio User Guide:

"Совет: Для еще больше кода сокращается, попробовать Proguard-андроид-Оптимизировать .txt, который находится в том же месте. Он включает в себя те же правила ProGuard, но с другими оптимизациями, которые выполняют анализ на уровне байт-кода внутри и между методами - чтобы уменьшить размер вашего APK-размера и помогите ему работать быстрее ».

К сожалению, как я понял, это может вызвать ложные обнаружения вредоносного ПО антивирусом.

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