Android AndroidManifest 文件内标签及属性

以下是重新排版后的文章:

AndroidManifest

1. <manifest>

  • 它是AndroidManifest.xml文件的根标签,包含了整个应用程序的基本信息,如应用程序的包名、版本代码、版本名称等。所有其他标签几乎都是在manifest标签内部定义的。

  • 示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"android:sharedUserId="com.example.shareduser"android:versionCode="1"android:versionName="1.0"android:installLocation="preferExternal"><!-- 这里可以继续添加<application>、<uses - permission>等子标签 -->
</manifest>

属性

  1. xmlns:android

    • 含义:定义 Android 命名空间,用于在清单文件中引用 Android 系统提供的各种属性和标签。
    • 示例
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication">
    
    • 这个命名空间使得在后续的标签和属性设置中能够使用android:前缀来引用 Android 系统定义的标准属性,如android:iconandroid:label等。
  2. package

    • 含义:指定应用程序的包名。这个包名在整个 Android 系统中是唯一的,用于识别应用。它是应用的一个重要标识符,在很多场景下都会用到,比如组件的引用、权限的定义等。
    • 示例
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication">
    
    • 包名通常采用反向域名的格式,如com.example.myapplication,其中com.example是开发者或组织的域名倒写,myapplication是应用的具体名称部分。
  3. android:sharedUserId

    • 含义:用于多个应用之间共享用户 ID。当多个应用设置了相同的sharedUserId时,它们可以访问彼此的数据,并且在一定程度上可以共享进程等资源。不过,这种共享也需要谨慎使用,因为可能会带来安全风险。
    • 示例
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"android:sharedUserId="com.example.shareduser">
    
    • 在这个例子中,设置了共享用户 ID 为com.example.shareduser,如果其他应用也设置了相同的sharedUserId,就可以在符合权限规则的情况下共享资源。
  4. android:versionCode

    • 含义:用于表示应用程序的版本号,是一个整数值。这个版本号主要用于系统和应用市场来区分应用的不同版本,用于升级等操作。例如,当新版本的versionCode大于旧版本时,系统可以提示用户进行升级。
    • 示例
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"android:versionCode="1">
    
    • 开发者在更新应用时,需要逐步递增这个版本号,一般来说,每次发布一个新的版本,版本号都应该比之前的版本大。
  5. android:versionName

    • 含义:这是一个用于显示给用户的版本名称,通常是一个字符串,如1.01.1 - beta等格式。它主要用于用户在应用市场或者应用的关于页面中查看应用的版本信息。
    • 示例
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"android:versionName="1.0">
    
    • versionCode不同,versionName更侧重于用户友好的版本展示,它可以包含一些额外的信息,如版本的阶段(alpha、beta、release 等)。
  6. android:installLocation

    • 含义:用于指定应用的安装位置。它可以有三个值:internalOnly(仅安装在内部存储)、preferExternal(优先安装在外部存储,如果外部存储不可用则安装在内部存储)和auto(由系统根据存储情况决定安装位置)。
    • 示例
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myapplication"android:installLocation="preferExternal">
    
    • 这个设置可以帮助用户更好地管理设备的存储空间,特别是对于一些大型应用或者存储资源有限的设备。

1.2. <uses - permission>

  • 用于声明应用需要的权限。这些权限允许应用访问受保护的系统资源或执行特定的操作。例如,访问网络、读取联系人等。
  • 示例:
<uses - permission android:name="android.permission.INTERNET"/>
  • 这个标签表示应用需要访问网络的权限。

1.3. <permission>

  • 用于定义应用自己的权限。如果应用希望提供数据或者服务给其他应用,并且想要控制对这些内容的访问,就可以使用这个标签来定义权限。
  • 示例:
<permissionandroid:name="com.example.myapplication.permission.MY_PERMISSION"android:description="@string/permission_description"android:label="@string/permission_label"android:protectionLevel="normal"/>

1.4. <instrumentation>

  • 主要用于测试。它可以用来监视应用的运行情况,例如在测试自动化框架中使用,通过它可以在应用运行时收集各种数据。
  • 示例:
<instrumentationandroid:name="android.test.InstrumentationTestRunner"android:targetPackage="com.example.myapplication"/>

1.5. <uses - sdk>

  • 用于指定应用所兼容的 Android SDK 版本信息,包括最小 SDK 版本、目标 SDK 版本和最大 SDK 版本。这有助于确保应用在合适的 Android 设备上运行,并且可以利用特定版本的 API。
  • Android studio3.0 以后 sdk 最小版本设置不能在 manifest.xml 设置,必须在 gradle 里设置功能。
  • 示例:
<uses - sdkandroid:minSdkVersion="21"android:targetSdkVersion="30"/>

1.6. <uses - feature>

  • 用于声明应用所使用的设备硬件或软件功能。例如,如果应用需要使用相机功能,就可以使用这个标签来声明。这样可以帮助应用市场等平台更好地筛选设备,确保应用在具有所需功能的设备上安装。
  • 示例:
<uses - feature android:name="android.hardware.camera"/>

1.7. <supports - screens>

  • 用于指定应用支持的屏幕尺寸和密度。这有助于确保应用在不同屏幕的设备上(如手机、平板等)都能有较好的显示效果。
  • 示例:
<supports - screensandroid:smallScreens="true"android:normalScreens="true"android:largeScreens="true"/>

1.8. <compatible - screens>

  • 这个标签与supports - screens类似,但它是更严格的屏幕兼容性定义。它可以指定应用只兼容某些特定的屏幕尺寸和密度组合。
  • 示例:
<compatible - screens><screenandroid:screenSize="small"android:screenDensity="mdpi"/>
</compatible - screens>

1.9. <application>

  • 如前面所述,它用于描述应用程序本身的各种属性和组件,包括 Activity、Service、Broadcast Receiver 和 Content Provider 等。这是定义应用功能的核心标签之一。
  • 示例:
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><!-- 定义 Activity、Service 等组件 -->
</application>

