From e72f575eea48e863f020882cd0f00e7873a10908 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Thu, 7 Jul 2022 19:03:06 +0200 Subject: [PATCH] android build: factor out package name ("org.electrum.electrum") to make it easier to change, to make it easy to have a co-existing mainnet and testnet install (or two mainnet installs, etc) --- contrib/android/make_apk | 5 +++++ electrum/logging.py | 8 +++----- electrum/util.py | 23 ++++++++++++++++++++++- run_electrum | 4 +--- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/contrib/android/make_apk b/contrib/android/make_apk index d87265333..9e09ec4b1 100755 --- a/contrib/android/make_apk +++ b/contrib/android/make_apk @@ -42,6 +42,11 @@ pushd "$CONTRIB_ANDROID" info "apk building phase starts." +# Uncomment and change below to set a custom android package id, +# e.g. to allow simultaneous mainnet and testnet installs of the apk. +# export APP_PACKAGE_NAME=Electrum +# export APP_PACKAGE_DOMAIN=org.electrum + if [ ! $CI ]; then # override log level specified in buildozer.spec to "debug": export BUILDOZER_LOG_LEVEL=2 diff --git a/electrum/logging.py b/electrum/logging.py index bf5d8caae..f1191a4fc 100644 --- a/electrum/logging.py +++ b/electrum/logging.py @@ -310,17 +310,15 @@ class Logger: def configure_logging(config: 'SimpleConfig', *, log_to_file: Optional[bool] = None) -> None: + from .util import is_android_debug_apk + verbosity = config.get('verbosity') verbosity_shortcuts = config.get('verbosity_shortcuts') _configure_stderr_logging(verbosity=verbosity, verbosity_shortcuts=verbosity_shortcuts) if log_to_file is None: log_to_file = config.get('log_to_file', False) - is_android = 'ANDROID_DATA' in os.environ - if is_android: - from jnius import autoclass - build_config = autoclass("org.electrum.electrum.BuildConfig") - log_to_file |= bool(build_config.DEBUG) + log_to_file |= is_android_debug_apk() if log_to_file: log_directory = pathlib.Path(config.path) / "logs" _configure_file_logging(log_directory) diff --git a/electrum/util.py b/electrum/util.py index 94629d055..157106097 100644 --- a/electrum/util.py +++ b/electrum/util.py @@ -444,7 +444,8 @@ def android_ext_dir(): return primary_external_storage_path() def android_backup_dir(): - d = os.path.join(android_ext_dir(), 'org.electrum.electrum') + pkgname = get_android_package_name() + d = os.path.join(android_ext_dir(), pkgname) if not os.path.exists(d): os.mkdir(d) return d @@ -511,6 +512,26 @@ def get_new_wallet_name(wallet_folder: str) -> str: return filename +def is_android_debug_apk() -> bool: + is_android = 'ANDROID_DATA' in os.environ + if not is_android: + return False + from jnius import autoclass + pkgname = get_android_package_name() + build_config = autoclass(f"{pkgname}.BuildConfig") + return bool(build_config.DEBUG) + + +def get_android_package_name() -> str: + is_android = 'ANDROID_DATA' in os.environ + assert is_android + from jnius import autoclass + from android.config import ACTIVITY_CLASS_NAME + activity = autoclass(ACTIVITY_CLASS_NAME).mActivity + pkgname = str(activity.getPackageName()) + return pkgname + + def assert_bytes(*args): """ porting helper, assert args type diff --git a/run_electrum b/run_electrum index 163eb6659..395698bdb 100755 --- a/run_electrum +++ b/run_electrum @@ -324,10 +324,8 @@ def main(): if is_android: import importlib.util android_gui = 'kivy' if importlib.util.find_spec('kivy') else 'qml' - from jnius import autoclass - build_config = autoclass("org.electrum.electrum.BuildConfig") config_options = { - 'verbosity': '*' if build_config.DEBUG else '', + 'verbosity': '*' if util.is_android_debug_apk() else '', 'cmd': 'gui', 'gui': android_gui, 'single_password':True,