一.AndroidManifest.xml介绍

  1.定义

    AndroidManifest官方解释是应用清单(manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。

它是Android程序的全局配置文件,是每个 android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。

2.AndroidManifest的作用是什么?

上述的功能是非常笼统的解释,具体到细节就是:

为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符。

描述应用的各个组件,包括构成应用的 Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命名并发布其功能,例如它们可以处理的 Intent 消息。这些声明向 Android 系统告知有关组件以及可以启动这些组件的条件的信息。

确定托管应用组件的进程。

声明应用必须具备哪些权限才能访问 API 中受保护的部分并与其他应用交互。还声明其他应用与该应用组件交互所需具备的权限

列出 Instrumentation类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除。

声明应用所需的最低 Android API 级别

列出应用必须链接到的库

上面是官方的解释。很多东西笔者现在还不能理解,也没有用到,先挑笔者理解的进行解释。

第一条:提供软件包名。这就是我们的apk的名字,通常我们的名字都是类似"com.android.gles3jni"这种,和Java类名类似,目的是确定使其成为一个唯一值。

第二条:描述应用的各个组件。这是用来定义四大组件用的。我们最常用的就是Activity组件。它需要定义组件的表现形式(组件名、主题、启动类型),组件可以响应的操作(例如某个启动意图)等。

第三条、第四条和第五条:还没用到,不做解释。

第五条:声明最低API级别。这个级别在build.gradle文件中也能定义,字段是minSdkVersion。在AndroidManifest.xml文件中定义的情况比较少。

第六条:列出必要的lib库。这东西在3.0以后的Android Studio似乎也没什么功能,因为在3.0以后编译用的是CMakeLists.txt文件,以及build.gradle文件来指定库。

二.AndroidManifest.xml具体组成

1.一份真实的AndroidManifest.xml

<?xml version="1.0"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="org.qtproject.example.zoomlinechart"

    android:installLocation="auto"

    android:versionCode="1"

    android:versionName="1.0">

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    

    <supports-screens

        android:anyDensity="true"

        android:largeScreens="true"

        android:normalScreens="true"

        android:smallScreens="true" />

    <application

        android:name="org.qtproject.qt.android.bindings.QtApplication"

        android:hardwareAccelerated="true"

        android:label="zoomlinechart"

        android:requestLegacyExternalStorage="true"

        android:allowBackup="true"

        android:fullBackupOnly="false">

        <activity

            android:name="org.qtproject.qt.android.bindings.QtActivity"

            android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"

            android:launchMode="singleTop"

            android:screenOrientation="unspecified"

            android:exported="true">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

          <meta-data

                android:name="android.app.lib_name"

                android:value="zoomlinechart" />

          <meta-data

                android:name="android.app.arguments"

                android:value="" />

        </activity>

        <provider

            android:name="androidx.core.content.FileProvider"

            android:authorities="${applicationId}.qtprovider"

            android:exported="false"

            android:grantUriPermissions="true">

            <meta-data

                android:name="android.support.FILE_PROVIDER_PATHS"

                android:resource="@xml/qtprovider_paths"/>

        </provider>

    </application>

</manifest>

2.AndroidManifest.xml各个部分属性参考文章:

https://cloud.tencent.com/developer/article/1858085

https://blog.csdn.net/qq_41382216/article/details/88868338

三.QT工程中打开AndroidManifest.xml查看及设置内容

Android应用开发之AndroidManifest.xml-LMLPHP

四.QT工程中自定义AndroidManifest.xml设置方法:

在工程文件pro文件中添加:

    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android

说明:$$PWD/android:为当前工程下的android目录,在里面添加自定义的AndroidManifest.xml配置文件即可。

05-23 23:41