Android应用程序描述文件。
标签介绍
<permission>
声明一个安全授权, 用来限制哪些应用可以访问您的程序包内的组件和特有机制(既: 自己定义的权限,就是别人调用这个程序时需要用<uses-permission>来声明)。
<uses-permission>
请求一个安全授权。
android:noHistory
这个属性用于设置在用户离开该Activity,并且它在屏幕上不再可见的时候,它是否应该从Activity的堆栈被删除。如果设置了true,则要删除,否则不删除。默认值是false。如果设置为true,则意味着Activity不会保留历史轨迹。也就是说,它不会保留在任务的Activity堆栈中,因此用户不能够在返回到这个Activity。这个属性在API Level 3中被引入。
android:installLocation="auto | internalOnly(默认值) | preferExternal"
android:installLocation隶属于AndroidManifest.XML中的manifest节点
auto: 默认安装到手机内存中,当手机内存为空时,程序将被安装到外部存储介质中。
internalOnly : 程序只能被安装在内存中,如果内存为空,则程序将不能成功安装.
preferExternal : 将程序安装在外部介质上,当外部介质为空或不可用时,程序将被安装到手机内存中。
设置适应所有分辨率
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true" />
配置改变
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|
screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
uses-feature
Android可以在各种各样的硬件平台上运行。可以使用多个uses-feature节点来指定应用程序需要的每个硬件功能。这可以避免将应用程序安装到不包含必要硬件功能(例如NFC硬件)的设备上。如下所示:
<uses-feature android:name="android.hardware.nfc" />
可以要求支持兼容设备上可选的任意硬件。目前,可选的硬件功能包括:
音频:用于要求低延迟音频管道的应用程序。
蓝牙:用于需要蓝牙传输的应用程序。
摄像头:用于要求有摄像头的应用程序。还可以要求具有自动聚焦功能、闪光灯或前向摄像头(或把它们设为可选项)。
位置:用于需要基于位置的服务的应用程序。还可以显式指定要求网络或GPS支持。
麦克风:用于需要音频输入的应用程序。
NFC:要求NFC(近场通信)支持。
传感器:指定对任何潜在可用的硬件传感器的要求。
电话服务:指定需要一般性的电话服务,或者特定的无线发送方式(GSM或CDMA)。
触摸屏:指定应用程序需要的触摸屏类型。
USB:用于需要支持USB host或accessory模式的应用程序。
Wi-Fi:用于需要支持Wi-Fi网络的应用程序。
required属性设为false代表可选:
<uses-feature android:name="android.hardware.microphone" android:required="false" />
摄像头硬件还代表着一种特殊的情况。当出于兼容性原因要求有摄像头的使用权限时,或者添加了一个需要摄像头的使用权限的uses-feature节点时,暗含的要求就是摄像头要支持自动聚焦功能。在合适的地方可以把它指定为可选项:
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
也可以使用uses-feature节点指定应用程序所需的OpenGL的最低版本。只需要使用glEsVersion属性,将OpenGL ES版本指定为一个整数即可。高16位代表主版本号,低16位代表次版本号,所以版本1.1可以表示为:
<uses-feature android:glEsVersion="0x00010001" />
硬件的完整列表
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#features-reference
android:exported
以 Android 12 为目标平台的应用(target API 级别 31),如果包含用 intent filters 修饰的 activities,services,broadcast receivers,则必须为这些应用组件显式声明 android:exported 属性,表明是否支持其它应用调用当前组件。
示例:
此xml是unity下的一个Android配置
\Unity4_0\Editor\Data\PlaybackEngines\androidplayer\AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
android:installLocation="preferExternal"
android:versionCode="1"
android:versionName="1.0">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<application
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name="com.unity3d.player.UnityPlayerProxyActivity"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
</activity>
<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
</activity>
</application>
</manifest>
此xml是unity下的一个Android配置 <?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="preferExternal">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<application
android:theme="@style/UnityThemeSelector"
android:icon="@mipmap/app_icon"
android:label="@string/app_name">
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
</application>
</manifest>
Unity2018.3.1f1反编译APK后得到的AndroidManifest.xml文件内容
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.zwwx.demox" platformBuildVersionCode="1" platformBuildVersionName="1.0">
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true"/>
<uses-feature android:glEsVersion="0x20000"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false"/>
<application android:icon="@mipmap/app_icon" android:label="@string/app_name" android:theme="@style/UnityThemeSelector">
<receiver android:enabled="true" android:exported="true" android:name="com.unity.analytics.InstallReferrerReceiver">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
<activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|layoutDirection|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:hardwareAccelerated="false" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:screenOrientation="sensorLandscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
</activity>
<meta-data android:name="unity.build-id" android:value="b9bec38f-5b7c-4e83-ac8e-bed3bcaaf96e"/>
<meta-data android:name="unity.splash-mode" android:value="0"/>
<meta-data android:name="unity.splash-enable" android:value="true"/>
</application>
</manifest>