AndroidManifest.xml

作者:追风剑情 发布于:2015-6-17 18:35 分类:Android

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. package="com.unity3d.player"
  5. android:installLocation="preferExternal"
  6. android:versionCode="1"
  7. android:versionName="1.0">
  8. <supports-screens
  9. android:smallScreens="true"
  10. android:normalScreens="true"
  11. android:largeScreens="true"
  12. android:xlargeScreens="true"
  13. android:anyDensity="true"/>
  14.  
  15. <application
  16. android:icon="@drawable/app_icon"
  17. android:label="@string/app_name"
  18. android:debuggable="true">
  19. <activity android:name="com.unity3d.player.UnityPlayerProxyActivity"
  20. android:label="@string/app_name"
  21. android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
  22. <intent-filter>
  23. <action android:name="android.intent.action.MAIN" />
  24. <category android:name="android.intent.category.LAUNCHER" />
  25. </intent-filter>
  26. </activity>
  27. <activity android:name="com.unity3d.player.UnityPlayerActivity"
  28. android:label="@string/app_name"
  29. android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
  30. </activity>
  31. <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
  32. android:label="@string/app_name"
  33. android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
  34. <meta-data android:name="android.app.lib_name" android:value="unity" />
  35. <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
  36. </activity>
  37. </application>
  38. </manifest>
此xml是unity下的一个Android配置
Unity2018.3.1f1\Editor\Data\PlaybackEngines\AndroidPlayer\Apk\AndroidManifest.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. package="com.unity3d.player"
  5. xmlns:tools="http://schemas.android.com/tools"
  6. android:installLocation="preferExternal">
  7. <supports-screens
  8. android:smallScreens="true"
  9. android:normalScreens="true"
  10. android:largeScreens="true"
  11. android:xlargeScreens="true"
  12. android:anyDensity="true"/>
  13.  
  14. <application
  15. android:theme="@style/UnityThemeSelector"
  16. android:icon="@mipmap/app_icon"
  17. android:label="@string/app_name">
  18. <activity android:name="com.unity3d.player.UnityPlayerActivity"
  19. android:label="@string/app_name">
  20. <intent-filter>
  21. <action android:name="android.intent.action.MAIN" />
  22. <category android:name="android.intent.category.LAUNCHER" />
  23. </intent-filter>
  24. <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
  25. </activity>
  26. </application>
  27. </manifest>
Unity2018.3.1f1反编译APK后得到的AndroidManifest.xml文件内容
  1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.zwwx.demox" platformBuildVersionCode="1" platformBuildVersionName="1.0">
  3. <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
  4. <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true"/>
  5. <uses-feature android:glEsVersion="0x20000"/>
  6. <uses-permission android:name="android.permission.INTERNET"/>
  7. <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
  8. <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false"/>
  9. <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false"/>
  10. <application android:icon="@mipmap/app_icon" android:label="@string/app_name" android:theme="@style/UnityThemeSelector">
  11. <receiver android:enabled="true" android:exported="true" android:name="com.unity.analytics.InstallReferrerReceiver">
  12. <intent-filter>
  13. <action android:name="com.android.vending.INSTALL_REFERRER"/>
  14. </intent-filter>
  15. </receiver>
  16. <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">
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN"/>
  19. <category android:name="android.intent.category.LAUNCHER"/>
  20. </intent-filter>
  21. <meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
  22. </activity>
  23. <meta-data android:name="unity.build-id" android:value="b9bec38f-5b7c-4e83-ac8e-bed3bcaaf96e"/>
  24. <meta-data android:name="unity.splash-mode" android:value="0"/>
  25. <meta-data android:name="unity.splash-enable" android:value="true"/>
  26. </application>
  27. </manifest>


标签: Android

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号