From b4926e4ede6c907b4eba72b0bca8003adecaf730 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Thu, 11 Apr 2024 10:15:25 +0800 Subject: [PATCH] Optimize R8 configuration * java/org/gnu/emacs/EmacsWindowManager.java (WindowConsumer): Mark as package-local. * java/proguard.conf: List only symbols that must be preserved, enabling R8 to optimize the remainder. (cherry picked from commit b9acfd7c2b9d1fa5c49e7bd9f78a040f7485b29b) --- java/org/gnu/emacs/EmacsWindowManager.java | 2 +- java/proguard.conf | 39 +++++++++++++++++++--- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/java/org/gnu/emacs/EmacsWindowManager.java b/java/org/gnu/emacs/EmacsWindowManager.java index 22629cad329..e41b4e068a7 100644 --- a/java/org/gnu/emacs/EmacsWindowManager.java +++ b/java/org/gnu/emacs/EmacsWindowManager.java @@ -84,7 +84,7 @@ public final class EmacsWindowManager MANAGER = new EmacsWindowManager (); }; - public interface WindowConsumer + interface WindowConsumer { public void attachWindow (EmacsWindow window); public EmacsWindow getAttachedWindow (); diff --git a/java/proguard.conf b/java/proguard.conf index 2fc974020ff..e6b08f76fe4 100644 --- a/java/proguard.conf +++ b/java/proguard.conf @@ -1,4 +1,4 @@ -# Trivial Proguard configuration file +# Proguard configuration files for Emacs # # Copyright (C) 2024 Free Software Foundation, Inc. # @@ -17,8 +17,37 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . # -# The effect of these two lines is to prevent the removal of symbol -# names, which Emacs requires to link to functions defined in Java. +# The effect of the following lines is to inhibit the removal of variable or +# method symbol names from symbols referenced from C. --keep,allowoptimization interface org.gnu.emacs.* --keep,allowoptimization class org.gnu.emacs.* { ; ; } +-keep,allowoptimization class org.gnu.emacs.EmacsClipboard { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsContextMenu { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsCursor { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsDesktopNotification { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsDialog { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsDirectoryEntry { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsFontDriver$* { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsGC { ; ; } +-keep,allowoptimization class org.gnu.emacs.EmacsHandleObject { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsPixmap { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsService { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsWindow { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsNative { ; } +-keep,allowoptimization class org.gnu.emacs.EmacsNoninteractive { ; } +-keep,allowoptimization interface org.gnu.emacs.EmacsDrawable { ; } + +# And these lines inhibit the deletion of symbols that are referenced by +# the operating system while enabling the compiler to minify or delete +# symbols only referenced internally. + +-keep,allowoptimization,allowaccessmodification public class * extends android.app.Activity +-keep,allowoptimization,allowaccessmodification public class * extends android.app.Application +-keep,allowoptimization,allowaccessmodification public class * extends android.app.Service +-keep,allowoptimization,allowaccessmodification public class * extends android.content.BroadcastReceiver +-keep,allowoptimization,allowaccessmodification public class * extends android.content.ContentProvider + +# Local Variables: +# truncate-lines: t +# indent-tabs-mode: nil +# End: -- 2.39.5