diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-06-22 19:34:12 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-07-01 23:54:15 +0300 |
commit | 963a31c0f4b48c3734352706fbbdae69f19b59eb (patch) | |
tree | ce808dae29905d9bb83d343d79f60abefedd55ac /src/android/java | |
parent | af6bc5a21bbef6a5870f8e49c2cc70c53d4fa352 (diff) |
Android: Make the manifest less to scary to read and edit
Remove unnecessary elements from the manifest file, making it
easier to manage and read. Mostly, the removed elements are
more internal data that is populated by the build system
and the user shouldn't have to worry or confront that.
Also, use the same formatting used by Android Studio.
[ChangeLog][Android] Remove some elements from the manifest
file that are internal, to make it easier to deal with the
manifest.
Pick-to: 6.2
Change-Id: I6a1f275b579370972c0bf022502a8fbfe7d0bfd1
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Diffstat (limited to 'src/android/java')
-rw-r--r-- | src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java | 82 |
1 files changed, 45 insertions, 37 deletions
diff --git a/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java b/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java index 7a122f658a..ef53e91bab 100644 --- a/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java +++ b/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java @@ -1,4 +1,5 @@ /* + Copyright (C) 2021 The Qt Company Ltd. Copyright (c) 2019, BogDan Vatra <bogdan@kde.org> Contact: http://www.qt.io/licensing/ @@ -42,6 +43,7 @@ import android.content.ContextWrapper; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ComponentInfo; +import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.util.Log; @@ -170,28 +172,29 @@ public abstract class QtLoader { // this function is used to load and start the loader private void loadApplication(Bundle loaderParams) { + final Resources resources = m_context.getResources(); + final String packageName = m_context.getPackageName(); try { final int errorCode = loaderParams.getInt(ERROR_CODE_KEY); if (errorCode != 0) { // fatal error, show the error and quit AlertDialog errorDialog = new AlertDialog.Builder(m_context).create(); errorDialog.setMessage(loaderParams.getString(ERROR_MESSAGE_KEY)); - errorDialog.setButton(m_context.getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + errorDialog.setButton(resources.getString(android.R.string.ok), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); errorDialog.show(); return; } // add all bundled Qt libs to loader params - ArrayList<String> libs = new ArrayList<String>(); - if (m_contextInfo.metaData.containsKey("android.app.bundled_libs_resource_id")) { - int resourceId = m_contextInfo.metaData.getInt("android.app.bundled_libs_resource_id"); - libs.addAll(prefferedAbiLibs(m_context.getResources().getStringArray(resourceId))); - } + int id = resources.getIdentifier("bundled_libs", "array", packageName); + final String[] bundledLibs = resources.getStringArray(id); + ArrayList<String> libs = new ArrayList<>(prefferedAbiLibs(bundledLibs)); String libName = null; if (m_contextInfo.metaData.containsKey("android.app.lib_name")) { @@ -225,17 +228,16 @@ public abstract class QtLoader { } catch (Exception e) { e.printStackTrace(); AlertDialog errorDialog = new AlertDialog.Builder(m_context).create(); - if (m_contextInfo.metaData.containsKey("android.app.fatal_error_msg")) - errorDialog.setMessage(m_contextInfo.metaData.getString("android.app.fatal_error_msg")); - else - errorDialog.setMessage("Fatal error, your application can't be started."); - - errorDialog.setButton(m_context.getResources().getString(android.R.string.ok), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }); + int id = resources.getIdentifier("fatal_error_msg", "string", + packageName); + errorDialog.setMessage(resources.getString(id)); + errorDialog.setButton(resources.getString(android.R.string.ok), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + finish(); + } + }); errorDialog.show(); } } @@ -243,14 +245,16 @@ public abstract class QtLoader { public void startApp(final boolean firstStart) { try { - if (m_contextInfo.metaData.containsKey("android.app.qt_libs_resource_id")) { - int resourceId = m_contextInfo.metaData.getInt("android.app.qt_libs_resource_id"); - m_qtLibs = prefferedAbiLibs(m_context.getResources().getStringArray(resourceId)); - } + final Resources resources = m_context.getResources(); + final String packageName = m_context.getPackageName(); + int id = resources.getIdentifier("qt_libs", "array", packageName); + m_qtLibs = prefferedAbiLibs(resources.getStringArray(id)); - if (m_contextInfo.metaData.containsKey("android.app.use_local_qt_libs") - && m_contextInfo.metaData.getInt("android.app.use_local_qt_libs") == 1) { - ArrayList<String> libraryList = new ArrayList<String>(); + id = resources.getIdentifier("use_local_qt_libs", "string", packageName); + final int useLocalLibs = Integer.parseInt(resources.getString(id)); + + if (useLocalLibs == 1) { + ArrayList<String> libraryList = new ArrayList<>(); boolean apkDeployFromSystem = false; String apkPath = m_context.getApplicationInfo().publicSourceDir; @@ -293,10 +297,13 @@ public abstract class QtLoader { libraryList.add(libPrefix + lib + ".so"); } - if (m_contextInfo.metaData.containsKey("android.app.bundle_local_qt_libs") - && m_contextInfo.metaData.getInt("android.app.bundle_local_qt_libs") == 1) { - int resourceId = m_contextInfo.metaData.getInt("android.app.load_local_libs_resource_id"); - for (String libs : prefferedAbiLibs(m_context.getResources().getStringArray(resourceId))) { + id = resources.getIdentifier("bundle_local_qt_libs", "string", packageName); + final int bundleLocalLibs = Integer.parseInt(resources.getString(id)); + + if (bundleLocalLibs == 1) { + id = resources.getIdentifier("load_local_libs", "array", packageName); + ArrayList<String> localLibs = prefferedAbiLibs(resources.getStringArray(id)); + for (String libs : localLibs) { for (String lib : libs.split(":")) { if (!lib.isEmpty()) libraryList.add(libsDir + lib); @@ -310,10 +317,11 @@ public abstract class QtLoader { loaderParams.putInt(ERROR_CODE_KEY, 0); loaderParams.putString(DEX_PATH_KEY, new String()); loaderParams.putString(LOADER_CLASS_NAME_KEY, loaderClassName()); - if (m_contextInfo.metaData.containsKey("android.app.static_init_classes")) { - loaderParams.putStringArray(STATIC_INIT_CLASSES_KEY, - m_contextInfo.metaData.getString("android.app.static_init_classes").split(":")); - } + + id = resources.getIdentifier("static_init_classes", "string", packageName); + loaderParams.putStringArray(STATIC_INIT_CLASSES_KEY, resources.getString(id) + .split(":")); + loaderParams.putStringArrayList(NATIVE_LIBRARIES_KEY, libraryList); |