博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第一部分:编译环境的安装和编译

1.   安装ubuntu9.10系统

2.   把源码传到ubuntu,并解压

3.   安装编译环境

     A.  sudo apt-get install bison

     B.  sudo apt-get install vim

c.  解决:安装JDK 5.0

   1):根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里我们使用jdk5

   2): 需要先更新源,在终端里执行 sudo vim /etc/apt/sources.list

   3): 在source.list里把以下2行拷贝到文档最后面:

       deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse

       deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

             保存退出。

   4): 执行 sudo apt-get update 更新源.

   5): 配置编译环境并下载JDK5:sudo apt-get install sun-java5-jdk

d. sudo apt-get install build-essential

e. sudo apt-get install zlib1g-dev

f.  sudo apt-get install flex

g. sudo apt-get install libncurses-dev

h. sudo apt-get install libx11-dev

i. sudo apt-get install gperf 

4.    设置环境变量

vi ~/.bashrc

#java 程序开发/运行的一些环境变量

JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

JRE_HOME=${JAVA_HOME}/jre

export ANDROID_JAVA_HOME=$JAVA_HOME

export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH

export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

export JAVA_HOME;

export JRE_HOME;

export CLASSPATH;

HOME_BIN=~/bin/

export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};

#java 程序开发/运行的一些环境变量

export ANDROID_PRODUCT_OUT=$androiddir/out/target/product/generic

ANDROID_PRODUCT_OUT_BIN=$androiddir/out/host/linux-x86/bin

export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

保存退出,然后执行source ~/.bashrc同步源

注意$androiddir是你android源码的目录

5.    在源码工程目录 make,等待.......完成

      启动模拟器

. build/envsetup.sh

emulator &

执行如果弹出模拟器窗口,则表示编译成功

 

第二部分:模块编译 在源码目录

A. 编译SDK

# make PRODUCT-sdk-sdk

编译好sdk后,在out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86,注意要移除出来,不如下次mmm编译时会清除掉他

B. 编译应用模块:不如联系人

. build/envsetup.sh

mmm packages/apps/Contacts 

$ make snod

重新生成system.img,再运行模拟器: emulator &

 

//非必须,可以通过Eclipse工程创建

C. 创建Android Virtual Device

编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过android工具查看:

$ android list

创建AVD:

$ android create avd -t 1 -n myavd

可以android –help来查看上面命令选项的用法。创建中有一些选项,默认就行了

再执行android list,可以看到AVD存放的位置

以后每次运行emulator都要加-avd myavd或@myavd选项:

$ emulator -avd myavd

 

第三部分:搭建eclipse环境  Eclipse

1.下载eclipse 

sudo apt-get install eclipse

2.下载ADT,下载完后重启

a.开始Eclipse,然后选择 Help > Software Updates > Find and Install….

b.对话框出现后,选择 Search for new features to install 点击 Next.

c.点击New Remote Site.

d.在结果对话框,输入远端站点的名字(如Android Plugin),输入站点如下:

https://dl-ssl.google.com/android/eclipse/site.xml点击OK.

3.加载SDK

a.选择 Window > Preferences… 来打开属性面板. (Mac OS X: Eclipse > Preferences)

b.从左边面板选择 Android。

c.在主界面上定位SDK 点击 Browse… 然后定位 SDK文件夹.

d.点击 Apply, 然后点击 OK.

4.新建一个android工程调试应用。

 

第四部分:加载android源码为eclipse工程并调试

1. 进入源码目录下的development/ide/eclipse,把android-formatting.xml  android.importorder  .classpath拷贝到源码目录

2. chmod +x .classpath 赋予执行权限

3. 在eclipse工程菜单 window-->preferences-->java-->Code Style-->Formatter 导入android-formatting.xml文件,organize imports导入android.importorder文件

4. 新建一个java工程,导入android源码

5. 修改eclipse配置,位于android.importorder目录下的eclipse.ini文件,修改-Xms,-Xmx为128和512

-Xms128m

-Xmx512m

调试:

1. 退出Eclipse工程

2. 在android源码目录执行  . build/envsetup.sh

3. 启动模拟器 emulator &

4. 等模拟器启动成功后,启动ddms   ddms &

5. 选择进程 ,注意一定要选择

6. 启动Eclipse,配置调试信息

 

7. 设置断点,启动调试

第五部分:添加一个应用为android系统应用

1. 在和系统相同版本的SDK目录下开发自己的android应用

2. 把开发的android工程放到源码的packages/apps/目录下

3. 在工程目录下添加Android.mk文件,修改LOCAL_PACKAGE_NAME :=test001 把工程名指定为自己的工程名,我加载的工程为test001

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

 

LOCAL_MODULE_TAGS := user

 

LOCAL_SRC_FILES := $(call all-java-files-under, src)

 

LOCAL_STATIC_JAVA_LIBRARIES := googlelogin-client

 

LOCAL_PACKAGE_NAME :=test001 

LOCAL_CERTIFICATE := shared

 

include $(BUILD_PACKAGE)

 

# Use the folloing include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

4. 回到源码目录,然后执行 . build/envsetup.sh 注意sh后面有个空格

5. 执行mmm packages/apps/test001  编译test001.apk包

6. 执行make snod,编译system.img包

7. 执行emulator &就可以在应用程序下看到自己编译的工程了

 

第六部分: 如何在android源码基础上修改联系人应用,添加自己的activity

1. 首先新建一个android工程,加载自己的java文件和资源文件

2. 在自己的android工程初步调试成功以后,把该工程的java文件,资源文件拷贝到联系人对应的java文件和资源文件目录

3. 然后在linux下执行以下命令,编译人联系人模块,把资源文件编译到联系人目录中

. build/envsetup.sh

mmm packages/apps/Contacts 

4. 刷新android源码工程,这个时候你就可以在Contacts包目录下看到你新加的资源文件和源文件了,并可以在源码工程下修改代码并直接调试了

5. ?? 为什么不在android源码工程下直接添加源文件和xml资源文件了????

答:因为我们的android源码工程师以java工程导入的,如果添加android的xml文件的话,java程序无法识别资源R文件,所以我们必须先把需要的

                xml资源文件先在linux下编译

6. 在源码工程修改后,则可在linux下再次执行联系人编译命令,并 make snod加载system.img文件,并启动模拟器(emulator &),就可以看到你的修改了。

 

第7部分:Contacts应用的基本结构

主入口程序:DialtactsActivity.java

启动函数:

   protected void onCreate(Bundle icicle) {

        super.onCreate(icicle);

 

        final Intent intent = getIntent();

        fixIntent(intent);

        //hide title

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.dialer_activity);

   /*初始化tab布局*/

        mTabHost = getTabHost();

 //设置Tab改变通知

        mTabHost.setOnTabChangedListener(this);

 

        // 设置拨号盘Tab标签

        setupDialerTab();

  //    设置拨打日志Tab标签

        setupCallLogTab();

 //  设置联系人Tab标签

        setupContactsTab();

             //   设置最爱的Tab标签

        setupFavoritesTab();

   //设置当前显示的tab页

        setCurrentTab(intent);

 

        /*????*/

        if (intent.getAction().equals(UI.FILTER_CONTACTS_ACTION)

                && icicle == null) {

            setupFilterText(intent);

        }

    }

                                                                                                               by zhangweia 07/19