android架构

六大布局之LinearLayout

删除回忆录丶 提交于 2019-11-27 10:06:26
1. 什么是Layout? Layout ——界面布局,为应用程序提供界面架构。控制Activity中控件的大小、位置、颜色等属性的方法. Layout 与 ViewGroup的关系 ViewGroup 是一个容器,继承自 View . ViewGroup 是 Layout 和一些其它组件的基类. 在Android中提供了几个常用布局: LinearLayout 线性布局 RelativeLayout 相对布局 FrameLayout 帧布局 AbsoluteLayout 绝对布局 TableLayout 表格布局 GridLayout 网格布局 今天我们主要讲线性布局,其余的常用布局会在后期文章为大家详细讲述。 2. LinearLayout线性布局: 指子控件以水平或垂直方式排列,正如其名字一样,这个布局中的所有控件在线性方向上依次排列。 常用属性: android:id :为该组件添加一个资源 id ,即标识符,可以通过 id 来找到该布局或者控件。 android:layout_width :布局的宽度,用 wrap_content 表示组件的实际宽度, match_parent 表示填充父容器 android:layout_height :布局的长度,用 wrap_content 表示组件的实际长度, match_parent 表示填充父容器 android

Android图形系统分析与移植--四、Surface Manager(Surface Flinger简介)

╄→гoц情女王★ 提交于 2019-11-27 08:38:15
Surface Manager是用户空间中framework下libraries中负责显示相关的一个模块,当系统同时执行多个应用程序时,SurfaceManager会负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成。 1、Surface manager架构分析 Android中的图形系统采用Client/Server架构,如下: Client端:应用程序相关部分。代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c++写成的底层实现。 Server端:即SurfaceFlinger,负责合成并送入buffer显示。其主要由c++代码编写而成。 Client和Server之前通过Binder的IPC方式进行通信,总体结构图如图1所示: 如上图所示,Surface的client部分其实是提供给各应用程序进行画图操作的一个桥梁,该桥梁通过binder通向server端的Surfaceflinger,Surfaceflinger负责合成各个surface,然后把buffer传送到FrameBuffer端进行底层显示。其中每个surface对应2个buffer,一个frontbuffer, 一个back buffer,更新时,数据更新在back buffer上,需要显示时,则将back buffer和front buffer互换。

[学习笔记一]、Android体系与系统架构

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 07:45:29
1、Android系统架构 2、Linux Linux层,Android最底层最核心的部分。我们打款手机Setting,选择about phone选项,这一选项所显示的内核版本,就是我们所用的Linux内核的版本。 Linux层包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统,等等。 3、Dalvik 与 ART Dalvik 包含了一整套的Android运行环境虚拟机,每个App都会分配Dalvik虚拟机来保证互相之间不受干扰,并保持独立。它的特点是在运行时编译。 打个比方,就好比你买了一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用。 而在Android5.x版本开始,ART模式已经取代了Dalvik, ART采用的是安装时就进行编译,以后运行时就不用编译了。 就好比你买了辆组装好了的自行车,装好就可以骑了。 当然,对在其虚拟机环境中运行的大部分App来说,它们都运行着同样的代码。 4、Framework 包含了整个Android Framework的重点。 5、Standard libraries 包含的是Android的一些标准库,就是开发者在开源环境中可以使用的开发库 6、Application 7、Android系统源码 查看系统源码的一个网站: http://androidxref.com/ http://grepcode.com

Flutter 1.7 正式版发布

