通过本节实现Android开发的环境搭建,主要内容包括:

(1)Linux系统安装。

(2)开发工具安装。

(3)刷机。

2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。

2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责Android项目。

2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。

本文主要参考文档: 1-工作环境搭建指南;2-软件编译命令;ubuntu16.04开发环境搭建;AOSP(一)Ubuntu20.10编译AOSP。

搭建步骤

一、安装Ubuntu系统

为什么要在Linux搭建开发环境呢?从直观来说,Android虚拟机在Linux下运行速度更快,而且性能更稳定。

我安装的Linux环境是kubuntu-20.04.20-desktop-amd64.iso。

Google 会定期在 Ubuntu LTS (14.04) 和 Debian 测试版本中对 Android 编译系统进行内部测试。我们只要使用Ubuntu 14.04 以后的系统即可。

采用U盘启动安装kubuntu系统:

(1)制作启动盘:Windows可以使用UltraISO或者Rufus,Linux可以使用DD命令,另外还推荐开源多平台的启动盘制作工具:ROSA。

(2)启动盘制作完成之后,开机按F12选择从U盘启动进入系统安装界面就可以开始安装了。

(3)推荐在安装时自定义分区方案,将/home分区从/分区中独立出来,这样如果系统出现问题需要重装,就不会影响日常数据。以下是基于1TB 硬盘的分区方案。

分区 容量 格式 作用
/ 30G ext4 根分区(安装系统和软件)
swap 16G swap 缓存分区(物理内存用尽后会使用此分区当做虚拟内存使用,建议挂载到固态硬盘)
/opt 15G    
/efi 512MB fat32 efi引导分区 (如果BIOS设置的UEFI引导,则必须设置efi分区)
/home 剩余空间 ext4 用户目录(存储日常用户数据,也是我们常常操作的分区)

由于此步骤为我师傅帮助操作重装kubuntu系统,所以略过此步骤。

kubuntu安装后还需要做一些配置才能愉快的使用,包括添加软件源(更换为国内的软件源)、安装中文输入法、git等等。

1.添加软件源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup #备份kubuntu默认的源地址
kate /etc/apt/sources.list  #Ubuntu中的sudo gedit指令在kubuntu中为kate 

kate后打开配置文件,在文件开头添加下面的阿里云的软件源。我未进行更改软件源。

deb http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse

update更新软件列表,upgrade更新软件

sudo apt-get update
sudo apt-get upgrade

2.安装中文输入法IBus拼音

sudo apt-get install ibus-pinyin
ibus-setup

输入法的配置界面就会弹出,IBus Preference设置被打开。我们在Input Method选项卡中,选择自己喜欢的输入方式,并配置自己喜欢的快捷键即可,通常情况下,IBus图标(一个小键盘)会出现在桌面右上角的任务栏中。有时候这个图标会自行消失,可使用命令ibus-daemon -drx,找回消失的IBus图标。

3.安装git

git是程序员必备软件。

sudo apt-get install git
git config --global user.name yeling   #设置git用户名
git config --global user.email yeling@xxx.com.cn  #设置git邮箱
ssh-keygen -t rsa #生成密钥用于git验证,生成出的文件放到 ~/.ssh目录下
#如果过去有密钥,重装电脑之前记得备份一下~/.ssh。新系统安装完成后不用生成密钥,直接把原有的~/.ssh的内容复制到~/.ssh就可以了

4.安装配置ccache

sudo apt-get install ccache
ccache -M 100G #配置ccache大小
ccache -S #检查容量是否配置成功

5.bashrc的易用性配置

.bashrc这个文件主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。~/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

kate ~/.bashrc #打开.bashrc
source ~/.bashrc #修改完,保存关闭后,需执行此命令,立即生效.bashrc

有一些常用的bashrc配置可以提供我们的工作效率,以下功能,按需将对应的代码添加到~/.bashrc末尾,编辑完记得保存。

(1)客制化终端命令提示符(显示git分支,自定义颜色显示方式等)

#bash style 常用的客制化style 末尾添加
export PS1='\[\033[1;32m\]\u@\h \[\033[1;34m\]\w\[\033[1;36m\]$(__git_ps1)\[\033[1;37m\]\n$\[\033[0m\] '
#按如上配置,显示的效果如下:
link@NEON ~/project/complieCode/q/alps (dev_tecno_RC6)
$ sudo apt update

