aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside-tools/deploy_lib/android/buildozer.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside-tools/deploy_lib/android/buildozer.py')
-rw-r--r--sources/pyside-tools/deploy_lib/android/buildozer.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/sources/pyside-tools/deploy_lib/android/buildozer.py b/sources/pyside-tools/deploy_lib/android/buildozer.py
index 1465ea3f1..e6a954c62 100644
--- a/sources/pyside-tools/deploy_lib/android/buildozer.py
+++ b/sources/pyside-tools/deploy_lib/android/buildozer.py
@@ -76,17 +76,20 @@ class BuildozerConfig(BaseConfig):
local_libs = ",".join(pysidedeploy_config.local_libs)
- extra_args = (f"--qt-libs={modules} --load-local-libs={local_libs}")
- self.set_value("app", "p4a.extra_args", extra_args)
-
# add permissions
permissions = self.__find_permissions(dependency_files)
permissions = ", ".join(permissions)
self.set_value("app", "android.permissions", permissions)
- # add jars
- jars = self.__find_jars(dependency_files, pysidedeploy_config.jars_dir)
+ # add jars and initClasses for the jars
+ jars, init_classes = self.__find_jars(dependency_files, pysidedeploy_config.jars_dir)
self.set_value("app", "android.add_jars", ",".join(jars))
+ init_classes = ",".join(init_classes)
+
+ #extra arguments specific to Qt
+ extra_args = (f"--qt-libs={modules} --load-local-libs={local_libs}"
+ f" --init-classes={init_classes}")
+ self.set_value("app", "p4a.extra_args", extra_args)
# TODO: does not work atm. Seems like a bug with buildozer
# change buildozer build_dir
@@ -126,7 +129,7 @@ class BuildozerConfig(BaseConfig):
return permissions
def __find_jars(self, dependency_files: List[zipfile.Path], jars_dir: Path):
- jars = set()
+ jars, init_classes = set(), set()
for dependency_file in dependency_files:
xml_content = dependency_file.read_text()
root = ET.fromstring(xml_content)
@@ -139,19 +142,26 @@ class BuildozerConfig(BaseConfig):
else:
logging.warning(f"[DEPLOY] Unable to include {jar_file}. "
f"{jar_file} does not exist in {jars_dir}")
+ continue
else:
logging.warning(f"[DEPLOY] Unable to include {jar_file}. "
"All jar file paths should begin with 'jar/'")
+ continue
+
+ jar_init_class = jar.attrib.get('initClass')
+ if jar_init_class:
+ init_classes.add(jar_init_class)
# add the jar with all the activity and service java files
# this is created from Qt for Python instead of Qt
+ # The initClasses for this are already taken care of by python-for-android
android_bindings_jar = jars_dir / "Qt6AndroidBindings.jar"
if android_bindings_jar.exists():
jars.add(str(android_bindings_jar))
else:
raise FileNotFoundError(f"{android_bindings_jar} not found in wheel")
- return jars
+ return jars, init_classes
def __find_local_libs(self, dependency_files: List[zipfile.Path]):
local_libs = set()