Android 开发中的 Manifest.xml 配置文件详解

本文详细介绍了AndroidManifest.xml文件的结构及其各个元素的作用。重点解释了应用基本信息、Activity配置、权限声明等内容,并给出了具体的XML配置示例。
    AndroidManifest.xml 是一个非常重要的功能清单文件。每一个应用程序的根目录里都有这个功能清单文件,这个清单文件给Android系统提供了关于这个应用程序的基本信息,系统在运行任何程序代码之前必须知道这些信息。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  //用来指定该文件的命名空间
          package="com.bignerdranch.android.criminalintent">  //指定Android应用所在的包

    <application
        android:allowBackup="true" //为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。
        android:icon="@mipmap/ic_launcher"   //用来设定应用程序的图标
        android:label="@string/app_name"     //用来设定应用程序的名称
        android:supportsRtl="true"  //声明你的application是否愿意支持从右到左(原来RTL就是right-to-left 的缩写)的布局,只是是否愿意,不是立马从右到左。
        android:theme="@style/AppTheme"> //应用的样式主题,该主题在当前应用包的style.xml中定义
        <activity
            android:name=".CrimeActivity" //指定的是该Activity的类名,“.”代表的是<manifest>元素的“package”属性中指定的当前包。activity只能放在应用包(manifest下package定义的路径)或者其子包里面,而不能再应用包以外的包中定义,这点需要牢记。
            android:label="@string/app_name" > //表示Activity所代表的屏幕的标题,该属性值在AVD运行程序到该Activity所代表的界面时,会在标题上显示该值。
        </activity>
        <activity android:name=".CrimeListActivity">

            <intent-filter> //设置隐式intent过滤器
                <action android:name="android.intent.action.MAIN" /> //标识Activity为一个程序的开始
                <category android:name="android.intent.category.LAUNCHER" /> //决定activity 应该显示在顶级应用启动器里Main和LAUNCHER同时设定才有意义
            </intent-filter>
        </activity>
<provider  //

为了提高私有文件的安全性,在targetSdk版本为N或者以后版本的app中,其私有目录将会限制访问。这可以防止私有文件元数据的泄露,比如文件大小或者是文件是否存在。但这给开发者带来了很多不利的影响:文件的owner不能放宽文件权限,如果你使用MODE_WORLD_READABLE或者 MODE_WORLD_WRITEABLE操作文件,将会触发SecurityException。当你跨package域传递file://的URI时,接收者得到的将是一个无权访问的路径,因此,这将会触发FileUriExposedException。对于这类操作,官方推荐的方式是使用FileProvider,当然你也可以使用ContentProvider。在targetSdk为Android N之前的系统版本时,不需要这个配置。

android:name="android.support.v4.content.FileProvider" android:authorities="com.bignerdranch.android.criminalintent.fileprovider"//当前app的包名 + fileprovider android:exported="false" //要求必须为false,为true则会报安全异常
    android:grantUriPermissions="true">//表示授予 URI 临时访问权限
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"/> //资源文件下创建相应的文件夹路径xml文件的文件名
</provider>
</application>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
                     android:maxSdkVersion="18"        />申请外部存储读权限,只有API级别小于19的android设备上,应用才需要这样的权限申请
    
    <uses-feature android:name="android.hardware.camera"
                  android:required="false" />声明应用需要有照相功能的设备,但也不是必须的。
</manifest>


                
### Android Manifest 文件配置与常见问题 #### 清单文件概述 `AndroidManifest.xml` 是每一个 Android 应用程序的核心组件之一。该文件包含了应用程序的基本元数据,包括包名、版本号以及应用所依赖的各种权限和服务声明。 #### 配置详解 - **<application>标签** 这个部分定义了整个应用程序的行为特征,比如图标、主题样式等属性可以在此处设置[^1]: ```xml <application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true"> ``` - **Activity注册** 所有的 Activity 组件都需要在这里进行显式的声明才能被启动: ```xml <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` - **权限请求** 对于访问敏感资源的操作(如网络连接),需要提前向用户申请相应的权限: ```xml <uses-permission android:name="android.permission.INTERNET"/> ``` #### 常见错误及其解决方案 - **未知模块加载失败** 当遇到 `java.lang.RuntimeException: Error: Requiring unknown module "react"` 类型的异常时,这通常意味着 React Native 环境未能正确初始化或打包脚本存在问题[^2]。建议检查构建工具链是否已更新至最新稳定版,并确认所有必要的依赖库都已被妥善安装。 - **Lint 工具警告处理** 如果希望忽略某些特定类型的 Lint 警告,则可以在项目的根目录创建一个名为 `lint.xml` 的文件来定制化这些规则[^3]: ```xml <?xml version="1.0" encoding="UTF-8"?> <lint> <!-- 忽略指定的检查 --> <issue id="IconMissingDensityFolder" severity="ignore" /> <!-- 更多自定义规则... --> </lint> ``` - **Gradle 属性冲突** 若在 `gradle.properties` 中设置了如下参数却遭遇编译报错: ```properties android.useAndroidX=true android.enableJetifier=true ``` 可能是因为项目结构尚未完全迁移到 AndroidX 或者存在第三方库不兼容的情况。此时应确保所有的支持库都已经转换成对应的 AndroidX 版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程序的艺术家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值