我正在开发一个项目,我正在对android框架源进行更改.在Eclipse中执行此操作并且能够调试的最佳方法是什么?我已经看过在Eclipse中附加android源代码的帖子,但这是'标准'源代码,而不是我自己的版本.
目前我只是在文本编辑器中对框架进行更改,并且每次都通过命令行进行构建,从命令行运行模拟器并启动adb logcat会话以查看是否有任何异常,但必须有另一个(更高效/可行的方式来做到这一点?
对于我的论文,我正在修改android框架并构建源代码(4.1.1 Jelly Bean).我可以做一个完整的构建,但因为这是非常耗时的(我正在开发一个ubuntu 12.04 64位虚拟机)我想构建单独的模块.
例如:在对位置模块进行更改时,应该可以只构建已更改的模块,并创建一个新的系统映像:
mmm frameworks/base
make snod
Run Code Online (Sandbox Code Playgroud)
但这不起作用.每次我尝试启动时,新的系统映像都将无法启动,因为:
I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我试图用环境变量禁用dexpreopt
export $WITH_DEXPREOPT=false
Run Code Online (Sandbox Code Playgroud)
和
export $DISABLE_DEXPREOPT=true
Run Code Online (Sandbox Code Playgroud)
并使用'make installclean'进行完全重建.完全重建工作,并且构建中存在对框架的更改.但在做了一个新的改变之后,仍然是'mmm frameworks/base'和'make snod'导致dexpreopt不匹配.
来自'make snod'的build/core/makefile也会发出警告:'警告:启用dexpreopt,你可能需要一个完整的重建.',它来自makefile中的这一行:
ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
Run Code Online (Sandbox Code Playgroud)
这让我相信$ WITH_DEXPREOPT变量没有正确设置或读取?到目前为止,在没有进行干净的完全重建的情况下,我无法获得可引导的系统映像.我遵循的程序是否正确禁用dexpreopt,或者在更改框架并获取新的系统映像后是否还有其他方法来构建单独的模块?
构建目标是'full-eng'.