当前位置:首页 > 电子书 > 电子书下载 > >
Android组件化架构 Android组件化架构
码农之家

码农之家 提供上传

资源
15
粉丝
39
喜欢
331
评论
1

    Android组件化架构 PDF 清晰扫描版

    Android开发电子书
    • 发布时间:2019-04-03 09:05:24

    给大家带来的一篇关于Android开发相关的电子书资源,介绍了关于Android、组件化架构方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小96.9 MB,苍王编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.5。

  • Android组件化架构 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1sOm90sGheDRjSU0PY0jZ6
  • 提取码:h1b4
  • Android组件化架构

    Android组件化架构电子书封面

    读者评价

    1.1,1.2和第八章都还行,其他感觉也就那样子了,主要是组件化的核心和灵魂在哪里呢。虽然有种文人相轻的感觉。
    表示不知道作者在写这本书的时候是站在谁的角度写的!什么都讲一点就突然结束了,让你根本弄不明白始末,那我看你做啥。内容嘛就那样,花了一天,扫了下就过完了,回想了下,没啥收获。
    要评价的是关于书的质量的,简直就是一本辣鸡,内容浅显,比如讲到manifest的编译汇总流程,我个人感觉讲流程至少要讲清楚来龙去脉、各个moudle中manifest合并的顺序、每个部分的冲突怎么形成的怎么解决吧,但是作者仅仅说了编译后,各个module中manifest在build中的位置,就算是讲完了,真正的合并流程一点没提

    内容介绍

    《Android组件化架构》首先介绍组件化开发的基础知识,剖析组件化的开发步骤和常见问题,探究组件化编译原理和编译优化措施。其次在项目架构上,介绍如何组织团队来使用组件化开发,并将业务和人力进行解耦。最后深入介绍组件化分发技术及运用,探讨组件化架构的演进及架构的思维。

    《Android组件化架构》适合从事Android 组件化技术研究,想在Android 应用开发上进阶,以及有兴趣研究架构思维的Android 开发者阅读。

    内容节选

    Android四大组件之Service详解

     

    一、Service简介

    Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。

    Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。

    二、Service生命周期

    1.startService / stopService

    生命周期顺序:onCreate->onStartCommand->onDestroy

    OnCreate()

    系统在service第一次创建时执行此方法,来执行只运行一次的初始化工作。如果service已经运行,这个方法不会被调用。

    onStartCommand()

    每次客户端调用startService()方法启动该Service都会回调该方法(多次调用)。一旦这个方法执行,service就启动并且在后台长期运行。通过调用stopSelf()或stopService()来停止服务。

    OnDestory()

    系统在service不再被使用并要销毁时调用此方法(一次调用)。service应在此方法中释放资源,比如线程,已注册的侦听器,接收器等等.这是service收到的最后一个调用。

    2.bindService / unbindService

    生命周期顺序:onCreate->onBind->onUnBind->onDestroy

    同样首先是OnCreate(),接着是

    OnBind()

    当组件调用bindService()想要绑定到service时(比如想要执行进程间通讯)系统调用此方法(一次调用,一旦绑定后,下次再调用bindService()不会回调该方法)。在你的实现中,你必须提供一个返回一个IBinder来以使客户端能够使用它与service通讯,你必须总是实现这个方法,但是如果你不允许绑定,那么你应返回null。

    OnUnbind()

    当前组件调用unbindService(),想要解除与service的绑定时系统调用此方法(一次调用,一旦解除绑定后,下次再调用unbindService()会抛出异常)。

    最后是OnDestory()

    注意:通过bindService启动的Service的生命周期依附于启动它的Context。

    目录

    • 第1章 组件化基础
    • 1.1 你知道组件化吗
    • 1.2 基础组件化架构介绍
    • 1.2.1 依赖
    • 1.2.2 聚合和解耦
    • 1.3 重新认识AndroidManifest
    • 1.3.1 AndroidManifest属性汇总
    • 1.3.2 AndroidManifest属性变更
    • 1.4 你所不知道的Application
    • 1.4.1 Applicaton的基础和作用
    • 1.4.2 组件化Application
    • 1.5 小结
    • 第2章 组件化编程
    • 2.1 本地广播
    • 2.1.1 本地广播基础介绍
    • 2.1.2 使用方法
    • 2.1.3 本地广播源码分析
    • 2.2 组件间通信机制
    • 2.2.1 组件化层级障碍
    • 2.2.2 事件总线
    • 2.2.3 组件化事件总线的考量
    • 2.3 组件间跳转
    • 2.3.1 隐式跳转
    • 2.3.2 ARouter路由跳转
    • 2.3.3 Android路由原理
    • 2.3.4 组件化最佳路由
    • 2.3.5 空类索引
    • 2.4 动态创建
    • 2.4.1 反射基础
    • 2.4.2 反射进阶
    • 2.4.3 反射简化jOOR
    • 2.4.4 动态创建Fragment
    • 2.4.5 动态配置Application
    • 2.5 数据存储
    • 2.5.1 数据的存储方式
    • 2.5.2 组件化存储
    • 2.5.3 组件化数据库
    • 2.6 权限管理
    • 2.6.1 权限机制
    • 2.6.2 组件化权限
    • 2.6.3 动态权限框架
    • 2.6.4 路由拦截
    • 2.7 静态常量
    • 2.7.1 资源限制
    • 2.7.2 组件化的静态变量
    • 2.7.3 R2.java的秘密
    • 2.8 资源冲突
    • 2.8.1 组件化的资源汇合
    • 2.8.2 组件化资源冲突
    • 2.9 组件化混淆
    • 2.9.1 混淆基础
    • 2.9.2 资源混淆
    • 2.9.3 组件化混淆
    • 2.10 多渠道模块
    • 2.10.1 多渠道基础
    • 2.10.2 批量打包
    • 2.10.3 多渠道模块配置
    • 2.11 小结
    • 第3章 组件化优化
    • 3.1 Gradle优化
    • 3.1.1 Gradle基础
    • 3.1.2 版本参数优化
    • 3.1.3 调试优化
    • 3.1.4 资源引用配置
    • 3.1.5 Gradle 4.1依赖特性
    • 3.2 Git组件化部署
    • 3.2.1 submodule子模块
    • 3.2.2 subtree
    • 3.3 小结
    • 第4章 组件化编译
    • 4.1 Gradle编译
    • 4.1.1 Android基础编译流程
    • 4.1.2 Instant Run
    • 4.1.3 更优的Gradle构建策略
    • 4.2 极速增量编译
    • 4.2.1 Freeline的使用
    • 4.2.2 Freeline运行介绍
    • 4.3 小结
    • 第5章 组件化分发
    • 5.1 Activity分发
    • 5.1.1 Activity的生命周期
    • 5.1.2 Acitity分发技术
    • 5.2 Fragment分发
    • 5.2.1 Fragment的生命周期
    • 5.2.2 Fragment分发技术
    • 5.3 View分发
    • 5.3.1 View的生命周期
    • 5.3.2 View分发技术
    • 5.4 依赖倒置
    • 5.4.1 依赖倒置原则
    • 5.4.2 依赖倒置分发
    • 5.5 组件化列表配置
    • 5.5.1 Javapoet语法基础
    • 5.5.2 编译时注解配置
    • 5.5.3 集成配置列表
    • 5.6 加载优化
    • 5.6.1 线程加载
    • 5.6.2 模块懒加载
    • 5.7 层级限制
    • 5.8 多模板设计
    • 5.8.1 多模板注解
    • 5.8.2 脚本配置
    • 5.8.3 动态配置
    • 5.9 小结
    • 第6章 组件化流通
    • 6.1 内部流通
    • 6.1.1 Maven基础
    • 6.1.2 本地缓存
    • 6.1.3 远程仓库
    • 6.2 组件化SDK
    • 6.2.1 SDK基础知识
    • 6.2.2 Python脚本合并
    • 6.2.3 fat-aar脚本合并
    • 6.3 JCenter共享
    • 6.4 小结
    • 第7章 架构模板
    • 7.1 组件化模板
    • 7.1.1 模板基础
    • 7.1.2 模板制作
    • 7.1.3 实时模板
    • 7.1.4 头部注释模板
    • 7.2 注解检测
    • 7.3 小结
    • 第8章 架构演化
    • 8.1 基础架构
    • 8.2 基础组件化
    • 8.3 模块化
    • 8.4 多模板化
    • 8.5 插件化
    • 8.6 进程化
    • 8.7 小结
    • 附录A 思维与架构

    读书笔记

    Jenkins使用Gradle编译Android项目详解

    创建项目

    在主界面的左侧菜单选 新建
    在向导中选择 输入项目名称,类型选择 构建一个自由风格的软件项目
    点确定进入项目的配置界面

    源码管理

    选择git

    Repository URL输入项目路径 比如 https://git.coding.net/coderstory/Mi-Purify.git

    Credentials是对应的账户密码 点击add按钮添加github账户密码

    Branch Specifier 是选择具体的分支 默认是master

    Jenkins使用Gradle编译Android项目详解

    在构建大类中

    勾选Invoke Gradle 【不知道怎么安装Gradle 的勾选Use Gradle Wrapper 】

    选择当前项目所需的Gradle版本

    Tasks输入--stacktrace build

    Root Build script输入${WORKSPACE}            .

    Build File输入${WORKSPACE}\build.gradle

    具体填写什么还是要看具体的项目的

    注:${WORKSPACE}是一个变量,表示项目的根目录

    Jenkins使用Gradle编译Android项目详解

    项目编译后,我们需要存档每次编译生成的apk

    在构建后操作新增一个任务

    选择Archive the artifacts类型

    在输入框中输入你当前项目编译生产的apk所在的目录

    Jenkins使用Gradle编译Android项目详解

    这样就能在每个编译任务详情界面下载当前任务编译出的apk了

    Jenkins使用Gradle编译Android项目详解

    运行项目

    配置大致就完成了 点击最下面的save保存

    点击项目中的立即构建就能自动下载源码并编译了。

    Jenkins使用Gradle编译Android项目详解

    查看具体编译情况

    Jenkins使用Gradle编译Android项目详解

    编译结果

    Jenkins使用Gradle编译Android项目详解

    点击具体的某一条,然后再菜单中选择 Console Output 我们查看具体的编译信息,编译出错的话,我们也需要从这里排查问题。

    然后编译出来的apk在哪?一般存放在 ${WORKSPACE}\app\build\outputs\apk\app-debug.apk

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

    上一篇:华为云计算工程

    下一篇:Kali Linux高级渗透测试

    展开 +

    收起 -

     
    Android开发 相关内容
    Android高级进阶
    Android高级进阶 高清版

    《Android高级进阶》 是Android的进阶学习指南,主要为Android初中级开发者进阶所需的知识,高级开发者也可以从本书中发现很多共鸣点。《Android高级进阶》从8个方面对50个知识点进行分类讲解,

    立即下载
    Android进阶之光
    Android进阶之光 高质量版 立即下载
    Android物联网开发细致入门与最佳实践
    Android物联网开发细致入门与最佳实践 高清版

    Android物联网开发细致入门与最佳实践 循序渐进地讲解了基于Android系统开发物联网应用程序的基本知识、关键技术和实战流程。在讲解每一个知识时,都遵循了理论联系实际的讲解方式,从内

    立即下载
    大话移动APP测试 Android与iOS应用测试指南
    大话移动APP测试 Android与iOS应用测试指南 高清版

    移动互联网软件测试无论从思想还是技术上都与传统互联网产品或软件产品截然不同,导致了很多正在移动互联网中摸索的测试人员迷失了方向。作为一名移动互联网的测试从业人员,需要正

    立即下载
    Android移动应用开发:基于AdobeAIR
    Android移动应用开发:基于AdobeAIR 高清版

    《 Android移动应用开发:基于AdobeAIR 》共四部分19章,主要介绍如何使用AdobeAIR开发Android移动应用,深入讲解Android移动开发特有的各种主题,力图帮助读者创建高品质的应用程序。第1章~第5章讨

    立即下载
    Android APP开发入门
    Android APP开发入门 高清版

    《Android APP开发入门:使用Android Studio环境》从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用AndroidStudio开发环境开发Android应用程序应该掌握的各方面技术。全书

    立即下载
    Android实例开发完全手册
    Android实例开发完全手册 高清版

    Android凭借其开源开放性、优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为智能手机操作系统的翘楚。《Android实例开发完全手册》言简意赅、通俗易

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

    Android 自定义view仿微信相机单击拍照长按录视频按钮

    Android仿微信相机的拍照按钮单击拍照,长按录视频。先上效果图。 项目地址:https://github.com/c786909486/PhotoButton2/tree/v1.0 添加依赖 allprojects { repositories { ... maven { url 'https://jitpack.io' } } }dependencies { compile compile 'com.github.c786909486:PhotoButton2:v1.1' } 长按效果分析 判断是否为长按,如果是,则扩大外圆,缩小内圆。由于要扩大外圆,所以在绘制常态的外圆时不可将圆的直径设置为view的宽度或高度。 outRoundPaint.setAntiAlias(true); outRoundPaint.setColor(outCircleColor); if (isLongClick){ canvas.scale(1.2f,1.2f,width/2,height/2); } canvas.drawCircle(width/2,height/2, outRaduis, outRoundPaint);if (isLongClick){ canvas.drawCircle(width/2,height/2, innerRaduis /2.0f, innerRoundPaint); //画外原环 mCPaint.setAntiAlias(true); mCPaint.setColor(progressColor); mCPaint.setStyle(Paint.Style.STROKE); mCPaint.setStrokeWidth(circleWidth/2); RectF rectF = new RectF(0+circleWidth,0+circleWidth,width-circleWidth,height-circleWidth); canvas.drawArc(rectF,startAngle,mSweepAngle,false,mCPaint); }else { canvas.drawCircle(width/2,height/2, innerRaduis, innerRoundPaint); } 然后通过手势识别判断单击、长按、长按抬起。 mDetector = new GestureDetectorCompat(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { //单击 isLongClick = false; if (listener != null) { listener.onClick(TakePhotoButton.this……

    网友NO.109705

    使用python搭建服务器并实现Android端与之通信的方法

    前言 好久没有更技术文了,再不写怕是博客要废掉了,今天更一篇关于搭建服务端并与Android端通信的文章,为了节省代码量,服务端使用Python Flask,Android端使用Okhttp,还是老样子,文章不讲原理只给具体实现,想要了解原理可至官网详细研究。 服务端 环境:服务端使用Python3.5+PyCharm 新建Flask项目 看图: 然后create,初始化完成之后项目结构应该类似如下: 其实这时候直接启动项目就可以在浏览器访问到: 这就是使用现成框架的好处hhh,但是我们希望实现与客户端的通信,自然需要再做进一步code. 编写代码接受来自客户端的数据 首先我们看一下hello_world的代码: @app.route('/')def hello_world(): return 'Hello World!' 这里@app.route(‘/')意思就是访问你服务端地址时调用这个方法,所以我们可以通过这种方式实现自己的需求,比如: ​ @app.route('/demo', methods=['POST'])def demo(): value = request.form['demo_tag'] print(value) return "ok" 上面代码的意思就是你可以通过 http://127.0.0.1:5000/demo 访问到demo方法,request.form[‘demo_tag']的返回值是你客户端发送的tag为demo_tag的数据,下文会详细介绍如何发送数据,最后返回值你可以自己指定,这里随便给了一个。到这里服务端已经ok了,我们看看客户端如何实现. Android端 客户端使用Okhttp,需要导入两个jar包,地址 jar包……

    网友NO.149882

    详解Kotlin和anko融合进行Android开发

    kotlin是一门基于jvm的编程语言,最近进行了关于kotlin和 anko的研究。并且结合现在的APP设计模式,设想了初步的开发方式。并且准备应用在新的项目中。 Kotlin和anko Kotlin是大名鼎鼎的JB公司开发的jvm语言,官网地址为;http://kotlinlang.org/ 官网的介绍为: Statically typed programming language for the JVM, Android and the browser Kotlin的设计思想非常的轻量,尽可能的去复用java代码,不到万不得已的时候,一般不会自己去实现一套大而全的库。这使得Kotlin非常的轻量,集成到Android的project并不会很明显的影响最终的打包大小。 关于Kotlin的优点,自己总结了几点: 1,和Java的无缝调用,这在初期不需要投入非常大的精力,即使遇到搞不定的坑,也不必担心影响业务开发的进度,直接换成java就好了。 2,大量的语法糖,使得代码非常的简洁,熟悉之后的开发效率也要高于Java。例如扩展函数,简单的封装再也不需要写一大堆Utils工具类,直接灵活的给某些类添加扩展方法就可以了。例如: inline fun Activity.toast(message : Int) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } 这样在Activity类中就多出了一个toast方法,实际上在anko中,也有大量已经写好的扩展方法,可以直接使用DSL语法去写UI。再例如when语句的写法: when(x) {1- {}2- {}} 很明显,相比传统的Java写法,……

    网友NO.470276

    Android接入微信支付的方法

    1、先在微信开放平台申请开发应用,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。 2、注册APPID (这个可以放在项目的application里) 商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下: final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);// 将该app注册到微信msgApi.registerApp("wxd930ea5d5a258f4f"); 3、调用统一下单api生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。 例: 下面代码中的订单号是需要后台生成的 String url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; WXPrePost post = new WXPrePost(); post.appid = "你的appId"; post.mch_id = "你的商户号"; post.nonce_str = StringUtils.genNonceStr();//随机字符串 **1 post.body = "商品名称"; post.detail = "商品的描述"; post.out_trade_no = out_trade_no; //商户订单号 **2 post.total_fee = "商品价格";//单位是分 post.spbill_create_ip = getLocalIpAddress();//ip地址 **3 post.notify_url = "";//这里是后台接受支付结果通知的url地址 post.trade_type = "APP"; post.sign = genPackageSign(post);//签名 **4 ListNameValuePair firstSignParams = getFirstSignParams(post); String xml = toXml(firstSignParams); String entity = null; try { entity = new String(xml.getBytes(), "ISO8859-1"); byte[] buf = Util.httpPo……

    网友NO.27464
    网友NO.27464

    Java se基础
    1).Java基本数据类型与表达式,分支循环。
    2).String和StringBuffer的使用、正则表达式。
    3).面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收;构造函数、this关键字、方法和方法的参数传递过程、static关键字、内部类。
    4).对象实例化过程、方法的覆盖、final关键字、抽象类、接口、继承的优点和缺点剖析;对象的多态性:子类和父类之间的转换、抽象类和接口在多态中的应用、多态带来的好处。
    5).Java异常处理,异常的机制原理。
    6).常用的设计模式:Singleton、Template、Strategy模式。
    7).JavaAPI介绍:种基本数据类型包装类,System和Runtime类,Date和DateFomat类等。
    8).Java集合介绍:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合类API。
    9).JavaI/O输入输出流:File和FileRandomAccess类,字节流InputStream和OutputStream,字符流Reader和Writer,以及相应实现类,IO性能分析,字节和字符的转化流,包装流的概念,以及常用包装类,计算机编码。
    10).Java高级特性:反射和泛型。
    11).多线程原理:如何在程序中创建多线程(Thread、Runnable),线程安全问题,线程的同步,线程之间的通讯、死锁。

    网友NO.33186
    网友NO.33186

    android技术中,线程、进程、JNI、IPC和各个小框架结构是基本功。在跟随高焕堂老师的android程序猿到架构师之路系列视频中 学习完基础篇之后,颇有些心得,记录下来。
    android开发就是app开发吗?曾听过很多人说android学习很简单,做个app轻松就上手了。我一直觉得不以为然,许多程序员做app开发时,心中大致只有四大组件、各种布局、数据库和一些常用控件。对于各小框架、线程间通信、绑定服务、java与c的对接等基本原理并不清楚,也没必要弄清楚。
    最近学校搞了一个实训,要求做一个拼图游戏。面对一些特别的需求,出现一些奇特的bug,另一个同样学android 但是重心放在实现而非原理上的小伙伴觉得压力挺大。在我看来假如他学习过view框架的一些细节,像onDraw() invalidate()、onMeasure()函数这些,就很容易解决了。所以我认为,学习一项技术最好还是要懂原理,成体系零散的知识点看起来很诱人,能在很快时间内做出炫酷的效果。想着反正实现功能就好了嘛,何必纠结那么多。 这样的心态要不得,越零散越容易忘,越要重新学。所谓磨刀不误砍材工,系统的去学、有自己的见解、将知识融会贯通自成一套体系,长期坚持必然能拥有不凡的基本功,也拥有举一反三的能力。就技术而言,我个人觉得还是得挑难学的技术学,因为难所以核心,因为难所以有门槛。只要你坚持住了,将大大提高自己的核心竞争力。一句话总结,学东西重基础、成体系、能攻关,比所谓为了开发效率速成的技术来得有价值。
    android开发不仅仅是app开发,整个android体系庞大繁复,其中蕴含了许多匠师精巧的设计,在学习androi的同时多去关注android的设计理念,看看框架的实现思路甚至读读源代码,这对程序员的自身修养和实力都大有进益。
    最后,希望自己在架构师的路上不断前行,原各位同道在搞技术的同时多多思考。

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

    Copyright 2018-2020 xz577.com 码农之家

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

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

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