开发环境: Ubuntu 10.04 LTS(64),四核 CPU4G 内存

开发机: 三星 Nexus S i9023

 

安装 Eclipse

 

http://www.eclipse.org/downloads/下载200M 左右的Eclipse IDE for JavaEE Developers(Linux 64 Bit),解压,假设解压到~/eclipse下面

~/eclipse/eclipse.ini -Xms40m改为-Xms128m


 

配置Ubuntu环境

 

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"sudo apt-get updatesudo 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 gcc-multilib g++-multilib libc6-i386 libc6-dev-i386 valgrind sun-java6-jdk

配置USB权限


添加 /etc/udev/rules.d/51-android.rules 文件,内容如下:

# adb protocol on crespo (Nexus S)SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="veiz"# fastboot protocol on crespo (Nexus S)SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="veiz

veiz 是我的用户名,大家请换成自己的用户名


 

拉取代码


mkdir ~/binPATH=~/bin:$PATHcurl https://android.git.kernel.org/repo > ~/bin/repochmod a+x ~/bin/repo

cd /path/to/android/root repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

今后若需要切换到其他的分支使用

repo init -b xxx

开始同步:

repo sync -j4

-j4 表示开4个线程来同步

同步比较慢,想提高效率的话可以用迅雷从我的网盘下载打包好的源码,再在此基础上同步。

 

下载驱动


同步完成之后,到http://code.google.com/android/nexus/drivers.html下载 Nexus S的驱动,一共四个.sh文件放在源码根目录下,执行之,在输入I AGREE之后脚本文件会释放驱动到vendor目录。如果忘了这步操作,那么编译出来的固件WIFI、蓝牙、GPS等都不能用,只能make clobber之后重编译。

下面开始编译代码和相关工具。


编译ADT

export ECLIPSE_HOME= ~ / eclipsemkdir ~ /adtdevelopment/tools/eclipse/scripts/build_server.sh ~ /adt

编译出来的 ADT~/adt下面

编译完之后在 Eclipse 中安装。

 

编译SDK

source build/envsetup.shlunch full_crespo-userdebugmake sdk

编译到最后若提示pc-bios相关的问题,可执行

cp /prebuilt/common/pc-bios out/host/linux-x86/usr/share

若提示xxx-tests 文件找不到,可out/host/linux-x86/framework目录下把一些相似文件名的文件复制一份重命名为缺失的文件,然后再make sdk

 

配置 Eclipse


编译完成之后,SDK 被打包放在

out/host/linux-x86/sdk/android-sdk_eng. veiz _linux-x86.zip

(veiz是我的用户名)

把这个ZIP 文件解压到其他目录,然后在Eclipse中指定Android SDK的目录为该目录。

 

将代码风格指定为Android:

 

Window->Preferences->Java->Code style , Formatter导入Android-formatting.xml, Organize Imports中导入Android.importorder

Android-formatting.xml.classpathandroid.importorder都放在development/ide/eclipse/

 

新建一个 Android 程序跑一跑,看看有没有问题。

查看代码时若提示 Source not found,可点击 Change attached source 按钮,指定为源码目录下的

frameworks/android.jar

如果没有这个文件,可以这么做:

下载 http://www.williamhua.com/wp-content/uploads/2009/06/fix_android_sdk.py 脚本,把其中的

return os.path.join(sdk_location, 'platforms', 'android-1.5')

android-1.5 改为实际的版本,比如 Android 2.3.4 就改为 android-2.3.4

Windows 下执行 fix_android_sdk.py

 

Open attached Javadoc 的时候若找不到Javadoc, 可在工程属性中指定Javadoc目录为SDK目录下的docs/reference

 

 

编译固件

 

lunch full_crespo-userdebugmake -j4

我的 CPU是四核的所以指定-j4

 

 

刷写固件


编译完成可以刷固件了。刷之前最好先做好备份工作。

先给Nexus S 解锁:

按上音量键,开机,进入bootloader.

export PATH=out/host/linux-x86/bin:$PATHfastboot oem unlock

重启之后在安卓市场装一个 superuser,再装一个rommanager, r ecovery 刷一下,现有固件备份一下。备份完成之后,在 bootloader模式下,

 

export PATH=out/host/linux-x86/bin:$PATHfastboot -w -p flashallfastboot flash boot out/target/product/crespo/boot.imgfastboot flash system out/target/product/crespo/system.imgfastboot flash userdata out/target/product/crespo/userdata.img

 

重启之后可以进入编译出来的系统了。