好久不见. 提交于 2019-11-27 07:38:44
今天,我们非常高兴地向大家宣布又一个正式版本的发布 —— Flutter 1.7,这是继上次 I/O 时众多重要功能发布以来的一次小更新。Flutter 1.7 包含了对 AndroidX 的支持,满足了 Play 商店近期对应用提出的要求,包含了一些新的和增强过的组件,修复了开发者们提出的 bug 等。 如果你已经安装,并使用默认稳定构建渠道 (stable channel) 的 Flutter,要升级到 1.7 版本,只需要运行 flutter upgrade 即可。同时,你可以在 这个文档里 查看如何新安装 Flutter。 支持 AndroidX AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目,帮助 Android 应用通过最新的组件保持更新而无需牺牲向后兼容性。目前 AndroidX 已经稳定,很多 Flutter packages 已经更新和支持它,Flutter 现在可以支持 创建一个 AndroidX 项目 (new Flutter project with AndroidX) 了,这也减少了与 Android 生态系统集成所你需要做的工作。 当创建 Flutter 项目的时候,你可以通过添加 --androidx 来确保生成的项目文件支持 AndroidX,更多关于将项目迁移到

linux下生成ffmpeg的so包用于android开发浅尝

北慕城南 提交于 2019-11-27 05:49:33
linux下生成ffmpeg的so包用于android开发浅尝 安装linux 下载ndk以及ffmpeg 修改配置文件 生产so包 首先,安装我是在windows里面安装的vwmware,然后安装的ubuntu虚拟机; 安装好以后,首先配置相关软件; //1.创建ffmpeg文件 jianghp92@ubuntu:~/Desktop$ mkdir ffmpeg jianghp92@ubuntu:~/Desktop$ //2.安装所需要的相关软件 //下载git jianghp92@ubuntu:~/Desktop$ sudo apt-get install git Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: git-man liberror-perl Suggested packages: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn The following NEW

Android原生(Native)C开发

谁说胖子不能爱 提交于 2019-11-27 04:43:42
转载: Android原生(Native)C开发之一 环境搭建篇 转载: Android原生(Native)C开发之二 framebuffer篇 转载: Android原生(Native)C开发之三 鼠标事件篇(捕鼠记) 转载: Android原生(Native)C开发之四 SDL移植笔记 转载: Android原生(Native)C开发之五 zlib移植笔记 转载: Android原生(Native)C开发之六 libpng移植笔记 转载: Android原生(Native)C开发之一 环境搭建篇 2009年02月25日,星期三 Android是基于Linux的操作系统,处理器是ARM的,所以要在Linux或Windows等x86系统上编译Android能运行的程序,你需要一个交叉编译器。 在Linux下面,你可以自已编译一个交叉编译环境,但Windows下面,就比较复杂(也可以在cygwin中编译一个),但你可以选择下载一个现成的交叉编译环境: http://www.codesourcery.com/gnu_toolchains/arm/download.html Windows: http://www.codesourcery.com/gnu_toolchains/arm/portal/package3400/public/arm-none-linux-gnueabi/arm

Android平台上的JNI技术介绍

て烟熏妆下的殇ゞ 提交于 2019-11-27 01:09:30
NDK简介 Android是由Google领导开发的操作系统,Android依靠其开放性,迅速普及,成为目前最流行的智能手机操作系统。 图0-1 Android系统架构图 图0-1是Android系统架构图。大多数程序位于最上层的Java Application层。Android通过把系统划分为几个层次从而使得开发者可以使用平台无关的Java语言进行Android应用开发,不必关心程序实际的硬件环境。 Google不仅为开发者提供了SDK开发套件,为了能让开发者使用C/C++编写的本地化的共享库,利用编译后的共享库更高效的完成计算密集型的操作来提高应用的性能,或者移植重用已有的C/C++组件,提高开发效率,Android 1.5之后,又推出了NDK(Native Development Kit)。有了NDK,开发者能够在Android平台上使用JNI(Java Native Interface)技术,实现应用程序中调用本地二进制共享库。 由于Android系统不同于以往的JNI使用环境而是在嵌入式硬件环境下,Android NDK提供了一套交叉编译工具链,和构建程序的工具方便开发者在桌面环境下编译目标平台的二进制共享库。 目前NDK提供了对ARMv5TE,ARMv7-A,x86和MIPS指令集平台的支持,同时在本地接口的支持上,目前以下本地接口支持 libc libm libz

ARM芯片介绍

