Android开发环境搭建


原文链接: Android开发环境搭建

Android编译系统参考手册
Android 源码下载
Android 编译环境

常用PPA源

[git] apt-add-repository ppa:git-core/ppa
ssh-keygen -t rsa -b 4096 -C "rinetd@163.com"
[java] add-apt-repository ppa:webupd8team/java
[vim7.3] add-apt-repository ppa:passy/vim
[python2.7] add-apt-repository ppa:fkrull/deadsnakes
[cmake 2.8.11] apt-add-repository ppa:roblib/ppa
################################################################################
Ubuntu 10.04 64位LTS英文版本
sudo apt-get install 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

1. java-6u45

sudo add-apt-repository ppa:webupd8team/java
apt-get remove openjdk*可以卸载openJDK
安装sun java6-jdk
sudo apt-get update
sudo apt-get install oracle-java6-installer

                这里安装的是 JDK6, JDK7, JDK8, JDK9 也可以安装,用apt-cache search 查询

sudo apt-get install oracle-java6-set-default
java -version

补充: 手工设置xxx 为默认的方法,以java 为例:
update-alternatives --config java
update-alternatives --display java

为系统安装新的JAVA

$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/javac 1
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/java 1
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/javaws 1
$ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/javadoc 1
$ sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/javah 1
$ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/javap 1
$ sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk-6u45-linux-x64.bin/bin/jar 1

为系统选择新安装的JAVA版本

$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javaws
$ sudo update-alternatives --config javadoc
$ sudo update-alternatives --config javah
$ sudo update-alternatives --config javap
$ sudo update-alternatives --config jar
6.检查JAVA版本
$ java -version
7.验证Javac, Java, Javaws, Javadoc, Javah, Javap, Jar是否都指向新的JAVA位置和版本
$ ls -la /etc/alternatives/java* && ls -la /etc/alternatives/jar

2. git 版本过低的错误

fatal:git 1.7.2 or later required

解决方法:增加ppa
sudo apt-add-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
如果本地已经安装过Git,可以使用升级命令:
sudo apt-get dist-upgrade

下载源码镜像

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
$ chmod a+x ~/repo
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
$?=1; while [ $? -ne 0 ] ; do repo sync ; done

repo 相关问题

1.repo sync中遇到error:......checkout ....接一串hashnumber
解决方法:进到它说提示的目录中,用git status显示文件,将修改过的文件删除掉,再重新repo sync
2.repo sync中遇到:contains uncommitted changes
解决方法:进到它说提示的目录中,使用git reset --hard命令

  1. 怎么对repo下的所有project执行git命令
    解决方法:repo forall -c git checkout -b //该条命令会对repo下的project执行切换branch的命令
  2. 怎么切换到你想要的branch
    解决方法:git checkout branchName,比如 git checkout testBranch

################################################################################

编译内核

单独编译kernel : ./buildM120DRETAIL kernel
单独编译bootloader : ./buildM120DRETAIL aboot
编译kernel和bootloader : ./buildM120DRETAIL bootimage >boot.img
单独编译system image: ./buildM120DRETAIL systemimage
单独编译userdata image: ./buildM120DRETAIL userdataimage

fastboot flash bootloader u-boot.bin
fastboot flash kernel uImage
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash ramdisk ramdisk-uboot.img
fastboot erase cache

fastboot flash boot boot.img烧录boot分区
fastboot flash system system.img烧录system分区
fastboot flash userdata userdata.img烧录data分区
adb root
adb remount
adb pull
adb push
adb reboot recovery
adb reboot bootloader
fastboot flashall -w

//烧写kernel
./buildM120DRETAIL kernel
adb reboot bootloader
sudo fastboot flash boot boot.img
sudo fastboot reboot

Android.mk 编译系统

LOCAL_PATH:= $(call my-dir)

build\core\definitions.mk [define my-dir]

include $(CLEAR_VARS) #清空除LOCAL_PATH外的所有环境变量

build\core\config.mk[CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk]

$(BUILD_SYSTEM)

build\core\main.mk[TOPDIR := , BUILD_SYSTEM := $(TOPDIR)build/core ]

AP是application processor
CP是communication processor,modem那块。

安装编译好的Android镜像到模拟器上。

1. 设置环境变量:
USER-NAME@MACHINE-NAME:~/Android$ export PATH=$PATH:~/Android/out/host/linux-x86/bin
USER-NAME@MACHINE-NAME:~/Android$ export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
其中,~/Android/out/host/linux-x86/bin有我们要执行的emulator命令,而~/Android/out/target/product/generic是Android镜像存放目录,下面执行emulator命令时会用到。
2. 运行模拟器。
USER-NAME@MACHINE-NAME:~/Android$ emulator
模拟器运行需要四个文件,分别是
Linux Kernel镜像`zImage`
Android镜像文件`system.img`、`userdata.img`和`ramdisk.img`。
执行emulator命令时,如果不带任何参数,则Linux Kernel镜像默认使用~/Android/prebuilt/android-arm/kernel目录下的kernel-qemu文件,而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img,也就是我们刚刚编译出来的镜像问题。
当然,我们也可以以指定的镜像文件来运行模拟器,即运行emulator时,即:

emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
到这里,我们就可以在模拟器上运行我们自己编译的Android镜像文件了,是不是很酷呢?但是注意,这里说的Android镜像文件,只是包括system.img、userdata.img和ramdisk.img这三个文件,而Linux Kernel镜像用的是Android为我们预编译好的kernel-qemu镜像。那么,有没有办法使用我们自己编译的Linux Kernel镜像呢?答案上肯定的,这样我们就可以完全DIY自己的Android系统了!我将在下一篇文章描述如果编译自己的Linux Kernel镜像,敬请期待~

搭建easydrawin 视频服务

在线文档

  1. git clone https://github.com/EasyDarwin/EasyDarwin.git
    2.
`