Android 系统解析AndroidManifest

对于Android APP应用程序开发来说,AndroidManifest.xml里面所配置的内容,至关重要,在安装.apk文件的时候,Android操作系统是如何解析AndroidManifest.xml里面内容的呢:


AndroidManifest.xml 内容结构:

包相关信息(包名,版本code,版本name,等等)
应用相关信息(应用图标,应用名称,等等)
Activity相关信息(Activity名称,等等)

这里写图片描述


模拟Android系统的安装程序,安装过程中对AndroidManifest的对象封装:

/**
     * Android操作系统是如何去解析分解AndroidManifest
     */
    private void androidOSDecompositionAndroidManifest() {
        try {
            /**
             *  当应用程序安装的时候,Android操作系统的安装程序,就会去解析AndroidManifest.xml文件里面的信息
             *  Android操作系统的安装程序,该如何去解析呢,肯定是以面向对象的思想方式去封装。
             */

            /**
             *  Android操作系统的安装程序在安装之前,就已经对所有应用进行了包管理:
             */
            // package管理:管理Android里面所有的应用
            PackageManager pm = getPackageManager();

            // 首先获取已经安装OK的应用程序的package包,它把包的信息进行了对象实体的封装PackageInfo
            List<PackageInfo> packageInfos = pm.getInstalledPackages(0);

            // 指定包名,获取包信息
            PackageInfo packageInfo = pm.getPackageInfo("com.liudeli.day3.android_manifest", 0);
            // 得到包名
            String packageName = packageInfo.packageName;
            // 得到版本号信息
            int versionCode = packageInfo.versionCode;
            String versionName = packageInfo.versionName;

            // 在包的里面,有applicationInfo,获取应用信息
            ApplicationInfo applicationInfo = packageInfo.applicationInfo;
            // 获取应用图标
            Drawable icon = applicationInfo.loadIcon(pm);
            // 获取应用名称
            CharSequence label = applicationInfo.loadLabel(pm);

            // 我们从表面上看,以为ApplicationInfo 里面有Activity信息,其实不是这样的
            // Activity信息是在packageInfo里面
            ActivityInfo[] activityInfos = packageInfo.activities;
            ActivityInfo activityInfo = activityInfos[0];
            // 得到Activity的名字
            String name = activityInfo.name;

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

AndroidManifest 里面package的配置:
这里写图片描述

模拟Android系统安装程序的package对象封装:
这里写图片描述


AndroidManifest 里面application的配置:
这里写图片描述

模拟Android系统安装程序的application对象封装:
这里写图片描述


AndroidManifest 里面activity的配置:
这里写图片描述

模拟Android系统安装程序的activity对象封装:

我们从表面上看,以为ApplicationInfo 里面有Activity信息,其实不是这样的
Activity信息是在packageInfo里面
这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值