AndroidManifest--详细理解

以6.0系统中的Settings模块源码为例讲解。

<manifest/>标签层:

这是整个清单文件的最上层,用来做一些最基本的声明,如(包名,权限,资源命名空间等)。老规矩,通过栗子来讲解:

 

<manifest coreApp="true"
          package="com.android.settings"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:sharedUserId="android.uid.system"
          android:versionCode="20150101"
          android:versionName="3.0.5">
    <original-package android:name="com.android.settings"/>
    <uses-sdk
        android:minSdkVersion="21"
        android:targetSdkVersion="21"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 1.package="com.android.settings"
    整个应用的包名。这里有个坑,当我们通过ComponentName来启动某个Activity时,所用的包名一定是这个应用的包名,而不是当前Activity的包名。

  • 2.xmlns:android="http://schemas.android.com/apk/res/android"
    命名空间的声明,使得各种Android系统级的属性能让我们使用。当我们需要使用自定义属性时,可以将其修改为res-auto,编译时会为我们自动去找到该自定义属性。

  • 3.android:sharedUserId="android.uid.system"//由SystemServer启动而来.很多的服务都是在系统进程里启动的.
    将当前应用进程设置为系统级进程(不推介随意这么做,会产生很多隐患)。拥有此属性后,我们的应用就可以无视用户,无法无天地处理很多事情,比如擅自修改手机system分区的内容、静默安装等。之前开发过一个类似切换多套开关机动画和音效的模块,添加此属性后,就可以明目张胆地将我们的数据节点存在system分区,可以让用户恢复出厂设置都清空不了我们的数据。
    但是添加此属性后,我们需要在当前模块的MakeFile中添加LOCAL_CERTIFICATE := platform,然后在安卓源码环境下使用原生make命令编译才能生效(原生编译虽然比使用ide工具麻烦很多,但是却能使用很多ide工具无权限使用的api)。
    如果非要在ide工具中使用则必须通过系统密钥重签名生成的apk才行(未亲自验证)。

  • 4.uses-permission
    为我们的应用添加必须的权限。同时我们也可以该层声明自定义的权限。

 

    <permission
        android:name="com.cold.permission.appfreeze"
        android:protectionLevel="signatureOrSystem"/>

--*

<application/>标签层:

应用层标签,用来配置我们的apk的整体属性,也可以统一指定所有界面的主题。栗子如下:

 

    <application
        android:name=".SettingsApp"
        android:allowBackup="false"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher_settings"
        android:label="@string/settings_label"
        android:requiredForAllUsers="true"
        android:supportsRtl="true"
        android:taskAffinity=""
        android:theme="@style/Theme.Aui">
  • 1."android:name"、"android:icon"、"android:label"
    顾名思义࿰

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值