App Manifest手记

本文深入探讨Android应用中Activity配置选项,包括启动模式、任务亲和性等关键属性,旨在帮助开发者更好地理解并利用这些设置来优化用户体验。

App Manifest手记

本篇文章主要参考google官方文档:https://developer.android.com/guide/topics/manifest/activity-element.html#screen

代码结构如下:

<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "screenSize",
                                 "smallestScreenSize"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:maxRecents="integer"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    . . .
</activity>

    当中android属性太多,这里就不一一列举了。
### app.manifest 文件的作用和配置方法 #### 作用 `app.manifest` 文件在 Windows 应用程序中起着关键作用,主要用于定义应用程序的运行时权限需求和依赖项。它决定了应用程序是否需要以管理员身份运行,以及是否需要与特定的 Windows 版本或运行时库兼容。例如,通过在 `app.manifest` 文件中设置 `<requestedExecutionLevel>`,可以指定应用程序是否需要管理员权限,这对于执行需要系统级访问权限的操作(如修改受保护的注册表项或写入受限制的目录)至关重要[^3]。 此外,`app.manifest` 文件还可以指定应用程序的兼容性模式、依赖的 Side-by-Side(SxS)组件,以及是否启用视觉样式、高 DPI 设置等用户体验相关的配置。 #### 配置方法 在配置 `app.manifest` 文件时,通常需要手动编辑其 XML 内容。以下是一些常见的配置项及其作用: - **请求管理员权限** 通过 `<requestedExecutionLevel>` 元素指定应用程序的执行级别。例如,将 `level` 设置为 `requireAdministrator` 可确保应用程序始终以管理员身份运行,适用于需要系统级权限的场景: ```xml <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> ``` 如果希望应用程序在用户权限下运行,但允许在需要时提升权限,可以将 `level` 设置为 `asInvoker`,这是默认行为[^3]。 - **兼容性设置** 可以通过 `<compatibility>` 元素指定应用程序支持的 Windows 版本,确保其在不同系统上的兼容性。例如,以下配置允许应用程序在 Windows 10 上运行: ```xml <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> </application> </compatibility> ``` - **依赖项配置** 如果应用程序依赖特定的 Side-by-Side 组件(如 Visual C++ Redistributable),可以在 `<dependency>` 元素中声明这些依赖项。例如,以下配置确保应用程序使用 Microsoft 提供的公共运行时库: ```xml <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a9e18e3b"/> </dependentAssembly> </dependency> ``` - **用户界面相关设置** 除了权限和依赖项,`app.manifest` 还可以配置应用程序的视觉样式和 DPI 行为。例如,以下配置启用了视觉样式支持,使应用程序能够使用当前系统的主题外观: ```xml <application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> <autoEraseChildClassBackgroundColor xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</autoEraseChildClassBackgroundColor> </windowsSettings> </application> ``` #### 注意事项 在修改 `app.manifest` 文件时,应确保其格式正确,并且与应用程序的构建配置相匹配。如果使用集成开发环境(如 Visual Studio),通常可以在项目属性中直接编辑或启用特定的配置选项,而无需手动修改整个文件。对于某些跨平台框架(如 .NET 或 Electron),可能还需要结合其他配置文件(如 `package.json` 或 `manifest.json`)进行综合管理[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值