Some checks failed
ZaStoGram source guards / guards (push) Failing after 26s
Build three ZaStoGram APKs / build (armeabi-v7a, ZaStoGram-standalone-armeabi-v7a, Armv7, armv7) (push) Failing after 2m3s
Build three ZaStoGram APKs / build (x86, ZaStoGram-standalone-x86, X86, x86) (push) Failing after 2m3s
Build three ZaStoGram APKs / build (arm64-v8a, ZaStoGram-standalone-arm64-v8a, Arm64, arm64) (push) Failing after 2m4s
re:extera (aartzz, fossSquad) грузит DEX, экраны которого наследуют com.exteragram.messenger.preferences.BasePreferencesActivity. Этого класса не было, поэтому Main.<clinit> падал на SettingsFragmentNew.class: «Настройки DEX» молчали, а хуки ядра, скорее всего, не ставились вовсе. - Слой ABI exteraGram: BasePreferencesActivity, PopupUtils, LocaleUtils, VibratorUtils, ExteraConfig, MainMenuItem; UItem.asCheck(id, text, value, multiline), asShadow(), asExteraExpandableSwitch, setTransparent; BulletinFactory.createEmojiBulletin(String, CharSequence); TL_messageEntityCustomEmoji.local; PluginsController.removeMenuItem; строки MainMenuHiddenItems и RestartRequired. Все ссылки DEX re:extera v1.9.0 на классы приложения разрешаются, кроме бокового меню exteraGram, которого в ZaStoGram нет. - Экран настроек плагина написан заново на UniversalRecyclerView, как в exteraGram: on_long_click, иконки у Switch/Selector, встроенный EditText (max_length, mask, multiline), Custom(item/view/factory) и настоящий SimpleSettingFactory через CustomSetting.PythonFactory, у Text срабатывают и on_click, и вложенная страница. - SDK: hook_method с before=/after=/priority=/фильтрами, HookFilter, @hook_filters, BaseHook; BasePlugin работает без super().__init__(); get_setting без default возвращает сохранённый тип; сущности parse_mode уходят в Java как ArrayList, а не теряются; MenuItemType.MAIN_MENU. - Плагины стартуют после появления первого фрагмента (до 5 с), get_last_fragment падает обратно на getSafeLastFragment: загрузчик re:extera берёт контекст из фрагмента при загрузке.
79 lines
No EOL
3.3 KiB
Prolog
79 lines
No EOL
3.3 KiB
Prolog
-keep public class com.google.android.gms.* { public *; }
|
|
-keepnames @com.google.android.gms.common.annotation.KeepName class *
|
|
-keepclassmembernames class * {
|
|
@com.google.android.gms.common.annotation.KeepName *;
|
|
}
|
|
|
|
-keep @interface androidx.annotation.Keep
|
|
-keep @androidx.annotation.Keep class * { *; }
|
|
-keepclasseswithmembers class * { @androidx.annotation.Keep *; }
|
|
|
|
-keep class org.webrtc.* { *; }
|
|
-keep class org.webrtc.audio.* { *; }
|
|
-keep class org.webrtc.voiceengine.* { *; }
|
|
-keep class org.telegram.messenger.* { *; }
|
|
-keep class org.telegram.messenger.camera.* { *; }
|
|
-keep class org.telegram.messenger.secretmedia.* { *; }
|
|
-keep class org.telegram.messenger.support.* { *; }
|
|
-keep class org.telegram.messenger.support.* { *; }
|
|
-keep class org.telegram.messenger.time.* { *; }
|
|
-keep class org.telegram.messenger.video.* { *; }
|
|
-keep class org.telegram.messenger.voip.* { *; }
|
|
-keep class org.telegram.SQLite.** { *; }
|
|
-keep class org.telegram.tgnet.ConnectionsManager { *; }
|
|
-keep class org.telegram.tgnet.NativeByteBuffer { *; }
|
|
-keep class org.telegram.tgnet.RequestTimeDelegate { *; }
|
|
-keep class org.telegram.tgnet.RequestDelegate { *; }
|
|
|
|
# ===== ZaStoGram plugin engine =====
|
|
# Plugins import Telegram classes by full name and reflect on members by name
|
|
# (get_private_field / getDeclaredMethod / hooks). The project already sets -dontobfuscate,
|
|
# so names are preserved; the real risk is R8 *removing* members that only a plugin
|
|
# references reflectively (R8 fullMode tree-shakes per-member). -keep is a shrink root and
|
|
# prevents that across the whole Telegram surface. Cost: larger DEX — the trade-off for an
|
|
# open plugin engine.
|
|
-keep class org.telegram.** { *; }
|
|
# Engine bridge classes are called from Python by name — keep fully.
|
|
-keep class org.telegram.plugins.** { *; }
|
|
# exteraGram-compatibility bridge classes imported by community plugins (com.exteragram.messenger.*).
|
|
-keep class com.exteragram.messenger.** { *; }
|
|
# Embedded Python runtime (Chaquopy) and the Pine / Xposed hooking engine use JNI + reflection.
|
|
-keep class com.chaquo.python.** { *; }
|
|
-keep class top.canyie.pine.** { *; }
|
|
-keep class de.robv.android.xposed.** { *; }
|
|
-keep class com.android.internal.util.** { *; }
|
|
-dontwarn com.chaquo.python.**
|
|
-dontwarn top.canyie.pine.**
|
|
-dontwarn de.robv.android.xposed.**
|
|
# ===== end ZaStoGram plugin engine =====
|
|
|
|
-keep class org.telegram.ui.Stories.recorder.FfmpegAudioWaveformLoader { *; }
|
|
-keep class androidx.mediarouter.app.MediaRouteButton { *; }
|
|
-keepclassmembers class ** {
|
|
@android.webkit.JavascriptInterface <methods>;
|
|
}
|
|
|
|
# https://developers.google.com/ml-kit/known-issues#android_issues
|
|
-keep class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni { *; }
|
|
|
|
# Huawei Services
|
|
-keep class com.huawei.hianalytics.**{ *; }
|
|
-keep class com.huawei.updatesdk.**{ *; }
|
|
-keep class com.huawei.hms.**{ *; }
|
|
|
|
# Don't warn about checkerframework and Kotlin annotations
|
|
-dontwarn org.checkerframework.**
|
|
-dontwarn javax.annotation.**
|
|
|
|
-keep class io.nano.tex.** {*;}
|
|
|
|
-keep class org.telegram.tgnet.** { *; }
|
|
|
|
# JLatexMath: macro/atom classes are loaded reflectively by Class.forName
|
|
-keep class org.scilab.forge.jlatexmath.** { *; }
|
|
-keep class ru.noties.jlatexmath.** { *; }
|
|
-dontwarn org.scilab.forge.jlatexmath.**
|
|
|
|
# Use -keep to explicitly keep any other classes shrinking would remove
|
|
#-dontoptimize
|
|
#-dontobfuscate |