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


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

    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

  • 相关阅读:
    Error: listen EADDRINUSE: address already in use :::80报错解决
    kettle连接oracle
    Oracle 11g RAC使用Manual和Policy Managed方法配置
    Veritas NetBackup命令行添加ESXi主机,即时恢复虚拟机操作方法。
    在 ESXi 主机上关闭无响应的虚拟机电源 (1004340)
    [bug]记一次同步数据问题排查
    关于cmake和开源项目发布的那些事(PF)
    React 配置 @ 路径别名
    react httpproxymiddleware 跨域处理
    reactrouterconfig (嵌套路由)使用
  • 原文地址:https://www.cnblogs.com/zhangweia/p/2737618.html
Copyright © 2020-2023  润新知