当前位置:首页 > 电子书 > 电子书下载 > 移动开发 >
Android插件化开发指南 Android插件化开发指南
晓峰

晓峰 提供上传

资源
29
粉丝
17
喜欢
67
评论
3

    Android插件化开发指南 PDF 完整版

    Android开发电子书
    • 发布时间:2020-01-20 09:33:34

    给大家带来的一篇关于Android开发相关的电子书资源,介绍了关于Android插件、Android开发方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小181.1 MB,包建强编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.1。

  • Android插件化开发指南 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1rbRLXVxvkqvqmya-EjqYI
  • 提取码:r9w6
  • Android插件化开发指南

    Android插件化开发指南

    内容介绍

    Android插件化技术广泛应用在移动开发中,通过插件化技术,AndroidApp可以不通过发布新版本而修复线上的bug或者推出新功能,这对于日活千万的App而言是非常重要的,可极大程度提升App开发效率和质量。本书详细介绍了插件化技术的原理、各种方案,及其在AndroidApp中的使用。在介绍插件化技术的同时,还详细介绍了Android底层知识,能帮助AndroidApp开发人员更好地掌握Android的开发技术。本书共22章,先介绍Android插件化技术的历史和现状,系统介绍了Android的底层知识以及反射、代理等技术;然后介绍插件化技术的基本知识,包括各类插件化解决方案及其对比;之后分析了一些插件化框架,如that、Zeus等,深入分析了资源及其在插件化中的应用,以及混淆、增量更新等周边技术的插件化解决方案。

    目录

    • 第一部分 预备知识
    • 第1章 插件化技术的昨天、今天与明天2
    • 1.1 插件化技术是什么2
    • 1.2 为什么需要插件化3
    • 1.3 插件化技术的历史3
    • 1.4 插件化技术的用途到底是什么8
    • 1.5 更好的替代品:React Native8
    • 1.6 只有中国这么玩吗9
    • 1.7 四大组件都需要插件化技术吗10
    • 1.8 双开和虚拟机10
    • 1.9 从原生页面到HTML 5的过渡11
    • 1.10 本章小结12
    • 第2章 Android底层知识13
    • 2.1 概述13
    • 2.2 Binder原理14
    • 2.3 AIDL原理16
    • 2.4 AMS20
    • 2.5 Activity工作原理21
    • 2.5.1 App是怎么启动的21
    • 2.5.2 启动App并非那么简单21
    • 2.6 App内部的页面跳转32
    • 2.7 Context家族史34
    • 2.8 Service工作原理36
    • 2.8.1 在新进程启动Service36
    • 2.8.2 启动同一进程的Service39
    • 2.8.3 在同一进程绑定Service39
    • 2.9 BroadcastReceiver工作原理41
    • 2.9.1 注册过程43
    • 2.9.2 发送广播的流程44
    • 2.9.3 广播的种类45
    • 2.10 ContentProvider工作原理46
    • 2.10.1 ContentProvider的本质49
    • 2.10.2 匿名共享内存(ASM)49
    • 2.10.3 ContentProvider与AMS的通信流程50
    • 2.11 PMS及App安装过程52
    • 2.11.1 PMS简介52
    • 2.11.2 App的安装流程52
    • 2.11.3 PackageParser53
    • 2.11.4 ActivityThread与PackageManager54
    • 2.12 ClassLoader家族史55
    • 2.13 双亲委托57
    • 2.14 MultiDex57
    • 2.15 实现一个音乐播放器App59
    • 2.15.1 基于两个Receiver的音乐播放器59
    • 2.15.2 基于一个Receiver的音乐播放器63
    • 2.16 本章小结68
    • 第3章 反射70
    • 3.1 基本反射技术70
    • 3.1.1 根据一个字符串得到一个类70
    • 3.1.2 获取类的成员71
    • 3.1.3 对泛型类的反射75
    • 3.2 jOOR77
    • 3.2.1 根据一个字符串得到一个类78
    • 3.2.2 获取类的成员78
    • 3.2.3 对泛型类的反射79
    • 3.3 对基本反射语法的封装80
    • 3.3.1 反射出一个构造函数81
    • 3.3.2 调用实例方法81
    • 3.3.3 调用静态方法82
    • 3.3.4 获取并设置一个字段的值82
    • 3.3.5 对泛型类的处理83
    • 3.4 对反射的进一步封装84
    • 3.5 本章小结88
    • 第4章 代理模式89
    • 4.1 概述89
    • 4.1.1 远程代理(AIDL)90
    • 4.1.2 保护代理(权限控制)92
    • 4.1.3 虚代理(图片占位)92
    • 4.1.4 协作开发(Mock Class)92
    • 4.1.5 给生活加点料(记日志)93
    • 4.2 静态代理和动态代理94
    • 4.3 对AMN的Hook95
    • 4.4 对PMS的Hook97
    • 4.5 本章小结98
    • 第5章 对startActivity方法进行Hook99
    • 5.1 startActivity方法的两种形式99
    • 5.2 对Activity的startActivity方法进行Hook100
    • 5.2.1 方案1:重写Activity的startActivityForResult方法102
    • 5.2.2 方案2:对Activity的mInstrumentation字段进行Hook102
    • 5.2.3 方案3:对AMN的getDefault方法进行Hook104
    • 5.2.4 方案4:对H类的mCallback字段进行Hook107
    • 5.2.5 方案5:再次对Instrumentation字段进行Hook109
    • 5.3 对Context的startActivity方法进行Hook111
    • 5.3.1 方案6:对ActivityThread的mInstrumentation字段进行Hook111
    • 5.3.2 对AMN的getDafault方法进行Hook是一劳永逸的113
    • 5.4 启动没有在AndroidManifest中声明的Activity113
    • 5.4.1 “欺骗AMS”的策略分析114
    • 5.4.2 Hook的上半场115
    • 5.4.3 Hook的下半场:对H类的mCallback字段进行Hook118
    • 5.4.4 Hook的下半场:对ActivityThread的mInstrumentation字段进行Hook119
    • 5.4.5 “欺骗AMS”的弊端121
    • 5.5 本章小结121
    • 第二部分 解决方案
    • 第6章 插件化技术基础知识124
    • 6.1 加载外部的dex124
    • 6.2 面向接口编程126
    • 6.3 插件的瘦身129
    • 6.4 对插件进行代码调试131
    • 6.5 Application的插件化解决方案133
    • 6.6 本章小结134
    • 第7章 资源初探135
    • 7.1 资源加载机制135
    • 7.1.1 资源分类135
    • 7.1.2 剪不断理还乱:Resources和AssetManager136
    • 7.2 资源的插件化解决方案137
    • 7.3 换肤141
    • 7.4 殊途同归:另一种换肤方式149
    • 7.5 本章小结149
    • 第8章 最简单的插件化解决方案150
    • 8.1 在AndroidManifest中声明插件中的组件150
    • 8.2 宿主App加载插件中的类151
    • 8.3 启动插件Service152
    • 8.4 加载插件中的资源152
    • 8.5 本章小结154
    • 第9章 Activity的插件化解决方案155
    • 9.1 启动没有在AndroidManifest中声明的插件Activity155
    • 9.2 基于动态替换的Activity插件化解决方案159
    • 9.2.1 Android启动Activity的原理分析159
    • 9.2.2 故意命中缓存160
    • 9.2.3 加载插件中类的方案1:为每个插件创建一个ClassLoader164
    • 9.2.4 为了圆一个谎言而编造更多的谎言164
    • 9.3 加载插件中类的方案2:合并多个dex166
    • 9.4 为Activity解决资源问题169
    • 9.5 对LaunchMode的支持169
    • 9.6 加载插件中类的方案3:修改App原生的ClassLoader172
    • 9.7 本章小结174
    • 第10章 Service的插件化解决方案175
    • 10.1 Android界的荀彧和荀攸:Service和Activity175
    • 10.2 预先占位176
    • 10.3 startService的解决方案178
    • 10.4 bindService的解决方案183
    • 10.5 本章小结185
    • 第11章 BroadcastReceiver的插件化解决方案186

    上一篇:Flask Web开发实战:入门、进阶与原理解析

    下一篇:Go语言从入门到进阶实战

    展开 +

    收起 -

     
    Android开发 相关内容
    Android系统源代码情景分析
    Android系统源代码情景分析 超清第3版

    本书结合使用情景,全面、深入、细致地分析了Android系统的源代码,涉及Linux内核层、硬件抽象层、运行时库层、应用程序框架层及应用程序层

    立即下载
    Kotlin从零到精通Android开发
    Kotlin从零到精通Android开发 高清完整版

    是一部讲解Kotlin语言的入门书籍,从Kotlin语言的基本语法一直讲到如何将其运用于Android开发,本书从基本语法,到应用开发、电商App开发实录,尽现Kotlin魅力

    立即下载
    Android组件化架构
    Android组件化架构 清晰扫描版

    本书首先介绍Android组件化开发的基础知识,剖析组件化的开发步骤和常见问题,探究组件化编译原理和编译优化措施。其次在项目架构上,介绍如何组织团队来使用组件化开发,并将业务和人

    立即下载
    Android程序设计
    Android程序设计 原版影印版

    本书适合不同背景的 Android编程人员。如果你一直在用Objective-C为iPhone或Mac OS编写应用,你会发现本书中Android 工具和Java语言特性等与Android编程相关的介绍能够帮助你理解Android移动应用开发

    立即下载
    Android源码设计模式解析与实战
    Android源码设计模式解析与实战 影印第2版

    本书介绍了Android源代码的设计模式,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式,通过实战帮助读者达到学以致用的目的,且能够将模式运用于项目中

    立即下载
    Android开发入门与实战
    Android开发入门与实战 扫描第2版

    学习本书可让不懂Android开发的人系统地快速掌握Android 开发的知识,包含Android开发环境搭建、Android SDK介 绍、Android应用程序结构剖析等内容,精选了6个真实的案例,欢迎下载

    立即下载
    深入解析Android虚拟机
    深入解析Android虚拟机 原版扫描版

    本书循序渐进地讲解了Android虚拟机系统的基本知识,并剖析了其整个内存系统的进程和运作流程,并对虚拟机系统优化和异常处理的知识进行了详细讲解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    立即下载
    最强Android书:架构大剖析
    最强Android书:架构大剖析 全书影印版

    不需要源码也能彻底掌握Android技术内幕,全程实验直接指导,层层拆解!持续更新中……本书被美国中情局,国内部分手机厂商作为内部员工学习教材

    立即下载
    学习笔记
    网友NO.709034

    Android token过期刷新处理的方法示例

    token token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。 第一种方案 通过okhttp提供的Authenticator接口,但是只有HTTP返回码为401时才会触发。此种方式局限性很大,要求后台设计必须符合规范。在实际项目中不可能完美实现。此种方式不做详解,百度很多。 第二种方案 根据和后端协商好的返回码处理刷新token步骤。代码如下; public class TokenInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request.Builder request = chain.request().newBuilder(); //添加默认的Token请求头 request.addHeader("Cookie", UserInfo.getInstance().getPhpSessionId()); Response proceed = chain.proceed(request.build()); okhttp3.MediaType mediaType = proceed.body().contentType(); //如果token过期 再去重新请求token 然后设置token的请求头 重新发起请求 用户无感 String content = proceed.body().string(); if (isTokenExpired(content)) { String newToken = getNewToken(); UserInfo.getInstance().setPhpSessionId(newToken); //使用新的Token,创建新的请求 Request newRequest = chain.request().newBuilder() .addHeader("……

    网友NO.356943

    Android Studio中ButterKnife插件的安装与使用详解

    1》Android Studio 安装ButterKnife插件 同安装其他插件类似,如下: 1.1》打开Plugins界面 按照上图中1,2,3指示操作(注意:这里我的Android Studio中已经安装了该插件,所以显示的内容不太一样)。然后重启Android Studio。 2》在项目上使用该开源项目(以Android Studio 为例) 2.1》在bulid.gradle中添加依赖 重新编译一下该项目,通过后继续操作。 2.2》在代码中就可以使用注解的方式了 2.2.1》示例布局文件如下: LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" TextView android:id="@+id/text_veiw_tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView 1" / Button android:id="@+id/button_bt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button1" / TextView android:id="@+id/text_veiw_tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView 2" / Button android:id="@+id/button_bt2" android:layout_width="match_parent" android:l……

    网友NO.466679

    Eclipse运行android项目报错Unable to build: the file dx.jar was not loaded from the SDK folder的解决办法

    由于最近通过 SDK-Manager 更新了 build-tools ,当要用到 dx.jar 这个包时,自动调用最新 build-tools 中 dx.jar ,但是运行 Android 项目时 Console 却提示: Failed to load C:\Program Files (x86)\android\android-sdk\build-tools\26.0.0-preview\lib\dx.jar Unable to build: the file dx.jar was not loaded from the SDK folder 解决步骤: (1)找到你 Android 的 SDK 安装目录C:\Program Files (x86)\Android\android-sdk,进入 build-tools 文件夹 (2)发现还有很多其他版本的 build-tools ,而且版本都是顺序排列的,我们就任意选择一个(只要不是最新版的就行),打开进入 lib 文件夹 (3)发现里面有 dx.jar 包,复制粘贴到最新版 build-tools 存放 dx.jar 包的目录下,替换掉原来的 dx.jar 包(C:\Program Files (x86)\Android\android-sdk\build-tools\26.0.0-preview\lib\dx.jar) (4)完成,再次启动 Android 项目,问题解决! 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接 ……

    网友NO.833261

    详解将Eclipse代码导入到AndroidStudio的两种方式

    说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入到AndroidStudio中使用。 这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。 OK,进入正题。 Google为了让我们更加方便的使用AndroidStudio,提供了两种导入Eclipse代码的方式:一种兼容Eclipse,一种是全新的Android Gradle Project. 这里,我们先从兼容模式说起。 兼容模式 这种模式下,保证了Eclipse时代的代码目录结构,整体操作和使用和Eclipse也差不多。 最重要的,当你使用AndroidStudio时,你或者其他人也可以方便的使用Eclipse,互不干扰。 实现步骤 1. 从Eclipse中导出Gradle build files 在Eclipse菜单中 File -- Export--Generate Gradle build files 接下来会到达警告界面,这里会提示AndroidStudio可以直接导入ADT的工程,先过,后面有直接导入的讲解。 选中你的项目工程,包括主工程和库工程(Library)。 确认生成 2. 修改导出文件参数 导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。 为了保证能够讲解的更清晰,下面分情况讲解一下: 没有库工程,只有主工程 这种情况下你看到的目录是这样的 首先需要更改的是 build.gradle 文件 AndroidStudio 1.0 ~ 1.0.2 使用的都是 Android Gradle plugin 1.0.0,因此需要将图中红框……

    电子书 编程教程 文档 软件 源码 视频

    Copyright 2018-2020 xz577.com 码农之家

    本站所有电子书资源不再提供下载地址,只分享来路

    免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

    版权投诉 / 书籍推广 / 赞助:QQ:520161757