本文主要对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项目下c/c++代码的自动编译,和在eclipse中用ant生成ndk需要的jni头文件,加速ndk的开发,因为是原创,费了不少心力和时间,所以设了6分,有人反映太贵了,现在调成3分,这下大家满意了...
android launcher Eclipse编译,运行中需要添加相关系统的jar包,添加方法在运行必看.doc有介绍
windows下eclipse集成cygwin编译android_NDK.doc
将Android_SystemUI源码工程导入Eclipse编将Android_SystemUI源码工程导入Eclipse编译
eclipse中如何安装反编译插件Jadclipse, 文档和安装文件。
android Contacts 源码eclipse编译Contacts 联系人 eclipse 源码此为android Contacts 联系人源码在eclipse编译的APK。 可以运行在 android4.4 以及一下的系统中,本人通过大量修改 直接安装运行即可。
在Eclipse中编译运行Android4.3应用源码:Launcher2源码包。详细请参阅在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2 http://blog.csdn.net/klpchan/article/details/11843295
eclipse android ndk环境配置及项目编译超详细攻略,包括cygwin的安装,配置
Eclipse安装android插件 ========================================================================= com.android.ide.eclipse.traceview_10.0.1.v201103111512-110841.jar ...
android 6.0 gallery2 在eclipse 下编译运行版本,编译后经测试可以在4.4 以上的系统运行。
android 4.1 launcher2 源码 eclipse可以编译 联系我可以提供技术支持.
Eclipse采用AndroidStudio的编译打包方式利用gradle进行打包操作
Android反编译工具包是用于将已编译的Android应用程序(APK文件)转换回源代码的工具。升级后的工具包通常包含最新的反编译技术和功能,以应对新版本的Android系统和安全机制。 其中,dex2jar是一个常用的工具,...
vlc for android android 4.2.2 eclipse 可以编译通过的源码
SDL Android下编译源码, SDL2.03, Eclipse下NDK 编译运行
本项目是基于ics4.0的Calendar编译,解决了sdk中没有4.0Calendar所依赖的一些包而无法编译的问题
ubuntu系统下配置eclipse自动编译cocos2d-x的Android项目
eclipse_将android项目打包成签名的apk文件.doc
详情请参阅 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2 http://blog.csdn.net/klpchan/article/details/11843295
windows下eclipse中编译运行Launcher2源码+所需jar+教程