[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/android 15bcb446be2 3/7: Update Android port
From: |
Po Lu |
Subject: |
feature/android 15bcb446be2 3/7: Update Android port |
Date: |
Wed, 1 Mar 2023 03:00:46 -0500 (EST) |
branch: feature/android
commit 15bcb446be2f2f5b85a1b9585ec3abaabcbf04d9
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Update Android port
* java/Makefile.in (ETAGS, clean): New rules to generate tags.
* java/org/gnu/emacs/EmacsActivity.java (EmacsActivity):
* java/org/gnu/emacs/EmacsApplication.java (EmacsApplication):
* java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
* java/org/gnu/emacs/EmacsCopyArea.java (EmacsCopyArea):
* java/org/gnu/emacs/EmacsDialog.java (EmacsDialog)::(dialog.
Then):
* java/org/gnu/emacs/EmacsDocumentsProvider.java
(EmacsDocumentsProvider):
* java/org/gnu/emacs/EmacsDrawLine.java (EmacsDrawLine):
* java/org/gnu/emacs/EmacsDrawPoint.java (EmacsDrawPoint):
* java/org/gnu/emacs/EmacsDrawRectangle.java
(EmacsDrawRectangle):
* java/org/gnu/emacs/EmacsFillPolygon.java (EmacsFillPolygon):
* java/org/gnu/emacs/EmacsFillRectangle.java
(EmacsFillRectangle):
* java/org/gnu/emacs/EmacsGC.java (EmacsGC):
* java/org/gnu/emacs/EmacsInputConnection.java
(EmacsInputConnection):
* java/org/gnu/emacs/EmacsNative.java (EmacsNative):
* java/org/gnu/emacs/EmacsNoninteractive.java
(EmacsNoninteractive):
* java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity):
* java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap):
* java/org/gnu/emacs/EmacsPreferencesActivity.java
(EmacsPreferencesActivity):
* java/org/gnu/emacs/EmacsSdk11Clipboard.java
(EmacsSdk11Clipboard):
* java/org/gnu/emacs/EmacsSdk23FontDriver.java
(EmacsSdk23FontDriver):
* java/org/gnu/emacs/EmacsSdk8Clipboard.java
(EmacsSdk8Clipboard):
* java/org/gnu/emacs/EmacsService.java (EmacsService):
* java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView)
(buffers):
* java/org/gnu/emacs/EmacsView.java (EmacsView, ViewGroup):
* java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, drawables):
* java/org/gnu/emacs/EmacsWindowAttachmentManager.java
(EmacsWindowAttachmentManager): Make classes final where
appropriate.
---
java/Makefile.in | 16 +++++++++++++++-
java/org/gnu/emacs/EmacsActivity.java | 22 +++++++++++-----------
java/org/gnu/emacs/EmacsApplication.java | 2 +-
java/org/gnu/emacs/EmacsContextMenu.java | 2 +-
java/org/gnu/emacs/EmacsCopyArea.java | 2 +-
java/org/gnu/emacs/EmacsDialog.java | 2 +-
java/org/gnu/emacs/EmacsDocumentsProvider.java | 2 +-
java/org/gnu/emacs/EmacsDrawLine.java | 2 +-
java/org/gnu/emacs/EmacsDrawPoint.java | 2 +-
java/org/gnu/emacs/EmacsDrawRectangle.java | 2 +-
java/org/gnu/emacs/EmacsFillPolygon.java | 2 +-
java/org/gnu/emacs/EmacsFillRectangle.java | 2 +-
java/org/gnu/emacs/EmacsGC.java | 2 +-
java/org/gnu/emacs/EmacsInputConnection.java | 11 ++++++++++-
java/org/gnu/emacs/EmacsNative.java | 2 +-
java/org/gnu/emacs/EmacsNoninteractive.java | 2 +-
java/org/gnu/emacs/EmacsOpenActivity.java | 2 +-
java/org/gnu/emacs/EmacsPixmap.java | 2 +-
java/org/gnu/emacs/EmacsPreferencesActivity.java | 2 +-
java/org/gnu/emacs/EmacsSdk11Clipboard.java | 2 +-
java/org/gnu/emacs/EmacsSdk23FontDriver.java | 2 +-
java/org/gnu/emacs/EmacsSdk8Clipboard.java | 2 +-
java/org/gnu/emacs/EmacsService.java | 2 +-
java/org/gnu/emacs/EmacsSurfaceView.java | 2 +-
java/org/gnu/emacs/EmacsView.java | 2 +-
java/org/gnu/emacs/EmacsWindow.java | 2 +-
.../gnu/emacs/EmacsWindowAttachmentManager.java | 2 +-
27 files changed, 60 insertions(+), 37 deletions(-)
diff --git a/java/Makefile.in b/java/Makefile.in
index 7ba05f6c9a3..bff021752c7 100644
--- a/java/Makefile.in
+++ b/java/Makefile.in
@@ -281,9 +281,23 @@ $(APK_NAME): classes.dex emacs.apk-in emacs.keystore
$(AM_V_SILENT) $(APKSIGNER) $(SIGN_EMACS_V2) $@
$(AM_V_SILENT) rm -f $@.unaligned *.idsig
+# TAGS generation.
+
+ETAGS = $(top_builddir)/lib-src/etags
+
+$(ETAGS): FORCE
+ $(MAKE) -C ../lib-src $(notdir $@)
+
+tagsfiles = $(JAVA_FILES) $(RESOURCE_FILE)
+
+.PHONY: tags FORCE
+tags: TAGS
+TAGS: $(ETAGS) $(tagsfiles)
+ $(AM_V_GEN) $(ETAGS) $(tagsfiles)
+
clean:
rm -f *.apk emacs.apk-in *.dex *.unaligned *.class *.idsig
- rm -rf install-temp $(RESOURCE_FILE)
+ rm -rf install-temp $(RESOURCE_FILE) TAGS
find . -name '*.class' -delete
maintainer-clean distclean bootstrap-clean: clean
diff --git a/java/org/gnu/emacs/EmacsActivity.java
b/java/org/gnu/emacs/EmacsActivity.java
index 7e09e608984..0ee8c239899 100644
--- a/java/org/gnu/emacs/EmacsActivity.java
+++ b/java/org/gnu/emacs/EmacsActivity.java
@@ -108,7 +108,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
detachWindow ()
{
syncFullscreenWith (null);
@@ -131,7 +131,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
attachWindow (EmacsWindow child)
{
Log.d (TAG, "attachWindow: " + child);
@@ -161,21 +161,21 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
destroy ()
{
finish ();
}
@Override
- public EmacsWindow
+ public final EmacsWindow
getAttachedWindow ()
{
return window;
}
@Override
- public void
+ public final void
onCreate (Bundle savedInstanceState)
{
FrameLayout.LayoutParams params;
@@ -238,7 +238,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
onWindowFocusChanged (boolean isFocused)
{
Log.d (TAG, ("onWindowFocusChanged: "
@@ -256,7 +256,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
onPause ()
{
isPaused = true;
@@ -266,7 +266,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
onResume ()
{
isPaused = false;
@@ -279,7 +279,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
onContextMenuClosed (Menu menu)
{
Log.d (TAG, "onContextMenuClosed: " + menu);
@@ -298,7 +298,7 @@ public class EmacsActivity extends Activity
}
@SuppressWarnings ("deprecation")
- public void
+ public final void
syncFullscreenWith (EmacsWindow emacsWindow)
{
WindowInsetsController controller;
@@ -372,7 +372,7 @@ public class EmacsActivity extends Activity
}
@Override
- public void
+ public final void
onAttachedToWindow ()
{
super.onAttachedToWindow ();
diff --git a/java/org/gnu/emacs/EmacsApplication.java
b/java/org/gnu/emacs/EmacsApplication.java
index 6a065165eb1..10099721744 100644
--- a/java/org/gnu/emacs/EmacsApplication.java
+++ b/java/org/gnu/emacs/EmacsApplication.java
@@ -27,7 +27,7 @@ import android.content.Context;
import android.app.Application;
import android.util.Log;
-public class EmacsApplication extends Application
+public final class EmacsApplication extends Application
{
private static final String TAG = "EmacsApplication";
diff --git a/java/org/gnu/emacs/EmacsContextMenu.java
b/java/org/gnu/emacs/EmacsContextMenu.java
index 6b3ae0c6de9..0de292af21a 100644
--- a/java/org/gnu/emacs/EmacsContextMenu.java
+++ b/java/org/gnu/emacs/EmacsContextMenu.java
@@ -42,7 +42,7 @@ import android.widget.PopupMenu;
Android menu, which can be turned into a popup (or other kind of)
menu. */
-public class EmacsContextMenu
+public final class EmacsContextMenu
{
private static final String TAG = "EmacsContextMenu";
diff --git a/java/org/gnu/emacs/EmacsCopyArea.java
b/java/org/gnu/emacs/EmacsCopyArea.java
index 1daa2190542..f69b0cde866 100644
--- a/java/org/gnu/emacs/EmacsCopyArea.java
+++ b/java/org/gnu/emacs/EmacsCopyArea.java
@@ -27,7 +27,7 @@ import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.Xfermode;
-public class EmacsCopyArea
+public final class EmacsCopyArea
{
private static Xfermode overAlu;
diff --git a/java/org/gnu/emacs/EmacsDialog.java
b/java/org/gnu/emacs/EmacsDialog.java
index 9f9124ce99c..80a5e5f7369 100644
--- a/java/org/gnu/emacs/EmacsDialog.java
+++ b/java/org/gnu/emacs/EmacsDialog.java
@@ -38,7 +38,7 @@ import android.view.ViewGroup;
describes a single alert dialog. Then, `inflate' turns it into
AlertDialog. */
-public class EmacsDialog implements DialogInterface.OnDismissListener
+public final class EmacsDialog implements DialogInterface.OnDismissListener
{
private static final String TAG = "EmacsDialog";
diff --git a/java/org/gnu/emacs/EmacsDocumentsProvider.java
b/java/org/gnu/emacs/EmacsDocumentsProvider.java
index 3c3c7ead3c5..901c3b909e0 100644
--- a/java/org/gnu/emacs/EmacsDocumentsProvider.java
+++ b/java/org/gnu/emacs/EmacsDocumentsProvider.java
@@ -48,7 +48,7 @@ import java.io.IOException;
This functionality is only available on Android 19 and later. */
-public class EmacsDocumentsProvider extends DocumentsProvider
+public final class EmacsDocumentsProvider extends DocumentsProvider
{
/* Home directory. This is the directory whose contents are
initially returned to requesting applications. */
diff --git a/java/org/gnu/emacs/EmacsDrawLine.java
b/java/org/gnu/emacs/EmacsDrawLine.java
index c6e5123bfca..0b23138a36c 100644
--- a/java/org/gnu/emacs/EmacsDrawLine.java
+++ b/java/org/gnu/emacs/EmacsDrawLine.java
@@ -29,7 +29,7 @@ import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.Xfermode;
-public class EmacsDrawLine
+public final class EmacsDrawLine
{
public static void
perform (EmacsDrawable drawable, EmacsGC gc,
diff --git a/java/org/gnu/emacs/EmacsDrawPoint.java
b/java/org/gnu/emacs/EmacsDrawPoint.java
index 3bc7be17961..de8ddf09cc4 100644
--- a/java/org/gnu/emacs/EmacsDrawPoint.java
+++ b/java/org/gnu/emacs/EmacsDrawPoint.java
@@ -19,7 +19,7 @@ along with GNU Emacs. If not, see
<https://www.gnu.org/licenses/>. */
package org.gnu.emacs;
-public class EmacsDrawPoint
+public final class EmacsDrawPoint
{
public static void
perform (EmacsDrawable drawable,
diff --git a/java/org/gnu/emacs/EmacsDrawRectangle.java
b/java/org/gnu/emacs/EmacsDrawRectangle.java
index 695a8c6ea44..ce5e94e4a76 100644
--- a/java/org/gnu/emacs/EmacsDrawRectangle.java
+++ b/java/org/gnu/emacs/EmacsDrawRectangle.java
@@ -27,7 +27,7 @@ import android.graphics.RectF;
import android.util.Log;
-public class EmacsDrawRectangle
+public final class EmacsDrawRectangle
{
public static void
perform (EmacsDrawable drawable, EmacsGC gc,
diff --git a/java/org/gnu/emacs/EmacsFillPolygon.java
b/java/org/gnu/emacs/EmacsFillPolygon.java
index 22e2dd0d8a9..d55a0b3aca8 100644
--- a/java/org/gnu/emacs/EmacsFillPolygon.java
+++ b/java/org/gnu/emacs/EmacsFillPolygon.java
@@ -29,7 +29,7 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.RectF;
-public class EmacsFillPolygon
+public final class EmacsFillPolygon
{
public static void
perform (EmacsDrawable drawable, EmacsGC gc, Point points[])
diff --git a/java/org/gnu/emacs/EmacsFillRectangle.java
b/java/org/gnu/emacs/EmacsFillRectangle.java
index aed0a540c8f..4a0478b446f 100644
--- a/java/org/gnu/emacs/EmacsFillRectangle.java
+++ b/java/org/gnu/emacs/EmacsFillRectangle.java
@@ -26,7 +26,7 @@ import android.graphics.Rect;
import android.util.Log;
-public class EmacsFillRectangle
+public final class EmacsFillRectangle
{
public static void
perform (EmacsDrawable drawable, EmacsGC gc,
diff --git a/java/org/gnu/emacs/EmacsGC.java b/java/org/gnu/emacs/EmacsGC.java
index bdc27a1ca5b..a7467cb9bd0 100644
--- a/java/org/gnu/emacs/EmacsGC.java
+++ b/java/org/gnu/emacs/EmacsGC.java
@@ -29,7 +29,7 @@ import android.graphics.Xfermode;
/* X like graphics context structures. Keep the enums in synch with
androidgui.h! */
-public class EmacsGC extends EmacsHandleObject
+public final class EmacsGC extends EmacsHandleObject
{
public static final int GC_COPY = 0;
public static final int GC_XOR = 1;
diff --git a/java/org/gnu/emacs/EmacsInputConnection.java
b/java/org/gnu/emacs/EmacsInputConnection.java
index 834c2226c82..ed64c368857 100644
--- a/java/org/gnu/emacs/EmacsInputConnection.java
+++ b/java/org/gnu/emacs/EmacsInputConnection.java
@@ -36,7 +36,7 @@ import android.util.Log;
See EmacsEditable for more details. */
-public class EmacsInputConnection extends BaseInputConnection
+public final class EmacsInputConnection extends BaseInputConnection
{
private static final String TAG = "EmacsInputConnection";
private EmacsView view;
@@ -243,6 +243,15 @@ public class EmacsInputConnection extends
BaseInputConnection
return super.sendKeyEvent (key);
}
+ @Override
+ public boolean
+ deleteSurroundingTextInCodePoints (int beforeLength, int afterLength)
+ {
+ /* This can be implemented the same way as
+ deleteSurroundingText. */
+ return this.deleteSurroundingText (beforeLength, afterLength);
+ }
+
/* Override functions which are not implemented. */
diff --git a/java/org/gnu/emacs/EmacsNative.java
b/java/org/gnu/emacs/EmacsNative.java
index f0917a68120..b1205353090 100644
--- a/java/org/gnu/emacs/EmacsNative.java
+++ b/java/org/gnu/emacs/EmacsNative.java
@@ -25,7 +25,7 @@ import android.content.res.AssetManager;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest;
-public class EmacsNative
+public final class EmacsNative
{
/* List of native libraries that must be loaded during class
initialization. */
diff --git a/java/org/gnu/emacs/EmacsNoninteractive.java
b/java/org/gnu/emacs/EmacsNoninteractive.java
index 30901edb75f..f365037b311 100644
--- a/java/org/gnu/emacs/EmacsNoninteractive.java
+++ b/java/org/gnu/emacs/EmacsNoninteractive.java
@@ -44,7 +44,7 @@ import java.lang.reflect.Method;
initializes Emacs. */
@SuppressWarnings ("unchecked")
-public class EmacsNoninteractive
+public final class EmacsNoninteractive
{
private static String
getLibraryDirectory (Context context)
diff --git a/java/org/gnu/emacs/EmacsOpenActivity.java
b/java/org/gnu/emacs/EmacsOpenActivity.java
index 87ce454a816..fddd5331d2f 100644
--- a/java/org/gnu/emacs/EmacsOpenActivity.java
+++ b/java/org/gnu/emacs/EmacsOpenActivity.java
@@ -68,7 +68,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
-public class EmacsOpenActivity extends Activity
+public final class EmacsOpenActivity extends Activity
implements DialogInterface.OnClickListener
{
private static final String TAG = "EmacsOpenActivity";
diff --git a/java/org/gnu/emacs/EmacsPixmap.java
b/java/org/gnu/emacs/EmacsPixmap.java
index a83d8f25542..eb011bc5e65 100644
--- a/java/org/gnu/emacs/EmacsPixmap.java
+++ b/java/org/gnu/emacs/EmacsPixmap.java
@@ -29,7 +29,7 @@ import android.os.Build;
/* Drawable backed by bitmap. */
-public class EmacsPixmap extends EmacsHandleObject
+public final class EmacsPixmap extends EmacsHandleObject
implements EmacsDrawable
{
/* The depth of the bitmap. This is not actually used, just defined
diff --git a/java/org/gnu/emacs/EmacsPreferencesActivity.java
b/java/org/gnu/emacs/EmacsPreferencesActivity.java
index 85639fe9236..70934fa4bd4 100644
--- a/java/org/gnu/emacs/EmacsPreferencesActivity.java
+++ b/java/org/gnu/emacs/EmacsPreferencesActivity.java
@@ -42,7 +42,7 @@ import android.preference.*;
Unfortunately, there is no alternative that looks the same way. */
@SuppressWarnings ("deprecation")
-public class EmacsPreferencesActivity extends PreferenceActivity
+public final class EmacsPreferencesActivity extends PreferenceActivity
{
/* Restart Emacs with -Q. Call EmacsThread.exit to kill Emacs now, and
tell the system to EmacsActivity with some parameters later. */
diff --git a/java/org/gnu/emacs/EmacsSdk11Clipboard.java
b/java/org/gnu/emacs/EmacsSdk11Clipboard.java
index ea35a463299..a05184513cd 100644
--- a/java/org/gnu/emacs/EmacsSdk11Clipboard.java
+++ b/java/org/gnu/emacs/EmacsSdk11Clipboard.java
@@ -32,7 +32,7 @@ import java.io.UnsupportedEncodingException;
/* This class implements EmacsClipboard for Android 3.0 and later
systems. */
-public class EmacsSdk11Clipboard extends EmacsClipboard
+public final class EmacsSdk11Clipboard extends EmacsClipboard
implements ClipboardManager.OnPrimaryClipChangedListener
{
private static final String TAG = "EmacsSdk11Clipboard";
diff --git a/java/org/gnu/emacs/EmacsSdk23FontDriver.java
b/java/org/gnu/emacs/EmacsSdk23FontDriver.java
index 11e128d5769..aaba8dbd166 100644
--- a/java/org/gnu/emacs/EmacsSdk23FontDriver.java
+++ b/java/org/gnu/emacs/EmacsSdk23FontDriver.java
@@ -22,7 +22,7 @@ package org.gnu.emacs;
import android.graphics.Paint;
import android.graphics.Rect;
-public class EmacsSdk23FontDriver extends EmacsSdk7FontDriver
+public final class EmacsSdk23FontDriver extends EmacsSdk7FontDriver
{
private void
textExtents1 (Sdk7FontObject font, int code, FontMetrics metrics,
diff --git a/java/org/gnu/emacs/EmacsSdk8Clipboard.java
b/java/org/gnu/emacs/EmacsSdk8Clipboard.java
index 34e66912562..818a722a908 100644
--- a/java/org/gnu/emacs/EmacsSdk8Clipboard.java
+++ b/java/org/gnu/emacs/EmacsSdk8Clipboard.java
@@ -31,7 +31,7 @@ import java.io.UnsupportedEncodingException;
similarly old systems. */
@SuppressWarnings ("deprecation")
-public class EmacsSdk8Clipboard extends EmacsClipboard
+public final class EmacsSdk8Clipboard extends EmacsClipboard
{
private static final String TAG = "EmacsSdk8Clipboard";
private ClipboardManager manager;
diff --git a/java/org/gnu/emacs/EmacsService.java
b/java/org/gnu/emacs/EmacsService.java
index 7f4f75b5147..e61d9487375 100644
--- a/java/org/gnu/emacs/EmacsService.java
+++ b/java/org/gnu/emacs/EmacsService.java
@@ -82,7 +82,7 @@ class Holder<T>
/* EmacsService is the service that starts the thread running Emacs
and handles requests by that Emacs instance. */
-public class EmacsService extends Service
+public final class EmacsService extends Service
{
public static final String TAG = "EmacsService";
public static final int MAX_PENDING_REQUESTS = 256;
diff --git a/java/org/gnu/emacs/EmacsSurfaceView.java
b/java/org/gnu/emacs/EmacsSurfaceView.java
index 62e927094e4..e0411f7f8b3 100644
--- a/java/org/gnu/emacs/EmacsSurfaceView.java
+++ b/java/org/gnu/emacs/EmacsSurfaceView.java
@@ -35,7 +35,7 @@ import java.lang.ref.WeakReference;
own back buffers, which use too much memory (up to 96 MB for a
single frame.) */
-public class EmacsSurfaceView extends View
+public final class EmacsSurfaceView extends View
{
private static final String TAG = "EmacsSurfaceView";
private EmacsView view;
diff --git a/java/org/gnu/emacs/EmacsView.java
b/java/org/gnu/emacs/EmacsView.java
index 89f526853b2..d2330494bc7 100644
--- a/java/org/gnu/emacs/EmacsView.java
+++ b/java/org/gnu/emacs/EmacsView.java
@@ -51,7 +51,7 @@ import android.util.Log;
It is also a ViewGroup, as it also lays out children. */
-public class EmacsView extends ViewGroup
+public final class EmacsView extends ViewGroup
{
public static final String TAG = "EmacsView";
diff --git a/java/org/gnu/emacs/EmacsWindow.java
b/java/org/gnu/emacs/EmacsWindow.java
index 90fc4c44198..007a2a86e68 100644
--- a/java/org/gnu/emacs/EmacsWindow.java
+++ b/java/org/gnu/emacs/EmacsWindow.java
@@ -59,7 +59,7 @@ import android.os.Build;
Views are also drawables, meaning they can accept drawing
requests. */
-public class EmacsWindow extends EmacsHandleObject
+public final class EmacsWindow extends EmacsHandleObject
implements EmacsDrawable
{
private static final String TAG = "EmacsWindow";
diff --git a/java/org/gnu/emacs/EmacsWindowAttachmentManager.java
b/java/org/gnu/emacs/EmacsWindowAttachmentManager.java
index 510300571b8..1548bf28087 100644
--- a/java/org/gnu/emacs/EmacsWindowAttachmentManager.java
+++ b/java/org/gnu/emacs/EmacsWindowAttachmentManager.java
@@ -50,7 +50,7 @@ import android.util.Log;
Finally, every time a window is removed, the consumer is
destroyed. */
-public class EmacsWindowAttachmentManager
+public final class EmacsWindowAttachmentManager
{
public static EmacsWindowAttachmentManager MANAGER;
private final static String TAG = "EmacsWindowAttachmentManager";
- feature/android updated (03c0cb86713 -> a0c3643abde), Po Lu, 2023/03/01
- feature/android 15bcb446be2 3/7: Update Android port,
Po Lu <=
- feature/android ad8e12b9f99 5/7: Update Android port, Po Lu, 2023/03/01
- feature/android f8a2619d981 2/7: More fixes to JNI error checking, Po Lu, 2023/03/01
- feature/android 920168c5d87 6/7: Fix mostlyclean rules, Po Lu, 2023/03/01
- feature/android 194b3f948cb 4/7: Update Android port, Po Lu, 2023/03/01
- feature/android 49d5aa36579 1/7: Merge remote-tracking branch 'origin/master' into feature/android, Po Lu, 2023/03/01
- feature/android a0c3643abde 7/7: Merge remote-tracking branch 'origin/master' into feature/android, Po Lu, 2023/03/01