属性

  1. android:icon

    • 含义:用于指定应用程序的图标。
  2. android:label

    • 含义:用于设置应用程序的名称。这个名称会在应用图标旁边显示(如在主屏幕或应用抽屉中),也可能在系统的应用管理界面等地方出现。一般引用string资源,如@string/app_name
    • app_name对应的字符串会作为应用的名称展示给用户。
  3. android:allowBackup

    • 含义:AllowBackup 是在 Android 2.2 中引入的一个系统备份的功能。允许用户备份系统应用和第三方应用的 apk 安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过 adb backup 和 adb restore 来进行对应用数据的备份和恢复。第三方应用开发者需要在应用的 AndroidManifest.xml 文件中配置 allowBackup 标志(默认为 true )来设置应用数据是否能能够被备份或恢复。

    • allowBackup 会引起的高危漏洞是什么?

    • Android 属性 allowBackup 安全风险源于 adb backup 容许任何一个能够打开 USB 调试开关的人从 Android 手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取;adb restore 容许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。因此,当一个应用数据被备份之后,用户即可在其他 Android 手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打开该应用即可恢复到被备份的应用程序的状态。

    • 尤其是通讯录应用,一旦应用程序支持备份和恢复功能,攻击者即可通过 adb backup 和 adb restore 进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;因此为了安全起见,开发者务必将 allowBackup 标志值设置为 false 来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。

    • android:allowBackup设置为false时,系统不会备份该应用的数据。

  4. android:backupAgent

    • 含义:用于指定备份代理类。如果android:allowBackuptrue,并且需要自定义备份行为,可以通过这个属性指定一个实现了android.app.backup.BackupAgent接口的类来处理备份和恢复操作。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:allowBackup="true"android:backupAgent="com.example.myapp.MyBackupAgent"><!-- 应用组件定义 -->
    </application>
    
    • 这里MyBackupAgent是自定义的备份代理类,用于处理应用数据的备份和恢复细节。
  5. android:debuggable

    • 含义:一个布尔值属性,用于指定应用是否可以被调试。在开发阶段,通常设置为true,这样开发工具(如 Android Studio)可以连接到应用进行调试。在发布版本中,应该设置为false以提高应用的安全性。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:debuggable="true"><!-- 应用组件定义 -->
    </application>
    
    • android:debuggabletrue时,应用可以被调试工具连接并进行调试操作。
  6. android:description

    • 含义:用于提供应用的详细描述。这个描述可能会在应用市场等地方显示,帮助用户了解应用的功能和用途。通常引用string资源,如@string/app_description
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:description="@string/app_description"><!-- 应用组件定义 -->
    </application>
    
    • app_description对应的字符串内容会作为应用的详细描述展示给用户。
  7. android:enabled

    • 含义:一个布尔值属性,用于指定应用是否启用。如果设置为false,应用将无法正常启动,所有组件也不会响应。默认值为true
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:enabled="false"><!-- 应用组件定义 -->
    </application>
    
    • android:enabledfalse时,应用处于禁用状态。
  8. android:hardwareAccelerated

    • 含义:一个布尔值属性,用于指定应用是否启用硬件加速。硬件加速可以利用设备的 GPU 来加速图形渲染等操作,提高应用的性能,特别是对于有大量图形处理的应用。默认值因 Android 版本而异。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:hardwareAccelerated="true"><!-- 应用组件定义 -->
    </application>
    
    • android:hardwareAcceleratedtrue时,应用会尝试使用硬件加速来提升性能。
  9. android:largeHeap

    • 含义:一个布尔值属性,用于指定应用是否可以使用较大的堆内存。默认情况下,Android 为应用分配一定大小的内存堆,当设置android:largeHeaptrue时,允许应用使用更多的内存,但这可能会影响设备的整体性能和稳定性,并且需要谨慎使用。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:largeHeap="true"><!-- 应用组件定义 -->
    </application>
    
    • android:largeHeaptrue时,应用有机会使用比正常情况下更多的内存。
  10. android:permission

    • 含义:用于指定访问这个应用组件的权限。如果其他应用想要访问这个应用的组件(如 Activity、Service 等),需要拥有这个指定的权限。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:permission="com.example.myapp.PERMISSION_TO_ACCESS"><!-- 应用组件定义 -->
    </application>
    
    • 其他应用要访问这个应用的组件,就需要声明com.example.myapp.PERMISSION_TO_ACCESS这个权限。
  11. android:process

    • 含义:用于指定应用组件运行的进程。默认情况下,所有组件都在应用的默认进程中运行,但可以通过这个属性为不同的组件指定不同的进程,甚至可以让多个应用共享一个进程。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity android:name=".MyActivity"android:process=":my_process"><!-- 其他内容 --></activity>
    </application>
    
    • 这里MyActivity会在名为:my_process的进程中运行,而不是在应用的默认进程中。
  12. android:restoreAnyVersion

    • 含义:一个布尔值属性,用于指定在恢复应用数据时是否允许恢复任何版本的数据。如果设置为true,系统会尝试使用备份代理恢复数据,即使备份的数据是来自应用的旧版本。默认值为false
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:restoreAnyVersion="true"><!-- 应用组件定义 -->
    </application>
    
    • android:restoreAnyVersiontrue时,系统在恢复数据时会更灵活地处理不同版本的数据备份。
  13. android:taskAffinity

    • 含义:用于指定 Activity 所属的任务相关性。它主要用于确定 Activity 在任务栈中的归属,以及与其他任务栈的关系。默认情况下,一个应用的所有 Activity 都具有相同的任务相关性,与应用的包名相关。
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity android:name=".MyActivity"android:taskAffinity="com.example.myapp.my_task"><!-- 其他内容 --></activity>
    </application>
    
    • 这里MyActivity的任务相关性被设置为com.example.myapp.my_task,这可能会影响它在任务栈中的行为,比如在启动新的 Activity 或者处理返回键操作时。
  14. android:usesCleartextTraffic

    • 含义:一个布尔值属性,用于指定应用是否允许使用明文网络流量。在一些安全要求较高的环境中,可能需要限制应用只能使用加密的网络连接(如HTTPS),此时可以将这个属性设置为false。默认值为true
    • 示例
    <applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:usesCleartextTraffic="false"><!-- 应用组件定义 -->
    </application>
    
    • android:usesCleartextTrafficfalse时,应用在网络通信中会受到限制,不能使用明文协议(如HTTP)。
  15. tools:replace
    tools:replace是一个 Android Gradle 插件中用于处理合并清单文件时的属性。

  • 含义:当在 Android 项目中使用多个清单文件(例如库项目和主项目都有自己的AndroidManifest.xml),在合并这些清单文件的过程中可能会出现冲突。tools:replace属性允许开发者指定哪些元素或属性应该在合并时被替换,而不是产生合并错误。
    如果AAR或者moudle内给Application设置过属性,如果主工程也需要设置,那么主工程需要覆盖这些属性
