android 研究的环境搭建、高效工具、网站资源
================= 2015 年 10 月 14 号 更新
著名的android开源社区xda有一个帖子,详细描述了android开发和研究环境的初始搭建过程:
http://forum.xda-developers.com/chef-central/android/guide-android-rom-development-t2814763
================= 2015 年 2 月 3 号 首发
对付任何东西,都需要软硬兼施,对付android这家伙,软的招是搜集各种系统的、质量较高的文档及博客,先大概过一篇,看看有没有硬伤(就是自己完全不懂的领域);硬的是搭建源码编译和项目执行环境,实际动刀切进去。
开篇研究,就从这两方面入手,由于这里边有些坑,主要是硬的方面拜大GFW所赐,官方的搭建方式可能会弄得吐血,不得不搜办法绕过,感谢那些搭建了国内镜像站的骚年们,you are so great!
====== 先来软的: android 书籍、博客
下面是2014年左右新鲜出炉的android书或文档,作者都是神,大概过一遍可以快速了解android技术层面的架构和设计。
Android_Security_Intern__An_In-Depth_Guide_to_Android_s_Security_Architecture.pdf
Android_Dalvik_DEX_Internals.pdf
博客,老罗的android系列文章非常系统,缺点是版本较低,有一些知识已经不适用的,但不失为一个很好的指导
====== 硬的: android 研究环境搭建
一. ubuntu14.04 上搭建 android 5 源码编译环境
第一步,下载并安装 ubuntu14.04
第二步,下载android源码
官方下载通道非常慢,这里推荐清华大学的镜像,基本用法是:将 https://android.googlesource.com/ 全部使用git://aosp.tuna.tsinghua.edu.cn/android/ 代替即可。
本人(2015年1月)试过速度还行。
1.下载 repo
git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
2. 修改repo
google的地址
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
改为清华大学的地址
REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'
3.下载 manifest
google 的地址
$ repo init -u https://android.googlesource.com/platform/manifest
改为清华大学的地址
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
4.同步源码
repo sync
第三步,安装java
apt-get install openjdk-7-jdk, android-5 可以和 opensdk 一起工作了,不需要oracle-jdk
第四步,编译源码
0. 必须为编译机器准备至少4G的内存和80G的磁盘空间,少于4G可能编译的中间会卡死。本人为自己的ubuntu虚拟机划分了6G内存和100G的磁盘空间。
1. 安装依赖的库,
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
2. lunch
选择一种设备
3. make -j3
第五步,执行模拟器
二. win7 上搭建 android studio 项目开发环境
同样,官方的下载渠道几乎无法使用,这里强烈推荐一个国内的android资源小站:http://www.androiddevtools.cn/ , 上面包含了android 开发和研究需要的各种源码、工具的云盘下载链接,非常快速,版本也很新。
1. 在Win7上下载 java 并安装、设置环境变量
2. 下载sdk并安装,如 D:\adt-bundle-windows-x86_64-20140321\sdk
3. 下载 android studio 并安装,关联上述sdk路径
4. 下载sdk资源,这里推荐两种方式,最好的一种是直接从上述网站下载build-tools, platforms, extras, system-images 等各种android组件,然后解压到上述 sdk 路径的相应子路径,重启 android studio ,这种方式比较快。 另外一种是设置 sdk 代理,比如东软的代理:启动 sdk manager, 点击 tools, 点击 option, 设置 http proxy server: mirrors.neusoft.edu.cn, http proxy port: 80, 点击 clear cache , 然后通过 sdk 管理器选择要下载的组件并下载,注意,东软的镜像还是有点慢
====== show time
================= 2015 年 2 月 16 号 更新 —— Genymotion 加速模拟器
android studio 自带了avd 设备管理器,用于创建模拟器、管理模拟器,与 sdk 管理器配合使用,后者负责加载各种版本的andriod 镜像和build工具等, 其界面如下:
android studio 自带的设备模拟器运行速度比较慢,sdk管理器下载设备镜像等需要能翻墙。比较麻烦,这里介绍一个非常牛逼的模拟器软件: genymotion , 这哥们牛逼在哪? —— 不亚于真机的运行速度!
另外,可以非常方便地替换android studio 自带的avd管理器(也不叫不替换了,就是通过安装一个Studio插件增加一个管理器)。安装步骤如下:
1. 从官网 genymotion 下载一个安装软件,并注册账号。在安装过程中,会自动安装 oracle virtualbox 虚拟机。
2. 在android studio 上安装 genymotion 插件, file-settings-Plugins , 点击 browse repositories, 再选择 Genymotion ,安装即可,如下图,安装完后,studio 主界面出现一个类似avd manager的图标,不过是红色的,通过它就可以启动 genymotion 管理器
安装后的图标
3. 也可以直接通过 genymotion 创建和启动模拟器,此时,各种日志自动在 Android studio 的 logcat 等界面出现,非常方便。
================= 2015 年 2 月 16 号 更新 —— android studio DDMS 给模拟器打电话、发短讯
模拟器无法跟真实网络里的手机打电话,但可以通过studio DDMS模块给模拟器打电话、发短讯
1. 在工具栏选择设备监控器 android device monitor
2. 在打开的控制器里点击 emulator control , 填入电话号码,点击 call 即打电话给模拟器
模拟器内部显示接收了电话
3. android studio avd manager 启动的模拟器可以用上述方法打电话,但Genymotion 启动的模拟器,会报一个错 “Could not open '/sys/class/power_supply/genymotion_fake_path/present'” , 按照这里的方法http://blog.csdn.net/wjr2012/article/details/16359113 也解决不了问题,DDMS 无法和 genymotion 启动 device 交互
参考: http://www.cnblogs.com/ymnets/p/3730044.html
================= 2015 年 3 月 9 号 更新 —— Genymotion 启动的模拟器运行 arm ndk 程序失败问题解决
Genymotion 的模拟器依赖于 x86 上的 virtualbox, 直接运行 arm 架构的 ndk 程序或动态库会失败,需要额外安装一个 arm translation 包
==== android 安全相关 =====
安全的概念非常广,网上资源也很多,但大部分是重复的,而且讲得也不够深入,xkungfoo 系列演讲是能找到的比较干货的资源,分享下:
android 研究的环境搭建、高效工具、网站资源的更多相关文章
- android NDK开发环境搭建
android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...
- 传智播客C/C++各种开发环境搭建视频工具文档免费教程
传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓&quo ...
- Android自动化测试之环境搭建
Android自动化测试之环境搭建 一.Android-sdk介绍 SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台. ...
- android测试开发环境搭建
本文档针对未接触过android的0基础人员,在开始熟悉android之前,首先需要一个学习环境来支撑,在此简单介绍一下android环境搭建.(当然大家也可以百度.谷歌,类似的文档很多) 环境搭建: ...
- Android studio 开发环境搭建
Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...
- Android入门之环境搭建
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...
- Android自动化测试-UiAutomator2环境搭建
Android自动化测试-UiAutomator环境搭建(QQ交流群:490451176) 一.环境准备 1. 安装android sdk,并配置环境变量 2. 安装android studio,国内 ...
- Android 开发之环境搭建-0
Android 开发环境安装与配置 一.开发工具介绍 要进行Android应用程序开发,最起码要有两个工具,一个是Android SDK,它不仅为开发人员提供了丰富的编程接口,而且提供了相关的调试工具 ...
- Android 程序分析环境搭建-静态分析环境搭建
1.2 静态分析环境搭建 这里主要讲一些用的比较顺手的工具,一并列出来,Uaa,等环境配置, 2,notepad++ ,everything , Jdgui ,idea, ida ,Fiddler , ...
随机推荐
- C语言进阶——有符号与无符号02
在计算机的内部,我们所有的信息都是由二进制数字组成的 有符号数的表实法: 在计算机内部用补码的方式表实有符号数 正数的补码位正数的本身 负数的补码为其绝对值取反然后加一得到 例如-7 他在计算机内部的 ...
- fromkeys语法/set集合/深浅拷贝/列表/字典的删除
fromkeys语法: dic = {"apple":"苹果", "banana":"香蕉"} 返回新字典. 和原来的没 ...
- 15.9,python操作redis集群
上代码 .对redis的单实例进行连接操作 python3 >>>import redis >>>r = redis.StrictRedis(host=, db ...
- 3 Vue.js
1 2 3 <script> var vm = new Vue({ el:"#app", //context data:{ //context["articl ...
- mybatis 关联查询实现一对多
场景:最近接到一个项目是查询管理人集合 同时每一个管理人还存在多个出资人 要查询一个管理人列表 每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据. 实现方式: 1 .在实体 ...
- 【Java集合源码剖析】Java集合框架
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ...
- Java继承的缺点
转载自:https://www.cnblogs.com/xz816111/archive/2018/05/24/9080173.html JAVA中使用到继承就会有两个无法回避的缺点: 1.打破了封装 ...
- Python 推导式推导序列
推导式是从一个或多个迭代器快速创建序列的方法.它可以将循环和条件判断结合,从而避免冗长的代码. 一.列表推导式 语法: [表达式 for item in 可迭代对象] [表达式 for item in ...
- katalon系列一:初识Katalon Studio自动化测试工具
最近准备把公司的系统搞上UI自动化,先是自己用Python+selenium+pytest写了一个框架,开始写case的时候发现效率极其慢.原因为: (1)开发为提高前端响应时间,使用前端路由技术,一 ...
- 关于python中的 if __name__ == 'main'
name 是内置变量,它表示的是当前所在模块的名字,同时还能反应一个包的结构. a ├── b │ ├── c.py │ └── __init__.py └── __init__.py 目录中 ...