VKCOM/KNet

Proguard rules

Snowmaze-dev opened this issue · 9 comments

Какие rules надо для proguard? С proguard получаю ошибку java.lang.RuntimeException: Unable to find any Cronet provider. Have you included all necessary jars?
Пробовал

-keep class org.chromium.net.impl.NativeCronetProvider {
    public <init>(android.content.Context);
}

С таким правилом получаю java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app/apppackage/lib/arm64/libcronet.93.0.4577.82.so"

Можешь попробовать взять тут
cronet_impl_native_proguard.txt

Но если у тебя "UnsatisfiedLinkError", то скорее он не может найти сам so файл

В ближайшее вермя добавлю прогвард файл в либу + добавлю семпл

Добавил правила, теперь работает) Странно, что размер APK не изменился, наверное, proguard какие-то имена обсфусцировал и поэтому ошибка

"Странно, что размер APK не изменился, наверное, proguard какие-то имена обсфусцировал и поэтому ошибка"
Можешь немного поподробнее?)

Ну такая логика, что если бы proguard удалял бы провайдер, то размер APK был бы наверное сильно меньше, но он тот же остался почти, значит просто какое-то название обсфусцировал и какой-то небольшой класс удалил.
С правилами вес APK 8,575кб, а без правил 8, 504кб

Тут все верно, данный прогвард просто в keep сохраняет несколько java файлов, от этого размер сильно меньше не станет.

Опять же, единственный хороший способ уменьшить размер APK, просто собирать ABB файлы.

Ну, моего приложения пока в плеймаркете нет, просто с proguard между друзей распространял версию)

А, ясно, тогда пока только так, к сожалению. Ты можешь вырезать x86 архитектуру, врят ли они будут смотреть его на эмуляторе, как это можно сделать через flavour я писал в предыдущем issue.
Так же можешь просто указать в android { в build.gradle файле

// Kotlin Gradle DSL
ndk {
     abiFilters += setOf("armeabi-v7a", "arm64-v8a")
}

Это поможет вырезать 2 МБ

Угу, спасибо
ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' }
на груви если кому-то надо будет)