
手机就是开发板
aggresss
开源社区搬运工/二手市场垃圾佬
展开
-
第七期 基于模拟器的Helloworld 可执行程序 《手机就是开发板》
这一期我们来写一个小程序运行在android 的shell里面,和普通的linux shell一个原理,用这个可执行文件来验证上一期写的驱动程序,也就是操作 /dev/hello 设备文件。下面提到的代码可以到https://github.com/aggresss/PHDemo 的Code 目录下的 hello_Execute 文件中下载,也可以访问这个链接直接查看:https:/原创 2016-12-10 21:35:27 · 1911 阅读 · 0 评论 -
第十七期 CyanogenMod 编译小米3W《手机就是开发板》
上一期我们使用直接下载的第三方固件在手机上刷机通过,相对于源码级别的改装还只是皮毛,这一期我们来实践下载并编译CyanogenMod源码,编译出固件并刷机试验。这里假设您已经搭建了AOSP的源码编译环境,如果没有请转到第二期。1.下载和编译前安装下面这些软件:sudo apt-get install bc bison build-essential curl flex git gnup原创 2017-01-04 00:08:04 · 4248 阅读 · 2 评论 -
第八期 基于模拟器的Helloworld HAL接口 《手机就是开发板》
Android 下的驱动总能和HAL放在一起被提起,估计当年Google就是因为HAL被Linux开源社区踢出去的。大家知道 驱动程序可以分成两个部分:硬件控制和业务逻。因为驱动要编译进内核,即使编译成模块也受GPL制约,所以Googl将android系统的驱动程序分成两层,硬件控制层放到内核驱动里,业务逻辑部分放到HAL里,可以不用开源,保护了部分芯片商的利益,估计这事是高通和Google一起想原创 2016-12-11 07:18:16 · 1955 阅读 · 0 评论 -
第十二期 Android ROM结构分析《手机就是开发板》
Android的ROM结构相比传统的bootloader+kernel+filesystem的嵌入式架构略复杂一些,通常我们从手机官方网站上下载的升级包都是zip格式,如果解压后你会发现里面有几个img或者bin后缀的文件。 这里说明一下,因为手机的厂商对自己的保护,在手机上的bootloader通常不是开源的,即使我们获得了源码但也是不允许公开的,而且再没有jtag调试器的情况原创 2016-12-31 15:08:24 · 4284 阅读 · 0 评论 -
第十八期 Android GPS原理分析《手机就是开发板》
如果想对Android的整个框架有一个更深层次的感性认识,我们还需要抓住一个点去研究一下。Android按照模块分成很多个系统,比如Audio,Video Out,Camera,Phone,WIFI,Blue Tooth,Light,Battery,Input,Codec,3D accelerator,Vibrator,Sensor,Alarm,Gps。分析了一下这些模块,发现GPS模块是相对原创 2017-01-10 22:49:25 · 5489 阅读 · 0 评论 -
第十九期 Android中修改GPS数据实验《手机就是开发板》
这一期我们来做一个简单的实验,实验的前提是要对当作开发板的手机有从源码编译的能力,如果还没有实现,请参考前几期内容。上一期我们分析了GPS定位数据是如何在Android中逐层上报的,如果不实践一下还是觉得不太直观。 不多说了,直接修改文件,进入到Android的源码目录,修改这个文件:frameworks/base/services/core/Java/com/android原创 2017-01-10 23:18:29 · 6109 阅读 · 10 评论 -
第十六期 CyanogenMod 小米3W刷机《手机就是开发板》
通过前面的介绍我们对Android系统是如何编译生成的以及软件的运行机制有了一个大概的了解,用模拟器来模拟Android系统还是不够直观,还是使用真机来模拟一下更有感觉,这一期我们来使用小米3联通版(MI3W)来刷Android系统。对于在Android平台上喜欢刷机的朋友应该应该都知道CyanogenMod,它将AOSP中goole强制嵌入的应用都去掉,让Android系统更加轻便和个性化,原创 2017-01-03 21:39:59 · 3682 阅读 · 4 评论 -
第二十期 在Android中修改GPS定位数据的完整方案《手机就是开发板》
现在很多的应用都是基于位置服务的,而且把位置服务作为重要的参考标准,其实这是很不安全的,位置信息的数据未经过任何加密,而且是从我们的手机中发送出去的,所以是可以修改的。这一期我们来探讨一下如何修改手机中的定位信息。太基础的原理我就不多说了,可以参考前几期文章。 先整理一下思路,Android在开发者模式下有一个"允许模拟位置选项",它是location service加载 MOC原创 2017-01-11 00:36:22 · 48581 阅读 · 54 评论 -
目录 《手机就是开发板》
第一期 前言 http://blog.youkuaiyun.com/aggresss/article/details/53364324第二期 AOSP 环境搭建、下载和编译http://blog.youkuaiyun.com/aggresss/article/details/53393511第三期 Android Kernel 下载和编译http://blog.youkuaiyun.com/aggress原创 2017-02-06 22:02:58 · 8098 阅读 · 2 评论 -
第十五期 在AOSP上建立一个新产品《手机就是开发板》
这一期我们来做一个实践,在AOSP上建立一个新产品,编译出镜像文件在模拟器emulator上运行。在实验前我们先整理一下思路,分析一下编译流程必要的定制文件。首先是执行./build/envsetup.sh会扫描device各子目录下的vendorsetup.sh,然后执行lunch时会扫描device各子目录中的AndroidProducts.mk文件;如果lunch中选择的TARGET_P原创 2017-01-03 00:20:42 · 2407 阅读 · 0 评论 -
第十三期 AOSP 编译环境初始化过程分析《手机就是开发板》
在之前的实验中,我们使用几个简单的命令就可以编译出适用于模拟器qemu运行的Android客户端 : source ./build/envsetup.sh 然后 lunch 最后 make,等上一盏茶的功夫,镜像就编译出来了。对于经常下载源码自己编译的兄弟一定很好奇,AOSP编译方式在表面上和Automake和Cmake的方式都不相同。因为AOSP比Linux内核的编译过程要复杂,Google为它原创 2017-01-01 22:32:19 · 2412 阅读 · 0 评论 -
第十四期 AOSP 编译系统分析《手机就是开发板》
AOSP的的编译过程复杂就在于要编译很多种类型的目标文件,不像kernel那样,只需要一种编译工具就能完成,在AOSP中主要包括以下几种目标文件:1. APK程序,一般的Android程序,编译打包生成apk文件2. Java库,java类库,编译打包生成jar文件3. C\C++应用程序,可执行的C\C++应用程序4. C\C++静态库,编译生成C\C++静态库,并打包成.a文件原创 2017-01-02 11:13:11 · 2316 阅读 · 0 评论 -
第九期 基于模拟器的Helloworld JNI方法 《手机就是开发板》
这一期我们来写一个JNI方法,JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++),JNI是Java调用Native机制,是Java语言自己的特性全称为Java Native Interface,类似的还有微软.Net Framework上的p/invoke,可以让C#或Visual Basic.NET可以调用C/C++的原创 2016-12-11 20:17:31 · 1727 阅读 · 0 评论 -
第十期 基于模拟器的Helloworld Framework接口 《手机就是开发板》
这一期我们在Android系统的Application Frameworks层提供Java接口的硬件服务,结合上一期添加的JNI方法来调用底层硬件。下面提到的代码保存在https://github.com/aggresss/PHDemo.git 的Code目录的hello_Framework文件中,也可以直接访问:https://github.com/aggresss/PHDemo/tre原创 2016-12-11 22:08:45 · 1558 阅读 · 0 评论 -
第十一期 基于模拟器的Helloworld APP 访问硬件服务 《手机就是开发板》
这一期我们来实现一个APP,从application层面来验证我们的HelloService服务。写APP还是得用IDE的开发环境来实现比较便捷,因为JAVA的开发环境不像C那样,使用VIM+各种插件就可以满足开发需要,所以建议使用android studio 进行开发,工程文件我放在https://github.com/aggresss/PHDemo.git 中的 Code目录下的 hell原创 2016-12-12 11:03:51 · 1921 阅读 · 1 评论 -
第二期 AOSP 环境搭建、下载和编译 《手机就是开发板》
Android最初是由Andy Rubin基于linux内核开发出来用于数码相机的操作系统,Android名字的原型是Andy Rubin小时候最喜欢的一个游戏人物,logo的原型是UI设计师在看到卫生间的简约图标时设计出来的。2005年8月android被Google发现而且收购并用于手机上,随着软件版本的迭代,Android已经有10亿级别的用户量,我们的电视,手机,手持电脑,手表,车载设备都原创 2016-11-29 15:42:08 · 9047 阅读 · 1 评论 -
第三期 Android Kernel 下载和编译 《手机就是开发板》
Android源码默认不包含他所使用的Linux内核源码,所以需要另外下载和编译。在生成镜像包时将单独编译生成的Image文件整合到boot.img中,这一期我们来下载和编译kernel。android kernel是在Linux kernel的基础上修改而来的,增加了适用于移动设备的IPC系统,日志系统,电源管理系统等等,android刚起步时kernel部分作为Linux kernel的一原创 2016-12-05 05:53:22 · 8308 阅读 · 4 评论 -
第四期 Android Studio 开发环境搭建 《手机就是开发板》
Android下的可视化开发工具主流的有eclipse和android studio 两种,android在5.0以后已经放弃是对eclipse的插件ADT的继续支持,所以还有Android 5.0 以后的API开发尽量使用android studio作为开发环境。不过eclipse还是很好用的,尤其是使用习惯了eclipse的几个经典的插件和常用的快捷键,刚刚转到基于intellij idea的原创 2016-12-08 22:24:43 · 3819 阅读 · 0 评论 -
第五期 基于模拟器上的实践和学习规划 《手机就是开发板》
前面三期我们分别动手实践了AOSP,kernel和APP的编译环境搭建,这是我们实践的基础,接下来我们继续深入,探索一下android的组成原理,并且每个环节都设置一个实验来验证学习的理论。在使用真正的手机操作之前我们有必要使用之前搭建的模拟器(emulator)来进行一些实验,通过一些简单的Demo程序来对android这个庞大的系统有一个感性的认识,因为模拟器的不存在真是的硬件,这样排除了硬件原创 2016-12-09 14:32:44 · 2066 阅读 · 0 评论 -
第一期 前言 《手机就是开发板》
前几天翻抽屉发现了一堆旧手机,不禁感慨,从2009年开始使用android系统的手机到现在,平均每十个月就换一个手机,因为工作原因很熟悉nand和eMMC存储器的工作原理,知道手机内的个人信息即使被删掉也是可以轻易恢复的,所以出于隐私保护的因素每一个旧手机我都妥善的收藏着。手机已经逐渐成为我们的一个器官,每天和他打交道的时间是最多的,同时它也是一个消耗品,一个手机陪伴我们的时间也就是一到两年的时间原创 2016-11-27 14:37:30 · 18727 阅读 · 6 评论 -
第六期 基于模拟器的Helloworld 内核驱动 《手机就是开发板》
这一期我们来做一个给内核添加驱动的实验,为了编译方便,我将android kernel 文件拷贝到AOSP目录下,修改目录名为kernel3.4,在kernel3.4的 drivers 目录下新建hello文件夹,我将添加的内容都放到了github上:http://github.com/aggresss/PHDemo 。里面的Codes/hello_KernelDriver 目录下 或者直接访原创 2016-12-10 12:34:38 · 2878 阅读 · 1 评论