From f9c50e1bf72b13bbf8d8893ed5c6afc146702b21 Mon Sep 17 00:00:00 2001
From: Alibek Omarov <[EMAIL REDACTED]>
Date: Wed, 20 Nov 2024 17:29:54 +0300
Subject: [PATCH] Add proguard rules for SDL2
Based on existing work by @AntTheAlchemist on SDL3 branch.
---
android-project/app/proguard-rules.pro | 81 ++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/android-project/app/proguard-rules.pro b/android-project/app/proguard-rules.pro
index eaf0e916cdf0b..a4c988665bf8a 100644
--- a/android-project/app/proguard-rules.pro
+++ b/android-project/app/proguard-rules.pro
@@ -15,3 +15,84 @@
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
+
+-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLInputConnection {
+ void nativeCommitText(java.lang.String, int);
+ void nativeGenerateScancodeForUnichar(char);
+}
+
+-keep,includedescriptorclasses class org.libsdl.app.SDLActivity {
+ # for some reason these aren't compatible with allowoptimization modifier
+ boolean supportsRelativeMouse();
+ void setWindowStyle(boolean);
+}
+
+-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLActivity {
+ java.lang.String nativeGetHint(java.lang.String); # Java-side doesn't use this, so it gets minified, but C-side still tries to register it
+ boolean onNativeSoftReturnKey();
+ void onNativeKeyboardFocusLost();
+ boolean isScreenKeyboardShown();
+ android.util.DisplayMetrics getDisplayDPI();
+ java.lang.String clipboardGetText();
+ boolean clipboardHasText();
+ void clipboardSetText(java.lang.String);
+ int createCustomCursor(int[], int, int, int, int);
+ void destroyCustomCursor(int);
+ android.content.Context getContext();
+ boolean getManifestEnvironmentVariables();
+ android.view.Surface getNativeSurface();
+ void initTouch();
+ boolean isAndroidTV();
+ boolean isChromebook();
+ boolean isDeXMode();
+ boolean isTablet();
+ void manualBackButton();
+ int messageboxShowMessageBox(int, java.lang.String, java.lang.String, int[], int[], java.lang.String[], int[]);
+ void minimizeWindow();
+ int openURL(java.lang.String);
+ void requestPermission(java.lang.String, int);
+ int showToast(java.lang.String, int, int, int, int);
+ boolean sendMessage(int, int);
+ boolean setActivityTitle(java.lang.String);
+ boolean setCustomCursor(int);
+ void setOrientation(int, int, boolean, java.lang.String);
+ boolean setRelativeMouseEnabled(boolean);
+ boolean setSystemCursor(int);
+ boolean shouldMinimizeOnFocusLoss();
+ boolean showTextInput(int, int, int, int);
+}
+
+-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.HIDDeviceManager {
+ boolean initialize(boolean, boolean);
+ boolean openDevice(int);
+ int sendOutputReport(int, byte[]);
+ int sendFeatureReport(int, byte[]);
+ boolean getFeatureReport(int, byte[]);
+ void closeDevice(int);
+}
+
+-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLAudioManager {
+ int[] getAudioOutputDevices();
+ int[] getAudioInputDevices();
+ int[] audioOpen(int, int, int, int, int);
+ void audioWriteFloatBuffer(float[]);
+ void audioWriteShortBuffer(short[]);
+ void audioWriteByteBuffer(byte[]);
+ void audioClose();
+ int[] captureOpen(int, int, int, int, int);
+ int captureReadFloatBuffer(float[], boolean);
+ int captureReadShortBuffer(short[], boolean);
+ int captureReadByteBuffer(byte[], boolean);
+ void captureClose();
+ void audioSetThreadPriority(boolean, int);
+ native int nativeSetupJNI();
+ native void removeAudioDevice(boolean, int);
+ native void addAudioDevice(boolean, int);
+}
+
+-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLControllerManager {
+ void pollInputDevices();
+ void pollHapticDevices();
+ void hapticRun(int, float, int);
+ void hapticStop(int);
+}