鸟语天空
AndroidManifest.xml
post by:追风剑情 2015-6-17 18:35

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配置
Unity2018.3.1f1\Editor\Data\PlaybackEngines\AndroidPlayer\Apk\AndroidManifest.xml
<?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>


评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容