tools:replace="android:name,android:allowBackup,android:label,android:supportsRtl"

否则异常:

> Task :app:processDebugManifest
> 
D:\project_xxx\code\DfskAarTestDemo\app\src\main\AndroidManifest.xml:6:5-37:19 
Warning:application@android:name was tagged at AndroidManifest.xml:6 to replace other declarations but no other declaration presentD:\project_xxx\code\DfskAarTestDemo\app\src\main\AndroidManifest.xml:6:5-37:19 Warning:application@android:allowBackup was tagged at AndroidManifest.xml:6 to replace other declarations but no other declaration present
  1. android:configChanges
    configChanges是 AndroidManifest.xml 文件中的一个属性,可以指定哪些配置变化不会导致重新创建 Activity。当你的应用需要在某些配置变化发生时保持用户状态或不希望发生界面重建时,可以通过这个属性来动态处理。
android:configChanges="orientation|keyboardHidden|navigation|screenSize|locale|layoutDirection|uiMode|fontScale|mcc|mnc|screenLayout|smallestScreenSize|touchscreen|keyboard"
  1. android:requestLegacyExternalStorage
    在 Android 10 中,系统对应用程序的文件访问权限进行了一些更改。默认情况下,应用程序无法访问外部存储(如SD卡)中的文件。然而,为了向后兼容性,Android 10 提供了一个属性requestLegacyExternalStorage,可以让应用程序继续使用旧的存储访问行为。

1.9.1. <activity>

  • 含义:Activity是 Android 应用中最基本的组件之一,用于实现用户界面。每个 Activity 通常对应一个屏幕的内容。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity android:name=".MainActivity"><intent - filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent - filter></activity>
</application>
  • 在这个例子中,MainActivity是应用的主启动 Activity。intent - filter中的actioncategory标签组合指定了该 Activity 是应用的主入口,当用户点击应用图标时会启动这个 Activity。

属性

  1. android:name

    • 含义:指定 Activity 的类名。这是最重要的属性之一,用于在清单文件中明确标识 Activity。可以使用完整的包名和类名(如com.example.myapp.MyActivity),也可以使用相对路径(如.MyActivity,它会基于清单文件中的package属性来确定完整的类名)。
    • 示例
    <activity android:name=".MainActivity"><intent - filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent - filter>
    </activity>
    
    • 在这里,android:name=".MainActivity"表示该 Activity 对应的类是在当前应用包名基础上的MainActivity类。
  2. android:label

    • 含义:用于设置 Activity 的标题或标签。这个标题通常会显示在屏幕的顶部(如在 ActionBar 或 Toolbar 中),或者在任务管理器等地方作为 Activity 的标识。可以引用字符串资源(如@string/activity_label),也可以直接使用字符串。
    • 示例
    <activity android:name=".MyActivity"android:label="@string/activity_title"><!-- 其他内容 -->
    </activity>
    
    • 当应用运行时,MyActivity的标题会显示为strings.xml文件中activity_title所对应的字符串内容。
  3. android:icon

    • 含义:用于指定 Activity 的图标。图标可以用于在任务管理器、最近使用的应用列表等地方显示 Activity 的标识。和android:label一样,可以引用drawable资源(如@drawable/activity_icon)。
    • 示例
    <activity android:name=".AnotherActivity"android:icon="@drawable/activity_icon"><!-- 其他内容 -->
    </activity>
    
    • 这个属性使得AnotherActivity在需要显示图标的地方(如任务切换界面)会显示drawable文件夹下activity_icon对应的图标。
  4. android:theme

    • 含义:用于设置 Activity 的主题。主题决定了 Activity 的外观风格,包括颜色、背景、字体等方面。可以引用系统自带的主题(如@android:style/Theme.Holo.Light),也可以使用自定义主题。
    • 示例
    <activity android:name=".CustomThemeActivity"android:theme="@style/CustomTheme"><!-- 其他内容 -->
    </activity>
    
    • 这里CustomThemeActivity会应用名为CustomTheme的主题,这个主题可以在styles.xml文件中进行定义,通过修改主题的属性来改变 Activity 的整体外观。
  5. android:launchMode

    • 含义:用于指定 Activity 的启动模式。它决定了在多个 Activity 实例之间如何交互和管理任务栈。常见的启动模式有standard(默认模式,每次启动都会创建一个新的实例)、singleTop(如果目标 Activity 已经在栈顶,则复用该实例,否则创建新实例)、singleTask(如果栈中已经存在目标 Activity,则清除它上面的所有 Activity,使目标 Activity 位于栈顶)和singleInstance(该 Activity 会在一个单独的任务栈中运行)。
    • 示例
    <activity android:name=".SingleTopActivity"android:launchMode="singleTop"><!-- 其他内容 -->
    </activity>
    
    • 当启动SingleTopActivity时,如果它已经在栈顶,就不会创建新的实例,而是会调用现有实例的onNewIntent()方法来处理新的意图。
  6. android:noHistory

    • 含义:一个布尔值属性。当设置为true时,Activity 在用户离开(如按下返回键或启动其他 Activity)后不会被保留在任务栈中,即不会在用户通过返回键返回时再次出现。
    • 示例
    <activity android:name=".NoHistoryActivity"android:noHistory="true"><!-- 其他内容 -->
    </activity>
    
    • 这样NoHistoryActivity在用户离开后就不会出现在任务栈中,适用于一些临时的、不需要保留历史记录的界面,比如登录成功后的过渡页面。
  7. android:parentActivityName

    • 含义:用于指定 Activity 的父 Activity。这在处理向上导航(如在 ActionBar 中点击向上箭头)时非常有用。系统可以根据这个属性自动为 Activity 添加向上导航的功能。
    • 示例
    <activity android:name=".ChildActivity"android:parentActivityName=".MainActivity"><!-- 其他内容 -->
    </activity>
    
    • ChildActivity处于前台时,ActionBar 上可能会出现一个向上箭头,点击它可以导航回到MainActivity
  8. android:screenOrientation

    • 含义:用于指定 Activity 的屏幕方向。可以设置为portrait(竖屏)、landscape(横屏)、sensor(根据传感器自动旋转)等多种值。
    • 示例
    <activity android:name=".FixedOrientationActivity"android:screenOrientation="portrait"><!-- 其他内容 -->
    </activity>
    
    • 这个FixedOrientationActivity会一直保持竖屏状态,不会随着设备的旋转而改变屏幕方向。
  9. android:windowSoftInputMode

    • 含义:用于指定当软键盘出现时,Activity 的窗口如何调整。例如,可以设置为stateVisible(软键盘总是可见)、adjustResize(调整 Activity 的大小以适应软键盘)、adjustPan(平移 Activity 的内容以显示被软键盘遮挡的部分)等。
    • 示例
    <activity android:name=".InputActivity"android:windowSoftInputMode="adjustResize"><!-- 其他内容 -->
    </activity>
    
    • 当软键盘在InputActivity中出现时,Activity 会自动调整大小,使得内容能够适应软键盘出现后的屏幕空间。