如果要恢复之前的系统,在 bootloader模式下选recovery,再选Backup/Restore,之后按提示操作。

 

去除原生应用


下面尝试修改 Android原生应用。以音乐播放器为例。音乐播放器的apksystem/app目录下,我们需要移除之,否则下面修改并安装Music.apk时会提示系统已存在一个同名的Music.apk

重启 NexusS,进入 bootloader模式。

rm out/target/product/crespo/system/app/Music.apk

make snod

fastboot flash system out/target/product/crespo/system.img

重启 Nexus S,可以看到主菜单中没有了Music.

 

修改原生应用


下面使用 GIT建立本地版本库,在此之上对音乐播放器进行修改。

Eclipse 中安装好EGIT 插件 (http://www.eclipse.org/egit/),

 

Git repoisitories视图中点第三个按钮Add Git Repositories

Search criteria Directory中填选择源码目录下的packages/apps/Music

点击Search,勾选找到的仓库,完成。

右键点击Branches,选Create Branch

选择Source branch,比如refs/remotes/korg/gingerbread

Brach name比如Master,这样本地主分支就建好了。

右键点击Master, Create a newbranch

Sourcebranch: refs/heads/master

Branchname填分支名称,如 branch_experimental

今后修改之后要重置修改可以用 Hard Reset

 

下面在我们的 Workspace中导入音乐播放器工程。

Package Explorer

Import -> Git -> Projects from Git -> Music-packages/apps/Music/.git -> Use the New Projects wizard -> Android->Android Project -> Create project from existing source -> Location: packages/apps/Music -> Finish

 

 

修改文件之后,前面会显示 ">",对文件的GIT 操作可以在工具栏进行,也可以右键点击文件,在弹出菜单的 Team子菜单中选择相应操作。

 

安装 NDK

 

如果要自己编译 NDK, 按照 ndk/documentation.html 中 Development 一章所说的步骤去做就行。这里偷懒一下:

developer.android.com 刚刚解封了,这是一件好事。我们可以到 http://developer.android.com/sdk/ndk/index.html

下载 NDK, 解压到源码的  ndk 目录下覆盖原原文件,然后执行

export NDK=`pwd`/ndkexport PATH=$NDK:$PATH

然后可以编译 NDK 的 Sample 了。

ndk-build -C ndk/samples/hello-jni/jni


下面可以在 Eclipse 中导入 hello-jni, 运行,屏幕输出 hello jni 的字样。成功!

 

提取工具链

 

SYSROOT=$NDK/platforms/android-9/arch-arm$NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/data/my-android-toolchainexport PATH=/data/my-android-toolchain/bin:$PATHexport CC=arm-linux-androideabi-gcc

写一个 C 程序 hello.c, 编译成名为hello 的可执行程序, push 到 Nexus S 的 /data 目录运行

$CC -o hello hello.cexport PATH=out/host/linux-x86/bin:$PATHadb push hello /dataadb shell/data/hello

也可以通过在 Nexus S 上装终端模拟器来运行 /data/hello

 

 

(http://blog.csdn.net/veiz)

 

PS: 上周决心入手 crespo, 加运费保险一起 2450.8元. 下单之后发现支付宝余额不足, 原来忘了之前有过一大笔支出. 于是把现有的支付宝、一张本地银行卡、一张异地银行卡、另一个支付宝余额加上财付通提现,总之把所有能动用的电子支付全掏空了汇集在一起,恰好凑出 2451.6 元...... 真是天意啊~ 上天保佑我的 Android 之旅一切顺利吧!


![endif]-->!-->

更多相关文章

  1. 解决用Android Studio开发项目如何放置assets文件夹
  2. [Android][Audio] audio_policy.conf文件分析
  3. android 进阶之如何阅读源码
  4. Android 源码之OpenGL 人物走动源码
  5. Android下的文件访问权限
  6. ijkplayer入门之目录介绍及编译
  7. android 水平滚动源码
  8. Android 读取raw下的txt文件

随机推荐

  1. 不产生第三个临时变量的前提交换两组数据
  2. YOLOv5目标检测实战:Jetson Nano部署
  3. 基于安全压缩感知的大数据隐私保护
  4. 专题导读:大数据隐私保护
  5. 专题导读:大数据整理
  6. 开放存取知识库及其数据采集规范的研究
  7. 基于SARIMA-LSTM的门诊量预测研究
  8. 人在回路的数据准备技术研究进展
  9. W EB:一种基于网络嵌入的互联网借贷欺诈预
  10. 农业大数据建设的需求、模式与单品种全产