为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 网络管理 查看内容

在Linux下编译Android源代码并修改调试系统

2011-5-25 10:24| 投稿: Linux

摘要:   下面的内容是在看过了很多的文章还有经过了很多的尝试之后得出的总结, 也作为自己以后可能重复这个过程的笔记.  从哪里引用到的内容都加上链接了.欢迎大家讨论.  首先下载并编译Android源码是必...
  下面的内容是在看过了很多的文章还有经过了很多的尝试之后得出的总结, 也作为自己以后可能重复这个过程的笔记.  从哪里引用到的内容都加上链接了.欢迎大家讨论.  首先下载并编译Android源码是必须的, 这就要求你必须要安装Linux, 我自己用的是Ubuntu 11.04,  在虚拟机装Ubuntu的话, 我给1个G的内存而已, 感觉已经是足够了, 不像网上说的需要至少1.5个G,  因为我的内存只有2G,如果分给虚拟机1.5的话,反而会卡得完全动不了.  而且整个过程我都是在root下执行的, 如果不是root, 建议使用sudo -sH来进行以下所有操作.  虽然官方是要求64位的操作系统才能编译, 但是我用的是32位的, 如何修改我会在下文说明.  还有一个问题是只有用Ubuntu 11.04这个特定版本编译的时候才会出现的,不知道会不会在新版的源码已经被修复了,  具体如何repo获取源码网上到处都是教程,我就不说了.严格按官方的教程来是没问题的.  另外提醒一点,repo的时候用参数 "-j 数字" 可以使用多线程下载.  需要注意的一点的还有很多教程还在说必须用JDK1.5 编译源码, 1.6编译SDK之类的,  其实是已经不需要了, 最新版的Android 只要直接装sun-java6-jdk就好了. (apt-get找不到就更新你的源或者直接去官网下)  然后如果你用的是32位的Linux, 编译之前必须做如下修改:  将  ./external/clearsilver/cgi/Android.mk  ./external/clearsilver/java-jni/Android.mk  ./external/clearsilver/util/Android.mk  ./external/clearsilver/cs/Android.mk  四个文件中的  LOCAL_CFLAGS += -m64  LOCAL_LDFLAGS += -m64  注释掉,或者将“64”换成“32”  LOCAL_CFLAGS += -m32  LOCAL_LDFLAGS += -m32  然后,将  ./build/core/main.mk 中的  ifneq (64,$(findstring 64,$(build_arch)))  改为:  ifneq (i686,$(findstring i686,$(build_arch)))  做完以上修改之后, 就可以开始编译源码了, cd到源码根目录下, 打"make". 然后去看场电影吧. 回来就编好了..  这一步会在android/out/target/product/generic/下面生产3个后缀为img的文件,建议拷贝一份出来吧,  我就遇到过这几个文件莫名消失结果需要重新make的情况.  如果你跟我一样只需要自己修改并编译和测试系统app, 是不需要make sdk这一步的  然后工作之前需要配置一下环境变量:  gedit ~/.bashrc 注意修改成你自己放源码的路径, 将以下2行添加到文件末尾:  export PATH=$PATH:/home/xxx/android/out/host/linux-x86/bin  export ANDROID_PRODUCT_OUT=/home/xxx/android/out/target/product/generic  最后记得执行一下  source ~/.bashrc  并且在源码根目录下执行一下:  . build/envsetup.sh  会帮你启用几个新的命令.比如下面我们要用到的"mmm"  然后就可以去修改你想要修改的系统app了, 全部都在android/packages下面.  具体修改的例子我会另外写一个文章来说,这次先说整个流程吧.  比如我修改的是系统的英文输入法, 位于android/packages  修改完后直接在android目录下执行, 指定到包含有Android.mk文件的目录就对了 :  mmm packages/imputmethods/LatinIME/  很快就会编译好了  (千万不要在根目录不加任何参数直接执行"mmm",不然你会后悔的,这等同于之前花了好长时间的"make")  然后就要把编译好的文件安装到模拟器中, 你可以之前就启动了模拟器, 也可以现在才启动, 都可以的,  安装前后也不需要重启模拟器, 执行了adb install 直接可以看到效果.  启动模拟器可以在android/out/target/product/generic/ 下直接执行这个命令:  emulator -image system.img -data userdata.img -ramdisk ramdisk.img  然后用这个命令把自己编译好的apk文件传入模拟器:  adb install -r /home/xxx/android/out/target/product/generic/system/app/***.apk  到这里基本就可以实现整个修改和调试系统app的流程啦,  其实前面都是一劳永逸的环境配置工作,实际上一直要用到的就是mmm和adb install -r 这两个命令而已  因为有些系统app涉及到jni的部分, 在Eclipse下面查看项目是会出错的, 我也不知道怎么实现在Eclipse正常调试,  所以只能是在文本编辑器里直接修改再install到模拟器里查看效果.

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部