美文网首页
Android应用包的生成/管理/访问

Android应用包的生成/管理/访问

作者: liaowenhao | 来源:发表于2017-08-13 22:44 被阅读23次

    APK编译

    APK项目的源文件包括:

    1. 资源文件
    2. aidl源文件
    3. Java源文件
    4. Java静态库
    5. Java共享库
    6. 所需的JNI动态库

    Java源码在编译前必须首先获得R.java,R.java是编译系统调用aapt工具从res目录下的资源文件编译而成的。

    Java源文件 ----javac----> class文件 ----jar----> jar包 ----dx工具----> dex文件 --aapt--> unsigned.apk --signapk.jar--> signed.apk --zipalign边界对齐--> package.apk

    签名的目的不是加密,而是认证。

    程序包管理

    能够根据intent匹配到具体的四大组件。能够把指定的intent转换成一个具体的包含了程序包名称及具体Component名称的信息,以便Java类加载器加载具体的Component。

    安装和卸载程序的操作都是由Pms完成,安装程序的过程包括在程序目录下创建以包名称命令的程序文件、创建程序数据目录,以及把程序信息保存到相关的配置文件pakages.xml中,卸载过程则是相反的。

    Intent匹配

    按照基本的匹配类型定义几个数据变量,比如action、scheme、mime等, 每个数据变量中保存所有只要满足本条件的Component信息。当传入一个Intent时,将intent-filter分解成这些基本的匹配条件,最终找到不同数据变量匹配结果中的交集,即为满足所有字段的条件。

    资源访问

    资源常见的值一般为以下几种:

    1. String/Color/boolean/int类型:res/values/xxx.xml
    2. Drawable类型:res/drawable/xxx.png
    3. layout
    4. style

    LayoutInflater在inflater布局时会通过反射去调用View的(Context context, AttributeSet attrs)构造器。自定义View的第三个和第四个构造函数除非显式调用,不然不会通过xml调用。AttributeSet保存了xml布局文件中View的自定义属性的集合

    属性赋值优先级:Xml定义>xml的style定义>defStyleAttr(主题可配置样式)>defStyleRes(默认样式)>NULL(主题中直接指定)。注意,defStyleRes只有在defStyleAttr为0或者主题中没有配置时,才会生效;

    APK是一种具有安装格式的文件,安装后将是另一个样子。

    一个应用程序的多个ContextImp对象实际共享了一个PakageInfo对象。
    Assetmanager并不只是访问项目中的res/assests目录下的资源,而是访问应用程序本身res下所有的资源,以及Framework的资源路径。

    系统资源的id值都是以0x01开头,一般的应用程序的资源值是以0x07开头。

    相关文章

      网友评论

          本文标题:Android应用包的生成/管理/访问

          本文链接:https://www.haomeiwen.com/subject/dxcyrxtx.html