1.ubuntu安装
a.下载64位桌面版镜像文件ubuntu-12.10-desktop-amd64
b.下载EasyBCD
添加新条目——>NeoGrub——>安装——>配置
添加
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-xx.xx-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
把ubuntu-xx.xx-desktop-amd64.is 换成自己的版本就可以了!
保存设置
把ubuntu-xx.xx-desktop-amd64.iso文件也拷贝到C盘里解压Ubuntu-xx.xx-desktop-amd64.iso中casper文件夹下面的vmlinuz和initrd.lz到C盘
c.重启安装
Ctrl+Alt+T 输入 sudo umount -l /isodevice
安装注意选择分区,选Ext4文件系统,挂载点为/,安装启动引导器的设备选/dev/sda ATA
安装完成后重启
2.ubuntu环境搭建
a.安装jdk
下载jdk1.6.0_43.bin文件置于/usr/lib/jvm/java中
然后,在shell中执行:
代码:
sudo chmod u+x /usr/lib/jvm/java/jdk1.6.0_43.bin
修改bin文件权限,使其可执行
然后,执行
代码:
sudo /usr/lib/jvm/java/jdk1.6.0_12.bin
安装完毕
b.jdk环境配置
sudo gedit /etc/environment
添加
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_43
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_43/lib:/usr/lib/jvm/java/jdk1.6.0_43/jre/lib
PATH添加
:/usr/lib/jvm/java/jdk1.6.0_43/bin
执行
. /etc/environment
java -version 测试是否配置成功
c.android sdk
sudo gedit /etc/environment
PATH添加
:~/sdk/tools:~/sdk/platform-tools
执行
. /etc/environment
3.源码下载
编译环境
参考http://source.android.com/source/initializing.html
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
源码下载
参考http://source.android.com/source/downloading.html
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
主线上最新版本
$ repo init -u https://android.googlesource.com/platform/manifest
分支,用-b参数制定branch名字
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1
填写用户名和email
$ repo sync
4.源码编译
参考:http://source.android.com/source/building.html
http://wenku.baidu.com/view/626d4a2258fb770bf78a552f.html
a. 修改源码权限
执行 cd WORKING_DIRECTORY
sudo chmod -R 777 *
b. 开始编译
cd WORKING_DIRECTORY
make clean
make update-api
make -j4
注意:make update-api 只是首次编译时需要执行,后面重新编译时只需先make clean 再make -j4 。
编译时间大概为40分钟左右,编译时间跟机器配置有关。
make -jx x代表开启多少个线程来下载源码,有效利用CPU资源,但有可能会出现内存问题
如:
make: *** [out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang] Error 1
这时候还是直接使用make方法
如编译过程出错,将会编译中断,并给出错误提示,可根据提示去百度搜索相关解决办法
c. 编译完成
编译完成时,会在源码目录生成out文件夹如:
out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
out/target/product/generic/system.img
out/target/product/generic/ramdisk.img
out/target/product/generic/userdata.img
5.源码编译FQA
a.编译出的apk缺少资源文件
修改 build\target\product\generic.mk
添加 CUSTOM_LOCALES:= hdpi mdpi ldpi xhdpi xlarge
b.编译出的文件未被混淆
android在编译时默认关闭了混淆选项,在build/core目录有个proguard.flags文件,其实在proguard的过程中,编译器会调用包括本地目录下和系统定义了的多个proguard.flags文件,而在这个文件中混淆的选项被禁止了, 故而编译出来的apk仍未混淆。因此将如下句子注释掉便可实现真正的混淆编译:
# Don't obfuscate. We only need dead code striping.
-dontobfuscate(将该句加个#号注释掉)
编译Android4.0.3的常见错误:
参考:http://blog.csdn.net/yiyaaixuexi/article/details/8330645
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
gcc和g++版本太高了,把默认的4.6版本换为了4.4
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
sudo rm -rf /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
如是64bit系统,则还需装如下包
sudo apt-get install g++-4.4-multilib
6.环境相关FQA
a.adb的no permissions问题
可参考:http://developer.android.com/tools/device.html
sudo gedit /etc/udev/rules.d/51-android.rules
添加SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
更改权限chmod a+r /etc/udev/rules.d/51-android.rules
重启udev sudo /etc/init.d/udev restart
重新插拨usb
b.eclispe no java virtual machine was found错误
编辑eclipse.ini
在-vmargs 参数的前面添加
-vm
/usr/lib/jvm/java/jdk1.6.0_43/bin
c.安装eclipse svn
安装javaHL
sudo apt-get install libsvn-java
编辑eclipse.ini
在-vmargs下增加:
-Djava.library.path=/usr/lib/jni
Subclipse报Failed to load JavaHL Library错误:
将原来配置的
-Djava.library.path=/usr/lib/jni
改为
-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni
7. 编译源码模块
a.source build/envsetup.sh
b.使用mmm命令来编译指定的模块,例如QuickSearchBox应用程序:
mmm packages/apps/QuickSearchBox/
c.apk文件生成到 out/target/product/generic/system/app
8.其它ubuntu相关
a.添加Eclipse快捷方式
sudo gedit /usr/share/applications/eclipse.desktop
键入以下内容:将Exec和Icon中的路径换为你的Eclipse的路径,注意Ubuntu中是区分大小写的。
[Desktop Entry]
Name=eclipse
Name[zh_CN]=eclipse
Comment=eclipse Client
Exec=/home/datao/eclipse/eclipse
Icon=/home/datao/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Application;
Encoding=UTF-8
StartupNotify=true
b.安装svn软件rabbitvcs
sudo add-apt-repository ppa:rabbitvcs/ppa 添加源
sudo apt-get update 更新仓库
sudo apt-get install rabbitvcs-core rabbitvcs-nautilus3 rabbitvcs-cli 安装相关软件
安装 RabbitVCS Gedit 扩展
sudo apt-get install rabbitvcs-gedit
最后输入以下命令重启 Nautilus 就可以使用 RabbitVCS 了。
nautilus -q
c.安装samba访问局域网服务器
sudo apt-get install samba
a.下载64位桌面版镜像文件ubuntu-12.10-desktop-amd64
b.下载EasyBCD
添加新条目——>NeoGrub——>安装——>配置
添加
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-xx.xx-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
把ubuntu-xx.xx-desktop-amd64.is 换成自己的版本就可以了!
保存设置
把ubuntu-xx.xx-desktop-amd64.iso文件也拷贝到C盘里解压Ubuntu-xx.xx-desktop-amd64.iso中casper文件夹下面的vmlinuz和initrd.lz到C盘
c.重启安装
Ctrl+Alt+T 输入 sudo umount -l /isodevice
安装注意选择分区,选Ext4文件系统,挂载点为/,安装启动引导器的设备选/dev/sda ATA
安装完成后重启
2.ubuntu环境搭建
a.安装jdk
下载jdk1.6.0_43.bin文件置于/usr/lib/jvm/java中
然后,在shell中执行:
代码:
sudo chmod u+x /usr/lib/jvm/java/jdk1.6.0_43.bin
修改bin文件权限,使其可执行
然后,执行
代码:
sudo /usr/lib/jvm/java/jdk1.6.0_12.bin
安装完毕
b.jdk环境配置
sudo gedit /etc/environment
添加
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_43
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_43/lib:/usr/lib/jvm/java/jdk1.6.0_43/jre/lib
PATH添加
:/usr/lib/jvm/java/jdk1.6.0_43/bin
执行
. /etc/environment
java -version 测试是否配置成功
c.android sdk
sudo gedit /etc/environment
PATH添加
:~/sdk/tools:~/sdk/platform-tools
执行
. /etc/environment
3.源码下载
编译环境
参考http://source.android.com/source/initializing.html
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
源码下载
参考http://source.android.com/source/downloading.html
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
主线上最新版本
$ repo init -u https://android.googlesource.com/platform/manifest
分支,用-b参数制定branch名字
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1
填写用户名和email
$ repo sync
4.源码编译
参考:http://source.android.com/source/building.html
http://wenku.baidu.com/view/626d4a2258fb770bf78a552f.html
a. 修改源码权限
执行 cd WORKING_DIRECTORY
sudo chmod -R 777 *
b. 开始编译
cd WORKING_DIRECTORY
make clean
make update-api
make -j4
注意:make update-api 只是首次编译时需要执行,后面重新编译时只需先make clean 再make -j4 。
编译时间大概为40分钟左右,编译时间跟机器配置有关。
make -jx x代表开启多少个线程来下载源码,有效利用CPU资源,但有可能会出现内存问题
如:
make: *** [out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang] Error 1
这时候还是直接使用make方法
如编译过程出错,将会编译中断,并给出错误提示,可根据提示去百度搜索相关解决办法
c. 编译完成
编译完成时,会在源码目录生成out文件夹如:
out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
out/target/product/generic/system.img
out/target/product/generic/ramdisk.img
out/target/product/generic/userdata.img
5.源码编译FQA
a.编译出的apk缺少资源文件
修改 build\target\product\generic.mk
添加 CUSTOM_LOCALES:= hdpi mdpi ldpi xhdpi xlarge
b.编译出的文件未被混淆
android在编译时默认关闭了混淆选项,在build/core目录有个proguard.flags文件,其实在proguard的过程中,编译器会调用包括本地目录下和系统定义了的多个proguard.flags文件,而在这个文件中混淆的选项被禁止了, 故而编译出来的apk仍未混淆。因此将如下句子注释掉便可实现真正的混淆编译:
# Don't obfuscate. We only need dead code striping.
-dontobfuscate(将该句加个#号注释掉)
编译Android4.0.3的常见错误:
参考:http://blog.csdn.net/yiyaaixuexi/article/details/8330645
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
gcc和g++版本太高了,把默认的4.6版本换为了4.4
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
sudo rm -rf /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
如是64bit系统,则还需装如下包
sudo apt-get install g++-4.4-multilib
6.环境相关FQA
a.adb的no permissions问题
可参考:http://developer.android.com/tools/device.html
sudo gedit /etc/udev/rules.d/51-android.rules
添加SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
更改权限chmod a+r /etc/udev/rules.d/51-android.rules
重启udev sudo /etc/init.d/udev restart
重新插拨usb
b.eclispe no java virtual machine was found错误
编辑eclipse.ini
在-vmargs 参数的前面添加
-vm
/usr/lib/jvm/java/jdk1.6.0_43/bin
c.安装eclipse svn
安装javaHL
sudo apt-get install libsvn-java
编辑eclipse.ini
在-vmargs下增加:
-Djava.library.path=/usr/lib/jni
Subclipse报Failed to load JavaHL Library错误:
将原来配置的
-Djava.library.path=/usr/lib/jni
改为
-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni
7. 编译源码模块
a.source build/envsetup.sh
b.使用mmm命令来编译指定的模块,例如QuickSearchBox应用程序:
mmm packages/apps/QuickSearchBox/
c.apk文件生成到 out/target/product/generic/system/app
8.其它ubuntu相关
a.添加Eclipse快捷方式
sudo gedit /usr/share/applications/eclipse.desktop
键入以下内容:将Exec和Icon中的路径换为你的Eclipse的路径,注意Ubuntu中是区分大小写的。
[Desktop Entry]
Name=eclipse
Name[zh_CN]=eclipse
Comment=eclipse Client
Exec=/home/datao/eclipse/eclipse
Icon=/home/datao/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Application;
Encoding=UTF-8
StartupNotify=true
b.安装svn软件rabbitvcs
sudo add-apt-repository ppa:rabbitvcs/ppa 添加源
sudo apt-get update 更新仓库
sudo apt-get install rabbitvcs-core rabbitvcs-nautilus3 rabbitvcs-cli 安装相关软件
安装 RabbitVCS Gedit 扩展
sudo apt-get install rabbitvcs-gedit
最后输入以下命令重启 Nautilus 就可以使用 RabbitVCS 了。
nautilus -q
c.安装samba访问局域网服务器
sudo apt-get install samba