1.9.1.1. <intent - filter>

  • 含义:用于指定 Activity 能够响应的意图(Intent)类型。它可以包含一个或多个<action><category><data>标签的组合,以定义 Activity 可以处理的不同情况。
  • 示例
<activity android:name=".MainActivity"><intent - filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent - filter>
</activity>
  • 在这个例子中,action标签指定了MAIN动作,category标签指定了LAUNCHER类别,这表示该 Activity 是应用的主启动 Activity,当用户点击应用图标时,系统会发送一个带有MAIN动作和LAUNCHER类别的意图,这个 Activity 就会被启动。
1.9.1.1.1. <action>
  • 含义:用于指定一个意图动作。它定义了 Activity(或其他组件)可以响应的操作类型。例如,android.intent.action.MAIN表示这是主要的启动动作,android.intent.action.VIEW通常用于查看数据等操作。
  • 示例
<intent - filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/>
</intent - filter>
  • 在这个示例中,action标签中的android.intent.action.MAIN表明该组件是一个主要的启动点,通常与LAUNCHER类别配合,用于启动应用。
1.9.1.1.2. <category>
  • 含义:用于进一步对意图进行分类。除了动作之外,类别可以帮助系统更精准地匹配意图和组件。例如,android.intent.category.LAUNCHER用于标记可以在启动器中显示的组件,android.intent.category.DEFAULT是一个默认类别,用于隐式意图。
  • 示例
<intent - filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.intent.category.BROWSABLE"/>
</intent - filter>
  • 这里的 Activity 可以响应VIEW动作,并且同时属于DEFAULTBROWSABLE类别。这可能意味着它可以从浏览器等其他应用中启动,用于查看某些内容,比如网页链接对应的自定义视图。
1.9.1.1.3. <data>
  • 含义:用于指定与意图相关的数据的类型、格式和位置等信息。这可以包括数据的 MIME 类型(如text/plain表示纯文本)、数据的 URI(统一资源标识符)等。
  • 示例