(2)添加历史命令补全(终端的上下键翻阅历史命令时可以按起始字符串智能匹配)

#bash history
if [[ $- =~ i ]]; thenbind '"\e[A": history-search-backward'bind '"\e[B": history-search-forward'
fi

(3)添加编译"mk"命令的项目名称补全

#mk mk completion
function _mk_completion() {local cur prev optsCOMPREPLY=()cur="${COMP_WORDS[COMP_CWORD]}"prev="${COMP_WORDS[COMP_CWORD-1]}"
​if [ -d "$(pwd)/../sagereal/mk/" ] && [ "$prev" != "mm" ];thenopts=`ls $(pwd)/../sagereal/mk/` COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )return 0elsereturn 1fi
}
complete -o nospace -F _mk_completion -o dirnames ./mk
complete -o nospace -F _mk_completion -o dirnames ./mp

(4)配置ccache

# 添加如下内容配置ccache
#ccache
export CCACHE_EXEC=/usr/bin/ccache # ccache的执行文件,一般都是这个路径
export USE_CCACHE=true #开启ccache
export CCACHE_SLOPPINESS=include_file_mtime,time_macros # ccache缓存类型
export CCACHE_DIR=/home/yeling/project/CcacheData # ccache 缓存存放路径,建议放在固态硬盘中(需提前建立此目录)
export CACHE_UMASK=002
unset  CCACHE_HARDLINK

二、安装开发工具

很多 Android 开发者都会希望编译 Android 源码并刷进自己的手机里面,但网上教程很多都仅仅是告诉你 lunch、make 等等,但你手里有一台设备时却发现,你编译出的镜像由于驱动关系是不能直接烧进手机的。这里整理了一下,帮助大家可以更好的搭建编译环境。

1.AOSP编译环境搭建

(1)基于AOSP官方推荐使用Ubuntu 14.04+的版本,官方要求安装如下库:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

我安装的库为:

sudo apt-get install git-core bison g++-multilib git gperf libxml2-utils make zlib1g-dev zip build-essential curl gnupg flex gcc-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip libnss-sss libssl-dev git openjdk-8-jdk libusb-dev python-crypto fontconfig
//以下为补充
#1安装python
sudo apt-get install python #之前没安装编译不了,显示没有命令
#2安装libncurses5 libncurses6
sudo apt install libncurses5 libncurses6 #编译时报libncurses.so.5不能找到
#3安装LLVM、libswitch-perl
sudo apt install llvm-6.0
sudo apt install clang-6.0
sudo apt install libswitch-perl
export LC_ALL=C    #去除本地化设置
#4安装Source Insight,神器,可以很方便的搜索,查找源码中的内容

(/1)如果需要编译M平台以下还需要安装以下软件包(仅支持Ubuntu 14.04):

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk flex mingw32 tofrodos libswitch-perl

(2)安装JDK

sudo apt-get update
sudo apt-get install openjdk-8-jdk #要编译android源码就必须使用OpenJDK,OpenJDK是OracleJDK的开源精简版
#配置JDK环境变量,由于系统已有,路径能找到,此时可不配置
kate ~/.bashrc
#文件末尾添加如下内容
#set java environment
export JAVA_HOME=/usr/bin #自己JDK存放路径
export CLASS_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

(3)安装Android Studio/SDK

#首先要下载AS的Linux版安装包
#方式一,下载下来解压,然后自动安装SDK即可,前提是有JDK
#方式二,输入以下命令
unzip android-studio-ide-143.2821654-linux.zip #解压
cd ./android-studio/bin
sh studio.h
#配置Android SDK tool环境变量
kate ~/.bashrc
#文件末尾添加如下内容
# Android Monitor
export ANDROID_MONITOR=/home/yeling/Android/Sdk/tools/   #SDK存放路径
export PATH=$ANDROID_MONITOR:$PATH
# platform-tools
export PATH=$PATH:/home/yeling/Android/Sdk/platform-tools/  #SDK存放路径
# build-tools
export PATH=$PATH:/home/yeling/Android/Sdk/platform-tools/29.0.3  #SDK存放路径
# 其他日常工具想在任意终端启用,也可以按此种方式添加到环境变量
source  ~/.bashrc #更新下~/.bashrc

