本文主要对eclipse中android项目的编译过程进行分析。
本文只做分析,关于加快eclipse下android项目编译速度请见下一篇博客
Ps:本文中编译过程输出都是以真机(htc g7)作为avd,项目名为AONE,测试项目名为AoneTestProject,api level为8。
1、查看eclipse下android项目的编译过程
选择Window > Preferences > Android > Build > Build output > Verbose. 在console窗口的显示类型(一个显示器样式的图标)选择android。
2、具体编译过程
2.1 如果一个项目未曾修改,第一次在真机运行(即直接Run)输出为
[2012-03-19 15:44:54 - AONE] ------------------------------
[2012-03-19 15:44:54 - AONE] Android Launch!
[2012-03-19 15:44:54 - AONE] adb is running normally.
[2012-03-19 15:44:54 - AONE] Performing com.trinea.sns.activity.AccountManageActivity activity launch
[2012-03-19 15:44:54 - AONE] Automatic Target Mode: using device 'SH135PL00278'
[2012-03-19 15:44:54 - AONE] Uploading AONE.apk onto device 'SH135PL00278'
[2012-03-19 15:44:55 - AONE] Installing AONE.apk...
[2012-03-19 15:45:06 - AONE] Success!
[2012-03-19 15:45:06 - AONE] Starting activity com.trinea.sns.activity.AccountManageActivity on device SH135PL00278
[2012-03-19 15:45:07 - AONE] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.trinea.sns.activity/.AccountManageActivity }
从中可以看出install apk过程比较缓慢,但这一步优化的难度过高,而且只会第一次耗时较长优化的必要性不大,暂不作优化。
2.2 对于一般修改,build过程解析
修改一个java文件后保存(已勾选Build Automatically),build信息输出如下:
[2012-03-19 15:50:04 - AONE] Refreshing resource folders.
[2012-03-19 15:50:04 - AONE] Starting incremental Pre Compiler: Checking resource changes.
[2012-03-19 15:50:04 - AONE] Attribute minSdkVersion (3) is lower than the project target API level (8)
[2012-03-19 15:50:04 - AONE] Nothing to pre compile!
[2012-03-19 15:50:04 - AONE] Starting incremental Package build: Checking resource changes.
[2012-03-19 15:50:04 - AONE] Dx ignored resource D:\Eclipse\google code\AONE\bin\.\.svn\text-base\resources.ap_.svn-base
[2012-03-19 15:50:04 - AONE] Dx processing D:\Eclipse\google code\AONE\bin\.\com\trinea\sns\view\AccountView.class...
……
[2012-03-19 15:50:19 - AONE] Using default debug key to sign package
[2012-03-19 15:50:19 - AONE] Using keystore: C:\Users\Trinea\.android\debug.keystore
[2012-03-19 15:50:19 - AONE] Packaging AONE.apk
[2012-03-19 15:50:19 - AONE] D:\Eclipse\google code\AONE\bin\resources.ap_:
[2012-03-19 15:50:19 - AONE] => res/drawable/aone.png
……
[2012-03-19 15:50:19 - AONE] => res/layout/account_manage_list.xml
……
[2012-03-19 15:50:19 - AONE] => AndroidManifest.xml
[2012-03-19 15:50:19 - AONE] => resources.arsc
[2012-03-19 15:50:19 - AONE] D:\Eclipse\google code\AONE\bin\classes.dex => classes.dex
[2012-03-19 15:50:20 - AONE] D:\学习\Coding\Android\lib\signpost-commonshttp4-1.2.1.1.jar:
……
[2012-03-19 15:50:20 - AONE] => javax/servlet/http/LocalStrings.properties
……
[2012-03-19 15:50:20 - AONE] Build Success!
[2012-03-19 15:50:21 - AONE] Refreshing resource folders.
[2012-03-19 15:50:21 - AONE] Starting incremental Pre Compiler: Checking resource changes.
[2012-03-19 15:50:21 - AONE] Attribute minSdkVersion (3) is lower than the project target API level (8)
[2012-03-19 15:50:21 - AONE] Nothing to pre compile!
[2012-03-19 15:50:21 - AoneTestProject] Starting incremental Package build: Checking resource changes.
[2012-03-19 15:50:21 - AoneTestProject] Dx processing D:\Eclipse\google code\AoneTestProject\bin\.\com\trinea\sns\utilImpl\AutoGetDataCacheTest.class...
……
[2012-03-19 15:50:29 - AoneTestProject] Using default debug key to sign package
[2012-03-19 15:50:29 - AoneTestProject] Using keystore: C:\Users\Trinea\.android\debug.keystore
[2012-03-19 15:50:29 - AoneTestProject] Packaging AoneTestProject.apk
[2012-03-19 15:50:29 - AoneTestProject] D:\Eclipse\google code\AoneTestProject\bin\resources.ap_:
……
[2012-03-19 15:50:29 - AoneTestProject] => resources.arsc
[2012-03-19 15:50:29 - AoneTestProject] D:\Eclipse\google code\AoneTestProject\bin\classes.dex => classes.dex
[2012-03-19 15:50:29 - AoneTestProject] D:\Eclipse\google code\qqTAndroidSdk\target\QqTAndroidSdk-1.0.0-jar-with-dependencies.jar:
[2012-03-19 15:50:29 - AoneTestProject] => org/apache/log4j/lf5/config/defaultconfig.properties
……
[2012-03-19 15:50:30 - AoneTestProject] => javax/servlet/http/LocalStrings.properties
……
[2012-03-19 15:50:30 - AoneTestProject] D:\学习\Coding\Android\lib\trinea-sina-weibo.jar:
……
[2012-03-19 15:50:30 - AoneTestProject] Build Success!
[2012-03-19 15:50:30 - AoneTestProject] Refreshing resource folders.
[2012-03-19 15:50:30 - AoneTestProject] Starting incremental Pre Compiler: Checking resource changes.
[2012-03-19 15:50:30 - AoneTestProject] Nothing to pre compile!
以上省略号表示与上一语句类似
从上面我们可以发现
a. 源项目AONE和测试项目AoneTestProject会同时被编译
b. 源项目和测试项目的编译过程基本包括刷新资源文件、预编译、增量构建、dx class文件、对包进行签名、打包成apk文件。
c. 其中dx class文件过程耗时最长,达到15秒左右。而dx过程不仅编译本项目class文件,同时会编译所有依赖包的class文件,所以会根据项目生成的class文件个数以及依赖个数而变。
由此可见对于优化的重点可以放在dx过程中,android adt提供的dx工具没有缓存上次dx信息,导致每次都需要重新dx所有class,性能表现实在差劲,具体优化可以见加快eclipse下android项目编译速度
参考:http://stackoverflow.com/questions/2883635/android-compilation-is-slow-using-eclipse
分享到:
相关推荐
在使用Eclipse进行Android应用开发的过程中,可能会遇到创建项目时出现错误的情况,尤其是当使用较高版本的Eclipse与SDK时,这类问题更为常见。本文将针对此类问题提供一些解决方案。 #### 一、问题背景 使用高...
本篇文章将详细介绍如何在Eclipse中正确导入Android项目以及普通的Java项目。 首先,我们需要明确一个概念,Eclipse的workspace是开发项目的存储位置,它包含了所有项目文件。因此,当导入项目时,最好将项目复制到...
本文档将详细介绍如何在Eclipse中配置Android NDK开发环境,并实现C/C++代码的自动编译以及通过Eclipse使用Ant生成JNI所需的头文件。配置流程包括Linux和Windows两种环境下的步骤。 #### 二、配置前提 确保以下工具...
1. **Java Development Kit (JDK)**:Eclipse和Android编译都需要JDK。 2. **Android SDK**:包含了用于构建、调试Android应用所需的工具。 3. **Eclipse with ADT插件**:安装ADT以支持Android项目开发。 4. **Git*...
Eclipse导入android项目包xml报错解决方案 Eclipse导入android项目包xml报错是一个常见的问题,尤其是在使用appcompat_v7包时。下面是解决这个问题的详细步骤: 步骤1:导入项目 当我们导入android项目包xml时,...
本文档主要介绍如何将Android系统中的SystemUI模块导入到Eclipse中并进行编译的过程。 首先需要明确SystemUI(System User Interface)模块在Android系统中的作用。SystemUI是系统用户界面部分,它负责显示状态栏、...
3. **创建Android项目**: 在Eclipse中创建一个新的Android项目,选择合适的API级别。这个项目将作为你的应用程序的基础,包含Java源代码和AndroidManifest.xml等文件。 4. **配置Project Properties**: 对于项目,...
### Eclipse中NDK自动编译配置详解 #### 一、前言 在Android开发中,很多时候我们需要使用到C或C++来编写底层代码,以提高应用程序的性能。这时候就需要用到NDK(Native Development Kit)来进行开发。而在Eclipse...
在本教程中,我们将详细介绍如何在Eclipse中安装反编译插件Jadclipse,并了解其基本用法。 Jadclipse是一款专门为Eclipse设计的反编译插件,它整合了JAD(Java Decompiler)工具,使得用户可以直接在Eclipse内查看....
【标题】"可用eclipse编译的Calendar4.0项目" 涉及的主要知识点包括Android开发环境的搭建、Eclipse IDE的使用以及对Android API Level 4(Ice Cream Sandwich,ICS,Android 4.0)中Calendar API的深入理解和应用。...
### Windows 下 Eclipse 集成 Cygwin 编译 Android NDK 在 Windows 环境下使用 Eclipse 开发 Android 应用时,如果需要利用 C 或 C++ 的功能,通常会涉及到 Android NDK 的使用。为了更好地整合开发流程,可以将 ...
创建 Demo 需要在 Eclipse 中编写 Java 代码、设计界面布局、添加组件等,通过编译、调试和运行,可以生成一个完整的 Android 应用程序。 搭建 Android 开发环境需要安装 JDK、Eclipse、ADT、Android SDK 等工具,...
在Android开发过程中,保持项目的整洁和优化是至关重要的。Eclipse作为一款经典的集成开发环境(IDE),曾经是Android开发者广泛使用的工具。然而,随着时间的推移,项目可能会积累大量无用的Java源代码文件、资源...
在本项目中,我们关注的是针对Android 4.1.2版本的Launcher的Eclipse编译过程。Eclipse是早期广泛使用的Android开发集成开发环境(IDE),尽管现在Google已经推荐使用Android Studio,但Eclipse在特定场景下仍有其...
本篇文章将详细介绍如何在Eclipse环境中编译Android 4.1的Launcher2源码,并深入探讨其内部工作机制。 首先,我们需要理解Launcher2的基本架构。Launcher2是基于Android的Activity构建的,它通过ListView展示应用...
为了在Eclipse中支持Android开发,还需要安装ADT(Android Developer Tools)插件。在本文中,作者使用的是较旧版本的ADT 0.9.5,需要手动将features和plugin文件夹中的内容复制到Eclipse对应的目录。对于最新版本的...
在这个项目中,Eclipse被用来组织和管理VLC for Android的源代码、资源文件和构建过程。 3. **集成开发环境(IDE)的使用**:在Eclipse中开发VLC for Android,开发者可以享受到代码自动完成、错误检查、调试工具等...
Android 项目在 Eclipse 通过 SVN 资源库中检出项目是一个常见的操作,但是在这个过程中我们可能会遇到一些问题,例如项目编码格式错误、库文件缺失等。下面我们将详细讲解 Android 项目在 Eclipse 通过 SVN 资源库...
在Android开发过程中,有时我们需要深入理解系统的工作原理或者调试特定问题,这时查看Android源代码就显得尤为重要。Eclipse作为早期广泛使用的Android IDE,提供了查看源码的功能。本篇将详细介绍如何在Eclipse中...
本文档将详细介绍如何在Eclipse环境中配置Android NDK环境以及如何编译包含NDK组件的项目。NDK (Native Development Kit) 是Android平台提供的工具包,允许开发者使用C或C++语言编写应用程序的部分代码,这对于需要...