<intent - filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:mimeType="image/*"/>
</intent - filter>
  • 此 Activity 可以响应VIEW动作,对于DEFAULT类别,并且处理的数据类型是任意图像(image/*),可能用于显示图片。例如,当用户尝试从文件管理器或其他应用中查看一张图片时,这个 Activity 有机会被启动来展示该图像。

1.9.1.2. <meta - data>

  • 含义:为 Activity 提供额外的自定义数据。这些数据可以是各种类型,如字符串、整数等,用于配置 Activity 的特殊行为或者传递一些信息。
  • 示例
<activity android:name=".MyActivity"><meta - dataandroid:name="custom_key"android:value="custom_value"/>
</activity>
  • 这里MyActivity有一个名为custom_key的元数据,其值为custom_value。在 Activity 的代码中,可以通过getMetaData()等方法获取这些元数据来进行相应的处理,例如根据这个自定义数据来决定 Activity 的某些布局或者功能。

1.9.2. <service>

  • 含义:Service用于在后台执行长时间运行的操作,不提供用户界面。例如,音乐播放服务、文件下载服务等。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><service android:name=".MyService"></service>
</application>
  • 这里定义了一个名为MyService的服务,当需要在后台执行任务时,可以在代码中启动这个服务来完成相应的操作。

属性

  1. android:name
    • 含义:指定 Service 的类名。可以是完整包名和类名,也可以是相对路径(基于清单文件中的package属性来确定完整类名)。这是用于在清单文件中明确标识 Service 的关键属性。
  • 示例
<service android:name=".MyService"></service>
  1. android:enabled
    • 含义:布尔值属性,用于确定 Service 是否启用。设置为false时,Service 无法启动,默认值为true,可用于根据条件禁用 Service。
    • 示例
<service android:name=".MyService"android:enabled="false"></service>
  1. android:exported
    • 含义:布尔值属性,用于指定 Service 是否可被其他应用程序组件调用。true表示可以被外部应用访问,false(默认)表示只能在应用内部访问。
    • 示例
<service android:name=".InternalService"android:exported="false"></service>
  1. android:icon
    • 含义:用于指定 Service 的图标。图标可能在某些调试或管理工具中显示以标识 Service,通常引用drawable资源。
    • 示例
<service android:name=".VisibleService"android:icon="@drawable/service_icon"></service>
  1. android:label
    • 含义:用于设置 Service 的标签或名称,可能在调试工具、系统服务管理界面等地方显示以标识 Service,一般引用string资源。
    • 示例
<service android:name=".NamedService"android:label="@string/service_label"></service>
  1. android:permission
    • 含义:用于指定调用该 Service 所需的权限。其他组件(包括其他应用中的组件)启动或绑定此 Service 时需要拥有该权限。
    • 示例
<service android:name=".ProtectedService"android:permission="com.example.myapp.ACCESS_SERVICE"></service>
  1. android:process
    • 含义:用于指定 Service 运行的进程。默认在应用主进程中运行,也可指定单独进程,用于隔离运行环境,提高稳定性和性能。
    • 示例
<service android:name=".IsolatedService"android:process=":service_process"></service>
  1. android:foregroundServiceType
    • 含义:从 Android 9(API 级别 28)开始引入,用于更精细地指定前台服务的类型,如locationmediaPlaybackphoneCall等,以符合系统对不同类型前台服务的管理要求。
    • 示例
<serviceandroid:name=".MyLocationService"android:foregroundServiceType="location"><!-- 其他服务相关内容 -->
</service>
  1. android:stopWithTask
    • 含义:布尔值属性,用于指定当与服务关联的任务结束时,服务是否随之停止。默认值为true,设置为false时,服务将在任务结束后继续运行。
    • 示例
<serviceandroid:name=".MyPersistentForegroundService"android:stopWithTask="false"><!-- 其他服务相关内容 -->
</service>

1.9.2.1. <intent - filter>

  • 含义:和 Activity 中的intent - filter类似,用于指定 Service 能够响应的意图类型。通过定义动作(<action>)、类别(<category>)和数据(<data>)等信息,让其他组件(如 Activity)可以通过特定的意图来启动或绑定该 Service。
  • 示例
<service android:name=".MyService"><intent - filter><action android:name="com.example.myapp.START_MY_SERVICE"/></intent - filter>
</service>
  • 在这里,定义了一个动作com.example.myapp.START_MY_SERVICE,其他组件可以通过发送带有这个动作的意图来启动MyService
1.9.2.1.1. <action>
  • 含义:用于指定服务可以响应的动作。这是intent - filter中最重要的标签之一,通过定义动作,外部组件可以发送特定动作的意图来启动或与服务交互。例如,一个音乐播放服务可能定义android.media.action.PLAY这样的动作。
  • 示例
<service android:name=".MusicService"><intent - filter><action android:name="android.media.action.PLAY"/></intent - filter>
</service>
  • 在这里,MusicService可以响应PLAY动作,当其他组件(如音乐播放控制器 Activity)发送带有android.media.action.PLAY动作的意图时,这个服务就可以执行播放音乐的操作。
1.9.2.1.2. <category>
  • 含义:用于进一步对意图进行分类,以更精确地匹配意图和服务。虽然在服务的intent - filter中不像在 Activity 中那么常用,但在某些情况下可以用于提供额外的筛选条件。例如,android.intent.category.DEFAULT类别可以用于隐式意图。
  • 示例
<service android:name=".DownloadService"><intent - filter><action android:name="com.example.download.START_DOWNLOAD"/><category android:name="android.intent.category.DEFAULT"/></intent - filter>
</service>
  • 在这个例子中,DownloadService除了响应START_DOWNLOAD动作外,还属于DEFAULT类别,这有助于在使用隐式意图调用服务时更准确地匹配。
1.9.2.1.3. <data>
  • 含义:用于指定与意图相关的数据的类型、格式和位置等信息。在服务中,这可以用于处理特定类型的数据相关操作。例如,一个文件处理服务可能会根据数据的 MIME 类型或者 URI 来处理文件。
  • 示例
<service android:name=".FileService"><intent - filter><action android:name="com.example.file.PROCESS_FILE"/><data android:mimeType="text/plain"/></intent - filter>
</service>
  • FileService可以响应PROCESS_FILE动作,并且处理的数据类型是纯文本(text/plain),可能用于读取、修改或其他文本文件相关的操作。

1.9.2.2. <meta - data>

  • 含义:用于为 Service 提供额外的自定义数据。这些数据可以在 Service 的代码中获取,用于配置 Service 的特殊行为或者传递一些信息。
  • 示例
<service android:name=".MyService"><meta - dataandroid:name="custom_key"android:value="custom_value"/>
</service>
  • 此 Service 有一个名为custom_key的元数据,其值为custom_value,在 Service 的onCreate()或其他合适的方法中,可以通过相应的 API 获取这些元数据来进行处理。

1.9.3. <receiver>

  • 含义:Broadcast Receiver 用于接收系统或应用发出的广播消息。例如,电池电量变化、网络连接变化等广播都可以被接收。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><receiver android:name=".MyReceiver"><intent - filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></intent - filter></receiver>
</application>
  • 这个MyReceiver广播接收器可以接收网络连接改变的广播消息,当网络状态发生变化时,应用可以根据这个广播来执行相应的操作。

属性

  1. android:name
    • 含义:用于指定 Broadcast Receiver 的类名。可以是完整的包名和类名(如com.example.myapp.MyReceiver),也可以是相对路径(如.MyReceiver,它会基于清单文件中的package属性来确定完整的类名)。这是在清单文件中标识 Broadcast Receiver 的关键属性。
    • 示例
<receiver android:name=".MyReceiver"><intent - filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></intent - filter>
</receiver>
  1. android:enabled
    • 含义:一个布尔值属性,用于确定 Broadcast Receiver 是否启用。如果设置为false,则该接收器无法接收广播,默认值为true。这可以用于在某些情况下(如根据用户配置或设备条件)禁用特定的 Broadcast Receiver。
    • 示例
<receiver android:name=".MyReceiver"android:enabled="false"><intent - filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></intent - filter>
</receiver>
  1. android:exported
    • 含义:一个布尔值属性,用于指定 Broadcast Receiver 是否可以接收来自其他应用的广播。如果设置为true,则可以接收外部应用发送的广播;如果设置为false(默认值),则只能接收本应用内部发送的广播。
    • 示例
<receiver android:name=".InternalReceiver"android:exported="false"><intent - filter><action android:name="com.example.myapp.INTERNAL_ACTION"/></intent - filter>
</receiver>
  1. android:icon
    • 含义:用于指定 Broadcast Receiver 的图标。这个图标可能在某些调试或管理工具中显示,用于标识 Broadcast Receiver。通常引用drawable资源,如@drawable/receiver_icon。不过,在实际应用中,Broadcast Receiver 图标使用场景相对较少。
    • 示例
<receiver android:name=".VisibleReceiver"android:icon="@drawable/receiver_icon"><intent - filter><action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/></intent - filter>
</receiver>
  1. android:label
    • 含义:用于设置 Broadcast Receiver 的标签或名称。这个名称可能在调试工具、系统广播管理界面等地方显示,用于标识 Broadcast Receiver。一般引用string资源,如@string/receiver_label
    • 示例
<receiver android:name=".NamedReceiver"android:label="@string/receiver_label"><intent - filter><action android:name="android.intent.action.BATTERY_CHANGED"/></intent - filter>
</receiver>
  1. android:permission
    • 含义:用于指定发送广播到这个 Broadcast Receiver 所需的权限。如果其他组件(包括其他应用中的组件)想要向这个接收器发送广播,需要拥有这个指定的权限。
    • 示例
<receiver android:name=".ProtectedReceiver"android:permission="com.example.myapp.SEND_BROADCAST_TO_RECEIVER"><intent - filter><action android:name="com.example.myapp.PROTECTED_ACTION"/></intent - filter>
</receiver>

1.9.3.1. <intent - filter>

  • 含义:这是 Broadcast Receiver 中最重要的标签之一。它用于指定该接收器能够接收的广播意图类型。通过在intent - filter中定义动作(<action>)、类别(<category>)和数据(<data>)等元素,来匹配系统或应用发出的广播。
  • 示例
<receiver android:name=".MyReceiver"><intent - filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></intent - filter>
</receiver>
  • 在这个例子中,MyReceiver可以接收网络连接改变(android.net.conn.CONNECTIVITY_CHANGE)的广播。当网络状态发生变化时,系统会发送这个广播,MyReceiver就能够捕获并处理它。

1.9.3.2. <meta - data>

  • 含义:用于为 Broadcast Receiver 提供额外的自定义数据。这些数据可以在接收器的代码中获取,用于配置接收器的特殊行为或者传递一些信息。
  • 示例
<receiver android:name=".MyReceiver"><meta - dataandroid:name="custom_key"android:value="custom_value"/>
</receiver>
  • 这里MyReceiver有一个名为custom_key的元数据,其值为custom_value。在接收器的onReceive()方法或者其他合适的地方,可以通过相应的 API 获取这些元数据来进行处理,比如根据这个自定义数据来决定是否处理接收到的广播。

1.9.4. <provider>

  • 含义:Content Provider 用于在不同的应用之间共享数据。例如,一个应用可以通过 Content Provider 将自己的数据(如联系人、短信等)提供给其他应用访问。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"></provider>
</application>
  • android:name指定了 Content Provider 的类名,android:authorities定义了一个唯一的标识,其他应用可以通过这个标识来访问该 Content Provider 提供的数据。

属性

  1. android:name
    • 含义:用于指定 Content Provider 的类名。可以是完整的包名和类名(如com.example.myapp.MyContentProvider),也可以是相对路径(如.MyContentProvider,它会基于清单文件中的package属性来确定完整的类名)。这是在清单文件中标识 Content Provider 的关键属性。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"><!-- 其他标签 -->
</provider>
  1. android:authorities
    • 含义:定义一个唯一的标识,用于其他应用访问该 Content Provider 提供的数据。这个标识通常是一个字符串,格式类似于域名反转的形式,并且在整个系统中应该是唯一的。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"><!-- 其他标签 -->
</provider>
  1. android:enabled
    • 含义:一个布尔值属性,用于确定 Content Provider 是否启用。如果设置为false,则 Content Provider 无法被访问,默认值为true。这可以用于在某些情况下(如根据用户配置或设备条件)禁用特定的 Content Provider。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:enabled="false"><!-- 其他标签 -->
</provider>
  1. android:exported
    • 含义:一个布尔值属性,用于指定 Content Provider 是否可以被其他应用访问。如果设置为true,则可以被外部应用访问;如果设置为false(默认值),则只能在本应用内部访问。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:exported="false"><!-- 其他标签 -->
</provider>
  1. android:grantUriPermissions
    • 含义:一个布尔值属性,用于指定是否允许临时授予对 Content Provider 中 URI 的访问权限。如果设置为true,可以通过ContentResolver的相关方法在运行时动态地授予其他应用对特定 URI 的访问权限。默认值为false
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:grantUriPermissions="true"><!-- 其他标签 -->
</provider>
  1. android:icon
    • 含义:用于指定 Content Provider 的图标。这个图标可能在某些调试或管理工具中显示,用于标识 Content Provider。通常引用drawable资源,如@drawable/provider_icon。不过,在实际应用中,Content Provider 图标使用场景相对较少。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:icon="@drawable/provider_icon"><!-- 其他标签 -->
</provider>
  1. android:label
    • 含义:用于设置 Content Provider 的标签或名称。这个名称可能在调试工具、系统内容提供管理界面等地方显示,用于标识 Content Provider。一般引用string资源,如@string/provider_label
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:label="@string/provider_label"><!-- 其他标签 -->
</provider>
  1. android:multiprocess
    • 含义:一个布尔值属性,用于指定 Content Provider 是否在每个访问它的进程中都创建一个实例。如果设置为true,每个进程都会有自己的 Content Provider 实例;如果设置为false(默认值),Content Provider 在整个应用的进程中共享一个实例。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:multiprocess="true"><!-- 其他标签 -->
</provider>
  1. android:permission
    • 含义:用于指定访问这个 Content Provider 所需的权限。如果其他组件(包括其他应用中的组件)想要访问这个 Content Provider,需要拥有这个指定的权限。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:permission="com.example.myapp.ACCESS_PROVIDER"><!-- 其他标签 -->
</provider>
  1. android:process
    • 含义:用于指定 Content Provider 运行的进程。默认情况下,Content Provider 在应用的主进程中运行,但可以通过这个属性为 Content Provider 指定单独的进程,这样可以在一定程度上隔离 Content Provider 的运行环境,提高应用的稳定性和性能。
    • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"android:process=":provider_process"><!-- 其他标签 -->
</provider>

1.9.4.1. <grant - uri - permission>

  • 含义:用于控制对Content Provider所提供数据的URI级别的访问权限。它可以有不同的属性来指定权限的范围,例如可以是针对特定的路径、路径模式或者所有的子路径等。这有助于精细地控制其他应用对Content Provider数据的访问。
  • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"><grant - uri - permission android:path="/data/user"/>
</provider>
  • 在这个例子中,grant - uri - permission允许对/data/user路径下的数据进行访问授权,其他应用在被授权的情况下可以访问Content Provider中该路径下的数据。

1.9.4.2. <meta - data>

  • 含义:和其他组件(如Activity、Service等)中的meta - data类似,用于为Content Provider提供额外的自定义数据。这些数据可以在Content Provider的代码中获取,用于配置特殊行为或者传递一些信息。
  • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"><meta - dataandroid:name="custom_key"android:value="custom_value"/>
</provider>
  • 这里MyContentProvider有一个名为custom_key的元数据,其值为custom_value,在Content Provider的onCreate()或其他合适的方法中,可以通过相应的API获取这些元数据来进行处理。

1.9.4.3. <path - permission>

  • 含义:用于定义对Content Provider中特定路径的更详细的权限设置。可以指定读取、写入等权限,并且可以根据不同的路径或者路径模式来设置不同的权限规则,这对于保护Content Provider中的数据安全和隐私非常重要。
  • 示例
<providerandroid:name=".MyContentProvider"android:authorities="com.example.myapplication.provider"><path - permissionandroid:path="/private/data"android:readPermission="com.example.myapp.READ_PRIVATE_DATA"android:writePermission="com.example.myapp.WRITE_PRIVATE_DATA"/>
</provider>
  • 在这个例子中,对于/private/data路径下的数据,设置了读取权限为com.example.myapp.READ_PRIVATE_DATA,写入权限为com.example.myapp.WRITE_PRIVATE_DATA,这样可以精确地控制对Content Provider中敏感数据的访问。

1.9.5. <meta - data>

  • 含义:可以用来为应用组件(如Activity、Service等)提供额外的自定义数据。这些数据可以是字符串、整数等各种类型,用于配置组件的特殊行为或者传递一些信息。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity android:name=".MyActivity"><meta - dataandroid:name="custom_key"android:value="custom_value"/></activity>
</application>
  • 在这个例子中,MyActivity有一个名为custom_key的元数据,其值为custom_value,在代码中可以获取这些元数据来进行相应的处理。

1.9.6. <activity - alias>

  • 含义:用于为一个已有的Activity创建别名。可以通过别名来启动原始的Activity,并且可以为别名设置不同的intent - filter等属性,从而实现不同的启动方式或者功能。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity android:name=".OriginalActivity"></activity><activity - aliasandroid:name=".AliasActivity"android:targetActivity=".OriginalActivity"><intent - filter><action android:name="android.intent.action.ALIAS_ACTION"/><category android:name="android.intent.category.DEFAULT"/></intent - filter></activity - alias>
</application>
  • 这里AliasActivityOriginalActivity的别名,通过AliasActivityintent - filter定义,可以使用ALIAS_ACTION这个动作来启动OriginalActivity

1.9.7. <service - alias>

  • 含义:类似于activity - alias,是为已有服务创建别名的标签。
  • 示例
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><service android:name=".OriginalService"></service><service - aliasandroid:name=".AliasService"android:targetService=".OriginalService"></service - alias>
</application>
  • 可以通过AliasService来引用OriginalService,并且在某些场景下可以为别名服务设置不同的属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RAG中的代表性上下文压缩方案总结:从RECOMP、CompAct到COCOM

今天是2024年11月5日&#xff0c;星期二&#xff0c;北京&#xff0c;天气晴 昨天有说到RAG中的长文本压缩&#xff0c;现有的上下文压缩方法主要分为基于词汇的压缩&#xff08;硬提示&#xff0c;如LLMLingua和RECOMP&#xff09;和基于嵌入的压缩(软提示&#xff0c;如Gist…

创新材料科技:铜冷却壁助力高炉节能降耗

高炉用铜冷却壁是高炉内部的一种构件&#xff0c;通常用于高炉的炉身部分。它的主要功能是在高炉冶炼过程中冷却炉壁&#xff0c;以防止炉壁过热。铜冷却壁通常由铜制成&#xff0c;因为铜具有良好的导热性和耐腐蚀性&#xff0c;能够有效地将热量从高炉内部传导到外部&#xf…

免费送源码:Java+ssm+MySQL ssm小区车辆信息管理系统的设计与实现 计算机毕业设计原创定制

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

云轴科技ZStack在CID大会上分享VF网卡热迁移技术

近日&#xff0c;2024中国云计算基础架构开发者大会&#xff08;以下简称CID大会&#xff09;在北京举行。此次大会集中展示了云计算基础架构技术领域最前沿的科创成果&#xff0c;汇聚众多的技术专家和行业先锋&#xff0c;共同探讨云计算基础设施的最新发展和未来趋势。云轴科…

ES6中数组新增了哪些扩展?

ES6中数组新增了哪些扩展&#xff1f; 1、扩展运算符的应⽤ ES6通过扩展元素符 … &#xff0c;好⽐ rest 参数的逆运算&#xff0c;将⼀个数组转为⽤逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...documen…

「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件

Slider 和 Progress 是鸿蒙系统中的常用 UI 组件。Slider 控制数值输入&#xff0c;如音量调节&#xff1b;Progress 显示任务的完成状态&#xff0c;如下载进度。本文通过代码示例展示如何使用这些组件&#xff0c;并涵盖 进度条类型介绍、节流优化、状态同步 和 定时器动态更…

GitHub个人主页美化

效果展示 展示为静态效果&#xff0c;动态效果请查看我的GitHub页面 创建GitHub仓库 创建与GitHub用户名相同的仓库&#xff0c;当仓库名与用户名相同时&#xff0c;此仓库会被视作特殊仓库&#xff0c;其README.md&#xff08;自述文件&#xff09;会展示在GitHub个人主页…

Windows 命令提示符(cmd)中输入 mysql 并收到错误消息“MySQL不是内部或外部命令,也不是可运行的程序或批处理文件?

目录 背景: 过程&#xff1a; 1.找到MySQL安装的路径 2.编辑环境变量 3.打开cmd&#xff0c;输入mysql --version测试成功 总结: 背景: 很早之前安装了Mysql数据库&#xff0c;想查询一下当前安装的MySQL客户端的版本号&#xff0c;我在命令行界面输入mysql --verion命令回…

<项目代码>YOLOv8 夜间车辆识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

太强了!Ollama + MaxKB零代码本地搭建个人知识库AI应用,数据安全,还可以有权限控制!!

零代码本地搭建AI应用 &#x1f4da; 借助开源的&#xff0c;大模型应用不再遥不可及 &#x1f680; 当提到“大模型”和“本地部署”&#xff0c;很多人可能第一反应是&#xff1a;“这是不是只有那些顶尖的技术大牛才能搞定&#xff1f;” 其实&#xff0c;随着开源工具的发…

Unreal5从入门到精通之如何在指定的显示器上运行UE程序

前言 我们有一个设备,是一个带双显示器的机柜,主显示器是一个小竖屏,可以触屏操作,大显示器是一个普通的横屏显示器。我们用这个机柜的原因就是可以摆脱鼠标和键盘,直接使用触屏操作,又可以在大屏观看,非常适合用于教学。 然后我们为这款机柜做了很多个VR项目,包括Uni…

Docker安装XXL-JOB分布式调度任务

一、持久化 1、下载 xxl-job 源码,找到持久化脚本 2、创建 xxl-job 数据库,将上述文件中的脚本在本库执行即可 create database xxl_job charset utf8mb4 collate utf8mb4_general_ci; 二、安装 1、下载 xxl-job 镜像 docker pull xuxueli/xxl-job-admin:2.4.1 2、创建…

【华为HCIP实战课程三十】中间到中间系统协议IS-IS路由渗透及TAG标识详解,网络工程师

一、路由泄露 1、默认情况Level 1不会学到Level2的明细路由&#xff0c;L2可以学到L1的明细路由 2、FIB数据转发&#xff0c;路由负载&#xff0c;通过随机数据中的五元组hash,hash值决定数据走哪条链路 R1设备ping和telnet通过抓包查看走的都是S1/0/0接口 抓包进行过滤;ip.a…

如何将MySQL彻底卸载干净

目录 背景&#xff1a; MySQL的卸载 步骤1&#xff1a;停止MySQL服务 步骤2&#xff1a;软件的卸载 步骤3&#xff1a;残余文件的清理 步骤4&#xff1a;清理注册表 步骤五:删除环境变量配置 总结&#xff1a; 背景&#xff1a; MySQL卸载不彻底往往会导致重新安装失败…

死锁(Dead Lock)

目录 一. 死锁出现的场景 1. 一个线程, 一个锁对象 2. 两个线程, 两个锁对象 3. N个线程, M个锁对象 二. 造成死锁的必要条件 1. 锁是互斥的 2. 锁是不可被抢占的 3.请求和保持 4. 循环等待 三. 死锁的解决方案 1. 预防死锁 2. 死锁产生后的解决 一. 死锁出现的场景…

【Android 系统中使用CallStack类来追踪获取和操作调用栈信息】

Android系统CallStack类的使用 定义使用方法使用场景注意事项应用举例 定义 在 Android 系统中&#xff0c;CallStack 类是一个用于获取和操作调用栈信息的工具类。这个类通常用于调试和日志记录&#xff0c;以帮助开发者了解函数调用的顺序和位置。以下是您提供的代码片段的解…

深度学习基础知识-残差网络ResNet

目录 一、ResNet 的核心思想&#xff1a;残差学习&#xff08;Residual Learning&#xff09; 二、ResNet 的基本原理 三、ResNet 网络结构 1. 残差块&#xff08;Residual Block&#xff09; ResNet 的跳跃连接类型 2. 网络结构图示 四、ResNet 的特点和优势 五、ResNe…

【Mac】安装 VMware Fusion Pro

VMware Fusion Pro 软件已经正式免费提供给个人用户使用&#xff01; 1、下载 【官网】 下拉找到 VMware Fusion Pro Download 登陆账号 如果没有账号&#xff0c;点击右上角 LOGIN &#xff0c;选择 REGISTER 注册信息除了邮箱外可随意填写 登陆时&#xff0c;Username为…

基于springboot+vue实现的网上书店系统 (源码+L文)

基于springbootvue实现的网上书店系统 &#xff08;源码L文&#xff09;4-104 5.1 系统主要功能设计 整体系统的主要功能模块如图5-1&#xff1a; 图5-1系统总体功能图 5.1.1 用户端功能 用户端的主要功能设计包括首页、图书信息、商城公告、购物车等模块&#xff0c;这些功…

鸿蒙5.0时代:原生鸿蒙应用市场引领开发者服务新篇章

前言 10月22日原生鸿蒙之夜发布会宣布HarmonyOS NEXT正式发布&#xff0c;首个版本号&#xff1a;鸿蒙5.0。这次“纯血鸿蒙”脱离了底层安卓架构成为纯国产的独立系统&#xff0c;仅凭这一点就有很多想象空间。 目前鸿蒙生态设备已超10亿&#xff0c;原生鸿蒙操作系统在中国市…