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>