Apk包的内容和Android应用的权限

Apk文件是Android上的安装文件,一个Android安装包包含了与该应用程序相关的所有文件。

Apk文件本质上是一个zip包,包括AndroidManifest.xml文件、应用程序代码(.dex文件)、资源文件等。

其中AndroidManifest.xml文件位于根目录下,主要包括以下各个元素:

1、包名(package):若没有指定apk的文件名,编译后程序包将以应用内Java主程序包的包名命名。

2、认证(certificate):指定应用程序所授予的信任级别,目前的认证级别包括platform(system)、shared、media以及应用自定义认证。

3、权限组(permission-group):权限组的定义是为了描述一组具有共同特性的权限。

4、权限(permission):权限用来描述是否拥有做某件事的权力。Android系统中的权限是分级的,分为普通级别(normal)、危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。

系统中所有预定义的权限根据作用的不同,分别属于不同的级别。对于normal和dangerous级别的权限,称之为低级权限,应用申请即授予;其他两级权限,称之为高级权限或系统权限,应用拥有platform级别的认证才能申请,当应用试图在没有权限的情况下做受限操作时,应用将被系统杀掉以示警。

5、权限树(permission-tree):权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加:PackageManager.addPermission()

6、使用权限(uses-permission):应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。同时使用权限的申请需要遵循权限授予条件,非platform认证的应用无法申请高级权限。

7、SDK(uses-sdk):标识本应用运行的SDK版本,高兼容性的应用可以忽略此项。

8、Application:Application是Android应用内最高级别(top level)的模块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用,application在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成。Application元素有许多属性,其中“persistent”表示本应用是否常驻内存,“enable”表示本应用当前是否应当被加载。

9、Activity:Activity是application模块运行时的子元素,标识了一个UI。一个应用可以声明并实现零至多个其他运行时模块,包括activity,activity通过增加intent-filter来标识哪些intent可以被处理,同时intent也是调度activity的主要参数。

10、Receiver:Receiver也是application运行时的子元素,receiver通过增加intent-filter来标识他需要接受哪些intent。当收到intent后,receiver将根据不同的intent进行不同的处理。当一个intent发出后,所有注册了该intent的receiver都将会收到,系统会根据receiver在系统中的注册次序顺序发送;当一个receiver有多个未接收的intent时,将按照intent发送的次序顺序接收。

11、Service:Service也是application的运行时子元素,属于后台模块,启动后将长时间运行,除非停止该service或所在应用进程被杀死。

12、Provider:Provider也是application的运行时字元素,继承与ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。如果应用允许外部应用访问/管理它的用户数据,provider是android平台提供的最佳方式。

13、Activity-alias:已有activity的别名。

14、Uses-library:标识应用启动所必须的共享库。

AndroidManifest.xml的结构大纲:

<manifest> 文件根节点, 描述了程序包的所有内容.
    <uses-permission> 请求一个安全授权, 必须被授予该权限, 您的程序包才能正确的操作. 0~N
 <permission> 声明一个安全授权, 用来限制哪些应用可以访问您的程序包内的组件和特有机制. 0~N
    <instrumentation>
    <application> 描述程序包内应用级别组件的根节点. 该节点能够描述应用程序的全局(和/或)默认属性, 例如标签, 图标, 主题, 需要的授权, 等等.包含零个或一个这样的节点
        <activity> Activity 是应用于用户交互的最主要机制. 当一个应用运行的时候, 用户看到的第一个屏幕就是activity, 并且, 用户所使用的其他绝大多数屏幕(界面)也会是
            <intent-filter>
            <action>
            <category>
            <type>
            <scheme>
            <authority>
            <path>
        <receiver> 一个IntentReceiver 可以让应用接收到一次数据变化和一次行为发生的通知, 甚至这个应用没有在运行也可以. 同activity 标签一样, 你可以选择包含一个或多个<intent-filter>元素
        <service>Service 是一个在后台任意时刻都可以运行的组件. 同activity 标签一样, 你可以选择包含一个或多个<intent-filter>元素
        <provider>ContentProvider组件是用来管理数据持久化及数据发布的, 发布的数据可以被其他的应用访问.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值