(4)安装DLoader

#解压后的文件夹,给DLoader加可执行权限,在sprd_dloader内打开bash,输入命令
chmod +x DLoader
./DLoader  #确认DLoader可用
#配置DLoader环境变量
export DLPADER=/home/yeling/project/tools/DLoader R1.19.1901   #SDK存放路径
export PATH=$ANDROID_MONITOR:$PATH
source  ~/.bashrc #更新下~/.bashrc

检查以上软件是否安装成功。

三、刷机

1.编译整个系统代码

AOSP编译: (1)原生编译方法:

#1整体编译:(在项目的alps文件夹里打开bash,执行命令)
source build/envsetup.sh
lunch
X          ------> (编译模拟器版本,也可以按需自行选择)
make -jX 2>&1 | tee build.log (如果是N核处理器,X则不大于2N)
#make -j24 2>&1 | tee build.log
#     或者make -j24 -k 2>&1 | tee build.log
#          注:-j24取决于CPU的核数 查看cpu核数:cat  /proc/cpuinfo | grep processor | wc -l
#             2>&1 表示将标准错误重定向到标准输出
#             tee 表示同时将log输出到控制台和文件
#             "-k": keep going when encounter error
#remake的方法:依旧执行make -j24 -k 2>&1 | tee rebuild.log
#重新new需要先执行clean方法 再进行new操作
​
#2android模块编译:
Build android module
mmm <directory>
#example: mmm frameworks
Rebuild android module
mmm -B <directory>
#example: mmm -B frameworks/base
Build android module by name
make -j24 <module name>
#example: make -j24 libjpeg
#建议先使用:mmm -B,若无文件改变,再使用mmma,再次编译即可使用mmm -B      *************(建议在进行模块编译的时间加入 | tee mmbuild.log,收集模块编译时的log,编译完成后在log中查找“Install”即可查看编译生成的文件,(可直接将生成的APK文件夹push到/system/app/(/system/priv-app)对应的APK文件夹中))
#eg:mmm -B framework/base/  | tee mmbuild.log
#在mmbuild.log中查找“Install”关键字可看到如下生成的文件
#Install:out/target/product/sagetel6582_wt_l/system/framework/ext.jar'
#Install: out/target/product/sagetel6582_wt_l/system/framework/framework.jar

2.下载至手机

#1整个系统下载:(在编译后生成的项目文件名文件夹里(SP592XXXX)打开bash,执行命令)
DLoader -pac BC2c-XXXXX.pac -reset  #SP592XXXX里的.pac文件,设置刷机后重启
#DLoader -pac BC2c-XXXXX.pac -reset -nvbk false -filebk false #设置清除原系统备份数据,版本不同原因
#等待显示usb检测,将手机关机,按住声音下键,连接usb线至电脑,观察下载进度条,若无法刷机,需尝试三个键一起按
#下载成功显示download success,观察手机
​
#2android模块下载:(在alps/out文件夹里打开bash,执行命令)
adb devices  #需要检查能否连接上手机,不能则需手机调至开发者选项,USB调试模式
adb root    #若之前手机里已安装里user版本的系统,则需要检查能否下载,不能则需刷机
adb install ./target/product/sp7731e_1h10/product/priv-app/Dialer.apk  #找到Dialer.apk下载
#下载成功显示 success,观察手机  android 10手机不需关机直接插usb线下载

结语

这是叶大灵的Android开发第一步(图片资源因操作问题丢失了见谅),也是踏入互联网行业的第一步......

觉得有帮助的朋友,不妨点个赞再走呗! ╰( ̄▽ ̄)╭ ~

