android ubuntu9.10 源码的编译 Eclipse工程 Contacts编译 应用加载

news/2024/7/4 1:41:59

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

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

 

 

 

 

 

 

 


http://www.niftyadmin.cn/n/4121160.html

相关文章

MaxDos v5.8s 网刻图文教程

MaxDos v5.8s 网刻图文教程(傻瓜型) 本教程是基于MAXDOS环境所介绍网刻的,全中文傻瓜式。 客户端软件maxdos5.8,服务器ghostsvr8.3 一、 服务器端设置 1、 将本地连接IP地址设置为10.1.1.1,子网掩码设置为:255.0.0.…

Android源码中添加 修改应用

第一部分:添加一个新的应用 1. 在和系统相同版本的SDK目录下开发自己的android应用 2. 把开发的android工程放到源码的packages/apps/目录下 3. 在工程目录下添加Android.mk文件,修改LOCAL_PACKAGE_NAME :test001 把工程名指定为自己的工程名&#xff0c…

斯坦福大学iOS应用开发教程学习笔记(第二课) 计算器实现(mvc实战)

整个项目下载:https://github.com/junxianhu/Calculator,觉得有帮助的可以点击Star啊,谢谢啦。 界面不太好看 ==! 主要的文件目录如下: 贴几个关键的文件,其实注视都很详细&#…

NDK mk 文件分析

通过分析一个例子来了解NDK makefile文件的生成。例子"hello JNI" ,由NDK提供的例子 A. 目录结构 jni目录:包含本地源文件,eg:jni/hello-jni.c,该源文件实现了一个简单的共享库,实现了一个简单的…

哈佛告诉你

陈祖芬 哈佛某教授对学生说,你学我这门课,你就一天只能睡两小时。学生想,那么,我学四门课,我就没有睡眠时间了,我就得倒贴睡眠时间了。 于是—— 哈佛产的诺贝尔奖得主有33位。 哈佛产的美国总统有7位。…

中国武侠片经典剧情(^.^)

为什么80%的码农都做不了架构师?>>> 从小到大,可以说,我是一直看着中国武侠片长大的,中国武侠,确实有着自己的风格和传统,在世界影坛也有一定的地位,甚至有的国外朋友曾经问过我说&…

Activity LifeCycle 生命周期

1. Android中Activity的调用机制 据我的了解,Android中Activity跳转的实现,主要是通过栈的先进后出的原理设计的。当新建一个Activit的时候,把它压入栈,然后按返回键的时候,就出栈。android设置了容纳Activity栈的大小…

关于LUN、PV、VG和LV

1.划分LUN LUN只是一个逻辑的东西。在存储设备内部,LUN与物理硬盘的关系,如同主机中逻辑卷与物理硬盘的关系,也就是好像LV和PV的关系,在不同范畴。可以理解为LUN就是在做完RAID之后的逻辑盘上分出来的logic driver。 但不同的是&a…