[Android 修炼手册]Gradle 篇 -- Android Gradle Plugin 主要流程分析 预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 android gradle plugin 的构建流程 了解 android gradle plugin 的主要 task 的实现 学会 hook android 构建流程,添加自己想要的功能 阅读…
[Android 修炼手册]Gradle 篇 -- Android Gradle Plugin 主要 Task 分析 预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 android gradle plugin 中各个 task 作用 了解 android gradle plugin 中主要 task 的实现 阅读前准备工作 1.项目添加 android…
Android Gradle 插件 Android Gradle 插件简介 从Gradle角度来看,Android其实是Gradle的一个第三方插件,它是由Google的Android团队开发的.但从Android角度 来看,Android插件是基于Gradle构建的,和Android Studio完美搭配的新一代构建系统. Android Gradle 插件分类 在Android中有三类工程,一类是App应用工程,它可以生成一个可运行的apk应用.一类是Library库工程,它可以生成AAR包…
Android Gradle 多渠道构建 多渠道构建的基本原理 在Android Gradle中,定义了一个叫Build Variant的概念,一个Build Variant=Build TYpe+Product Flavor,Build Type就是我们构建的类型,比如release和debug;Product Flavor就是我们构建的渠道,比如Baidu,Google等,它们加起来就是baiduRelease,baiduDebug,googleRelease,googleDebug,共有这…
Android Gradle 多项目构建 Android 项目区别 Android项目一般分为库项目,应用项目,测试项目,Android Gradle 根据这些项目分别对应3种插件:com.android.library,com.android.application,com.android.test. Android多项目设置 定义一个工程,包含很多项目,在Gradle中,项目的结构没有那么多限制,只要在settings.gradle里配置好这些项目就可以了. 库项目引用的配置 Android…
Android是架构分为三层: 底层      Linux Kernel 中间层  主要由C++实现 (Android 60%源码都是C++实现) 应用层  主要由JAVA开发的应用程序 应用程序执行过程大致如下: JAVA应用程序产生操作(播放音乐或停止),然后通过JNI调用进入中间层执行C++代码,中间层处理后可能需要硬件产生动作的,会继续将操作传到Linux Kernel,Kernel ,不需要硬件产生操作的可能在中间层做一些处理就直接返回.需要硬件产生操作的动作则需通过Kernel调用相…
之前在Android 4.4 音量调节流程分析(一)里已经有简单的分析音量控制的流程,今天想接着继续分析下音量大小计算的方法.对于任一播放文件而言其本身都有着固定大小的音量Volume_Max,而在AudioPolicyManagerBase.cpp文件中音量调节可以理解为在Volume_Max的基础上乘以系数κ(0≤κ≤1). 现在对AudioPolicyManagerBase.cpp中volIndexToAmpl函数做具体分析,volIndexToAmpl的函数定义如下: float Aud…
本文将从引擎源代码Jni分析Cocos2d-x3.3RC0的Android Activity的启动流程,以下是具体分析. 1.引擎源代码Jni.部分Java层和C++层代码分析 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXV4aWt1b18x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> watermark…
一.概述 从上篇[Android 7.1 屏幕旋转流程分析]知道实际的旋转由WindowManagerService来完成,这里接着上面具体详细展开. 调了三个函数完成了三件事,即首先调用updateRotationUncheckedLocked()更新rotation,然后调用performSurfacePlacement()做屏幕的绘制,最后调用sendNewConfiguration()发送Configuration变更事件. 本篇对updateRotationUncheckedLocke…
Android Gradle 高级自定义 使用共享库 Android的包,如android.app,android.content,android.view,android.widget等,是默认包含在Android SDK库里的,所有应用都可以直接使用它们.还有一些库,如com.google.android.maps,android.test.runner等,这些库是独立的,并不会被系统自动链接,所以如果要使用的话,就需要单独进行生成使用,这类库我们称为共享库. 在AndroidManifes…
本文首发于安全客 链接:https://www.anquanke.com/post/id/219094 0x1 前言 在Android平台上,程序员编写的Java代码最终将被编译成字节码在Android虚拟机上运行.自从Android进入大众的视野后,apktool,jadx等反编译工具也层出不穷,功能也越来越强大,由Java编译成的字节码在这些反编译工具面前变得不堪一击,这相当于一个人裸奔在茫茫人海,身体的各个部位被众人一览无余.一种事物的出现,也会有与之对立的事物出现.有反编译工具的出现,当…
1.前言 在前面的文章MSM8909中LK阶段LCM屏适配与显示流程分析(一),链接如下: https://www.cnblogs.com/Cqlismy/p/12019317.html 介绍了如何使用GCDB工具生成要适配的屏幕的相关配置文件,同时,也介绍了如何在LK启动阶段中,在基于Qualcomm的LCD屏幕软件驱动框架中,修改相应的文件去适配一款屏幕,此外,该文章是"MSM8909中LK阶段LCM屏适配与显示流程分析"的第二部分,主要是分析LK启动阶段中屏幕的初始化和显示流程是…
1.前言 在前面的文章Uboot启动流程分析(一)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12000889.html 已经简单地分析了low_level_init函数,其调用流程如下: save_boot_params_ret | cpu_init_crit | | | lowlevel_init | | | s_init | _main 接下来,则继续往下分析_main函数. 2._main函数 在save_boot_params_ret的最后,会运…
最近看恢复出厂的一个问题,以前也查过这方面的流程,所以这里整理一些AP+framework层的流程: 在setting-->备份与重置--->恢复出厂设置--->重置手机--->清除全部内容--->手机关机--->开机--->进行恢复出厂的操作--->开机流程: Step 1:前面找settings中的布局我就省略了,这部分相对简单一些,直接到清除全部内容这个按钮的操作, 对应的java类是setting中的MasterClearConfirm.java这个…
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.ShutdownThread 概述 2.shutdown 关机方法 3.shutdownInner 方法实现 4.CloseDialogReceiver 注册关机对话框广播 5.new sConfirmDialog 显示关机对话框 6.beginShutdownSequence开始关机…
创建Window 在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建Window,将一个View add到WindowManager时,WindowManagerImpl创建一个ViewRoot来管理该窗口的根View.并通过ViewRoot.setView方法把该View传给ViewRoot. final void attach(Context context, ActivityThread aThread, Instrumentation…
Android中对View的更新有很多种方式,使用时要区分不同的应用场合.1.不使用多线程和双缓冲      这种情况最简单,一般只是希望在View发生改变时对UI进行重绘.你只需显式地调用View对象中的invalidate(){关于invalidate的解释:当调用线程处于空闲状态时,会调用onDraw,刷新界面,也就是说,该函数仅是标记当前界面过期,并不直接负责刷新界面:}方法即可.系统会自动调用View的onDraw()方法. 2.使用多线程但不使用双缓冲      这种情况需要开启新的…
Android Audio 系统的主要内容: AudioManager:这个主要是用来管理Audio系统的,需要考虑整个系统上声音的策略问题,例如来电话铃声,短信铃声等,主要是策略上的问题. AudioTrack:这个主要是用来播放声音的 AudioRecord:这个主要是用来录音的 当前分析AudioTrack的文章较多,先以AudioTrack为例进行分析. JAVA层的AudioTrack class:framework\base\media\java\android\media\Audi…
转自:http://blog.csdn.net/hanmengaidudu/article/details/11777501 标准linux休眠过程: l        power management notifiers are executed with PM_SUSPEND_PREPARE l        tasks are frozen l        target system sleep state is announced to the platform-handling co…
AudioFlinger(AF)是一个服务,具体的启动代码在av\media\mediaserver\Main_mediaserver.cpp中: int main(int argc, char** argv) { signal(SIGPIPE, SIG_IGN); char value[PROPERTY_VALUE_MAX]; ) && (atoi(value) == ); pid_t childPid; // FIXME The advantage of making the proc…
如果你没有动手去演示的话,你一定要去动手试试看,这个东西非学容易出错,面试中经常出现,好了,上代码: package com.king.review.base; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClick…
引自http://blog.csdn.net/luoshengyang/article/details/7691321/ BootAnimation类的成员函数的实现比较长,我们分段来阅读: 第三个开机画面是由应用程序bootanimation来负责显示的.应用程序bootanimation在启动脚本init.rc中被配置成了一个服务,如下所示: service bootanim /system/bin/bootanimation user graphics group graphics dis…
AT指令,暂未发现发送AT请求的frameworks接口,通过打印信息总结AT指令: AT+EIMSVOICE: Enable/Disable IMS Voice Capability+EIMSVOICE=<config><config>: integer 0 disable IMS Voice capability1 enable IMS Voice capabilitynote:This command should set from AP side while boot-up…
11. HTTP 阶段执行 下面会依次执行以下阶段: NGX_HTTP_SERVER_REWRITE_PHASE: 在将请求的 URI 与 location 表达式匹配前,修改请求的 URI (所谓重定向)是一个独立的 HTTP 阶段. NGX_HTTP_FIND_CONFIG_PHASE:根据请求的 URI 寻找匹配的 location 表达式,这个阶段只能由 ngx_http_core_module 模块实现,不建议其他模块介入该阶段. NGX_HTTP_REWRITE_PHASE:在 NG…
前言 最近看了一本书<Android Gradle 权威指南>,收获挺多,就想着来记录一些读书笔记,方便后续查阅. 本篇内容是基于上一篇:读书笔记--Android Gradle权威指南(上) 上一篇中我们讲了: Groovy 基础 Android 项目中的 Gradle 2.1 gradle/wrapper 目录 2.2 gradlew.bat 文件 2.3 setting.gradle 文件 2.4 build.gradle 文 Gradle 基础 3.1 task 概念 3.2 grad…
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所以打算写一篇读书笔记,将书中一些我个人觉得蛮有用的点记录.总结一下. 前言 首先,先来过一下整书的目录章节,先大概清楚整本书都介绍了哪些知识点: 第 1 章 Gradle 入门 第 2 章 Groovy 基础 第 3 章 Gradle 构建脚本基础 第 4 章 Gradle 任务 第 5 章 Gradle 插…
我们知道Android Gradle其实就是一个Gradle的一个第三方插件,它是由Google的Android团队开发的,基于Gradle构建的,和Android Studio完美搭配.相比于旧的构建系统(比如:Eclipse + Ant),它更灵活,更容易配置,还能方便的创建衍生的版本,也就是我们常用的多渠道包. 下面是Android 官方对它的介绍: (1) 可以很容易地重用代码和资源. (2) 可以很容易的创建应用的衍生版本,比如:创建多个apk.创建不同功能的应用. (3)可以很容易地…
原文发于微信公众号 jzman-blog,欢迎关注交流. 通过前面几篇文章学习了 Gradle 基础知识以及 Gradle 插件相关的知识,关于 Gradle 及其插件相关知识请先阅读下面几篇文章: Gradle系列之初识Gradle Gradle之Groovy基础篇 Gradle系列之构建脚本基础 Gradle系列之认识Gradle任务 Gradle系列之Gradle插件 Gradle系列之Java Gradle插件 学习 Gradle 的目的主要是为了更好的在 Android 开发中使用 G…
1.前言 在前面的文章Uboot启动流程分析(二)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12002764.html 已经对_main函数的整个大体调用流程,以及函数的实现的各个功能进行了简单地分析,接下来,本篇文章将对board_init_f函数进行分析,在此之前,先来回顾一下_main函数的简单调用流程,如下所示: _main | board_init_f_alloc_reserve-->reserve gd and early malloc ar…
android gradle 和gradle plugin 1.安装完AS3.5.2创建完项目一运行,报了如下错误 Error:Could not find com.android.tools.build:gradle:4.1. Searched in the following locations: file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/android/tools/build/gradle/4…