Android开发 环境搭建(ubuntu)相关推荐

  1. Ubuntu下Android开发环境搭建

    Ubuntu下Android开发环境搭建 最近开始学习Android APP开发,首先第一步就是搭建开发环境,在网上找了很多教程,发现大部分的教程都过时了,搞得比较麻烦.其实,现在使用Android ...

  2. Android 开发环境搭建 与在编译中遇到错误make Error 45解决方法

    Android 开发环境搭建 一.安装ubuntu 10.10操作系统 使用光盘安装,注意分区,分一个swap分区为3G(原则需要与内存一样大,但可以稍微比内存大一点).当时是同事帮我弄的,swap开 ...

  3. Android开发环境搭建及常见问题解决方法

    Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...

  4. Android开发环境搭建全程演示(jdk+eclip+android sdk)

    Android开发环境搭建全程演示(jdk+eclip+android sdk) http://files.cnblogs.com/Bany/Android%E5%BC%80%E5%8F%91%E7% ...

  5. Android开发环境搭建全程演示(jdk+eclipse+android sdk)

    全程演示android开发环境的搭建过程,无需配置环境变量.所有软件都是写该文章时最新版本 一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/java ...

  6. 【下班后学Android】Android开发环境搭建

    Android开发环境搭建方法: 方法一:百度搜索"Android开发环境搭建":http://jingyan.baidu.com/article/bea41d437a41b6b4 ...

  7. Android开发环境搭建与入门Hello World

    一直没机会接触手机开发,很想开发一款手机围棋软件,今天先学习一下环境搭建与Hello World吧. 环境配置对于没入门的很麻烦,谁如果有需要留下QQ邮箱,我发给你.不客气,呵呵. 推荐一本书: Go ...

  8. Android 应用开发(29)---android 开发环境搭建

    android 开发环境搭建 分类 Android 基础入门教程 现在主流的Android开发环境有: ①Eclipse + ADT + SDK ②Android Studio + SDK ③Inte ...

  9. Windows下Android开发环境搭建和配置

    关于Windows下Android开发环境搭建.配置方面文章,网上一搜一堆,为方便以后参考,权且做个记录,主要关注安装过程中的注意事项.对新手提醒的是,本文介绍SDK开发Android APK环境搭建 ...

  10. linux android开发环境搭建

    android开发环境搭建的一些有用链接: 1. sdk manager的国内服务器 http://www.cnblogs.com/huangjacky/p/4077982.html 2. 常见问题的 ...

最新文章

  1. python整数类型在每一台计算机上的取值范围是一样的_第四章、Python数据类型
  2. 闲鱼有流量,毒具特色,“全面”的转转如何突围?
  3. reactjs生命周期回调(钩子)函数:componentDidMount componentWillUnmount
  4. TiKV 在饿了么的大规模应用实践
  5. 一个实时收集MySql变更记录的组件CanalSharp.AspNetCore
  6. C语言中extern修饰符的用法
  7. 经验分享 | 二本直博浙大?我只是写了篇论文而已
  8. iOS开发进阶-实现多线程的3种方法
  9. s7epaapidll丢失怎么办_s7epaapidll下载
  10. Chrome 下载文件出现已禁止
  11. python爬虫爬取网易云音乐歌曲_如何用Python网络爬虫爬取网易云音乐歌曲
  12. 信息系统监理师备考知识点
  13. TCP紧急模式理解心得
  14. 正确的姿势很重要:该如何执笔
  15. NmRF:从RNA序列中鉴定多物种RNA2‘-o-甲基化修饰位点(假尿苷位点)
  16. Django model select获取数据详细讲解
  17. 35岁仍然落魄,有这3个苗头将大器晚成,你要刮目相看,主动结交
  18. 数论复习之费马与欧拉
  19. dnfdpl服务器维护了,DNF2019DPL机制介绍 以及本次DPL怪物顺序汇总
  20. “大数据杀熟”?商家对数据的使用可能远超出想象

热门文章

  1. 会议记录管理系统(5) -浏览会议记录模块设计
  2. 数据库实践LAB大纲 02 检索
  3. 小米首页产品调研分析和设计方案介绍(详细的倒计时代码介绍)
  4. 好佳居软装十大品牌 软装可以提升格调
  5. #2991. kiki君的护盾 (shield)
  6. android实现一键锁屏
  7. 春节义务帮人写了一个《求签在线查询》(ASP)
  8. java 解析3层xml_java实战之解析xml
  9. Android 之解析XML文件
  10. 铁乐学Python_day05-字典dict