北战南征 提交于 2019-11-27 00:19:52
ARM芯片介绍 作者:nbnb001 原文网址: http://bbs.imp3.net/thread-894970-1-1.html 翻译来源: http://www.ruanyifeng.com/blog/2010/10/arm_chips.html 一、ARM9系列 较小的核心面积带来较低的成本,相对比较省电,但难以冲击更高的频率,总体效能有限。 1. 威盛WM8505/WM8505+ 主频:300MHz/400MHz 内存:128M DDR2,16bit 工艺:65nm工艺 Linpack测试:测试:1-1.25MFlops(Android 1.6系统) 视频处理:只有JPEG硬解,视频支持很弱,无3D加速 代表机型:国美飞触1代,山寨VIA平板 【点评】 价格低廉大概是这个方案的唯一优点,不知道国美是怎么忽悠把这个机器卖到999元的...... ARM9 300MHz的主频,自然不用指望有多好的性能,上网都勉勉强强吧。超频的400MHz版本,发热比较大,性能提升又实在有限。 视频能力很弱,也不能当MP4用,最多只能当个Android入门机器玩玩。 淘宝售价低至500-600元,7寸屏。如果不是囊中羞涩到一定程度,实在不推荐这个芯片的机器。真要入门的话,收个二手的智器Q5也比这个好。 性能★☆☆☆☆ 视频★☆☆☆☆ 2. 瑞芯微RK2808 主频:600MHz 内存

10本 Linux PDF 书籍免费分享

半城伤御伤魂 提交于 2019-11-26 16:54:28
极力推荐文章:欢迎收藏 Android 干货分享 本篇文章主要分享以下 Linux 开发 PDF 书籍 一、Linux程序设计 二、Unix环境高级编程 三、Unix_Linux编程实践教程 四、鸟哥的私房菜 五、深入理解Linux内核 六、Linux命令行与shell脚本编程大全 七、Linux内核设计与实现 八、ARM_Linux内核源码剖析 九、深入Linux内核架构 十、Linux系统编程 一、Linux程序设计 PDF书籍获取方法 关注微信公众号: 程序员Android ,回复 Linux程序设计 ,即可免费获取。 PDF仅供参考,支持购买正版书籍,请点击下方京东链接,谢谢! 点击查看图书详细信息 二、Unix环境高级编程 PDF书籍获取方法 关注微信公众号: 程序员Android ,回复 Unix环境高级编程 ,即可免费获取。 PDF仅供参考,支持购买正版书籍,请点击下方京东链接,谢谢! 点击查看图书详细信息 三、Unix_Linux编程实践教程 PDF书籍获取方法 关注微信公众号: 程序员Android ,回复 Unix_Linux编程实践教程 ,即可免费获取。 PDF仅供参考,支持购买正版书籍,请点击下方京东链接,谢谢! 点击查看图书详细信息 四、鸟哥的私房菜 PDF书籍获取方法 关注微信公众号: 程序员Android ,回复 鸟哥的私房菜 ,即可免费获取。

【Android AAC】第一篇 Lifecycle的源码解析

江枫思渺然 提交于 2019-11-26 14:30:00
前言 AAC是Android Architecture Components的缩写,翻译过来就是Android架构组件的意思,是Google IO 2017大会期间发布的一组架构组件,它可以用来帮助开发搭建更加简单便捷的APP架构。AAC里面涉及到了LiveData,ViewModel,其中LiveData的工作需要依赖于Lifecycle,所以本篇文章将介绍Lifecycle的工作原理,并从源码的角度去解析它。在进行源码解读前我们需要先知道Lifecycle的使用方法,下面先看一个简单的simple。 这里我们新建Activity继承androidx里面的AppCompatActivity,它已经实现了LifecycleOwner接口,我们可以通过它的 getLifecycle 方法拿到这个lifecycle对象添加observer,如果是自己实现的Activity,那么可以在自定义的Activity中新建一个 LifecycleRegistry 并在响应的生命周期中调用它的 handleLifecycleEvent 方法监听生命周期的改变。 class LifecycleTestActivity : AppCompatActivity ( ) { val TAG = javaClass . simpleName override fun onCreate (