Android-Ubuntu系统中使用Android studio并导入Android5.1源码

一、安装JDK1.7以上版本,过程略:
说明:选择JDK感觉有点鸡肋,编译Android 4.4要JDK1.6,编译Android 5.0以上版本用的是OpenJDK1.7,Android studio 推荐使用Oracle JDK1.7以上版本。
难道真要安装三种JDK?然后切来切去?哎约,真费劲!
    如果是方案,那么就必须安装OpenJdk1.7 和 JDK1.6了。文档需求的就是这样,为了避免不必要的error,还是按照文档来比较好。我自己也是安装了这两个,为了用Android studio,我没安装Oracle JDK1.7,Android studio使用OpenJDk1.7也是跑了起来,当然是否会出现什么未知的问题,不敢肯定。但是我想,编译手机系统软件都用的是OpenJDK的库,应该不会出什么问题吧。
    如果只是学习Android源代码,而不是工作需要,是可以不安装OpenJDK1.7的,而直接安装Oracle JDK1.7,同样能编译Android5.0以上的源码,但是需要修改main.mk文件。
文件路径:android5.1\build\core\。在main.mk文件中有下面一段代码来检测系统环境中JDK版本:
  1. # Check for the current JDK.  
  2. #  
  3. # For Java 1.7, we require OpenJDK on linux and Oracle JDK on Mac OS.  
  4. # For Java 1.6, we require Oracle for all host OSes.  
  5. requires_openjdk :false  
  6. ifeq ($(LEGACY_USE_JAVA6),)  
  7. ifeq ($(HOST_OS), linux)  
  8. requires_openjdk :true  
  9. endif  
  10. endif  
  11.   
  12. # Check for the current jdk  
  13. ifeq ($(requires_openjdk), true)  
  14. # The user asked for java7 openjdk, so check that the host  
  15. # java version is really openjdk  
  16. ifeq ($(shell echo '$(java_version_str)' | grep -i openjdk),)  
  17. $(info ************************************************************)  
  18. $(info You asked for an OpenJDK 7 build but your version is)  
  19. $(info $(java_version_str).)  
  20. $(info ************************************************************)  
  21. $(error stop)  
  22. endif # java version is not OpenJdk  
  23. else # if requires_openjdk  
  24. ifneq ($(shell echo '$(java_version_str)' | grep -i openjdk),)  
  25. $(info ************************************************************)  
  26. $(info You are attempting to build with an unsupported JDK.)  
  27. $(info $(space))  
  28. $(info You use OpenJDK but only Sun/Oracle JDK is supported.)  
  29. $(info Please follow the machine setup instructions at)  
  30. $(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html)  
  31. $(info ************************************************************)  
  32. $(error stop)  
  33. endif # java version is not Sun Oracle JDK  
  34. endif # if requires_openjdk  
按照上面代码的意思,将requires_openjdk := true改成requires_openjdk := false,就可以使用Sun/Oracle JDK来编译。
 
二、下载Android studio 2.0 Preview(Linux 版)和Android SDK,过程略:
    可以从http://www.androiddevtools.cn/下载。
    下载以后解压,然后将android-studio移动到opt目录下,命令行:sudo mv android-studio /opt/ (在当前目录下使用的命令).
    启动android studio的两种方式:
    1)直接通过命令启动:/opt/android-studio/bin/studio.sh
    2)可以把android studio添加到ubuntu系统的application中,并锁定在到启动器上。
      首先在桌面上新建一个文档,命名为androidstudio.desktop,然后打开写入一下内容:
  1. [Desktop Entry]  
  2. Version=1.0  
  3. Name=Android studio  
  4. Exec=/opt/android-studio/bin/studio.sh  
  5. Terminal=false  
  6. Icon=/opt/android-studio/bin/studio.png  
  7. Type=Application  
  8. Categories=Development;IDE  
  9. Terminal=false  
  最后保存将这个文件移动到/usr/share/applications/,如图:
    Android-Ubuntu系统中使用Android studio并导入Android5.1源码
    由于我使用的ubuntu 12.0.4,所以可以打开Dash主页,搜Android studio:
    Android-Ubuntu系统中使用Android studio并导入Android5.1源码
    选择这个图标,就会启动android studio,同时启动器上也会有android studio的图标,此时右键选择锁定到启动器,以后就可以比较方便的启动Android studio:
    Android-Ubuntu系统中使用Android studio并导入Android5.1源码     
    第一次启动android studio最好还是设置一下disable.android.first.run=true,写在文件/opt/android-studio/bin/idea.properties中;
    第一次启动android studio 之前最好更新一下sdk,最好不要支持库是最新版本,Target SDK 却不是Android 23,这样在新建应用的时候可能会提示一些资源找不到什么的错误,当然可以修改一些配置了解决,但还是能更新就更新吧。
    启动android studio的时候,如果IDE右上角提示什么watches limit,大致意思是什么文件夹大小配置的太少了之类的,如图:
   Android-Ubuntu系统中使用Android studio并导入Android5.1源码
    这个时候可以点击More details提示,然后会调到一个网页上,上面有提示如何处理的方法:    
  1. sudo gedit /etc/sysctl.conf  
    在这个文件最下面增加下面这句话:
  1. fs.inotify.max_user_watches = 524288  
 最后执行下面命令,重启android studio,提示不见: 
  1. sudo sysctl -p  

三、导入Android 5.1源码到Android studio中:
    如何导入源码,Android 源码工程里面有个README文档,简单的介绍了如何将源码导入到Android studio 或者Eclipse,文件路径:
    \android5.1\development\tools\idegen\README
    1)增加IDE Memory:打开/opt/android-studio/bin/studio64.exe.vmoptions(32位的打开studio.exe.vmoptions):将Xms得值改为748(非固定)。   
  1. -Xms748m  
  2.     -Xmx1280m  
  3.     -XX:MaxPermSize=350m  
  4.     -XX:ReservedCodeCacheSize=225m  

    2)编译源码,如果编译过了就不用编译了,在根目录下直接 make idegen,编译完成以后会在根目录下生成两个文件android.iml和android.ipr。android.iml是配置文件,配置android源码中那些模块会被加载到android studio。现在打开android studio-file-open,选择android.ipr,然后就是等它加载完吧。说实话等了好久,具体不知道用了多少时间,等了10几分钟,我就挂着睡大觉了,第二天起来看到加载完了,话说我电脑配置不戳啊,编译源码也就1个半小时,用Eclipse导入源码也没超过10分钟就完事了啊。弄到这里,其实我已经差不多放弃了使用android studio来debug 源码了,不过还是继续弄了弄,导入完整个源码显示是这样的,如图:
    Android-Ubuntu系统中使用Android studio并导入Android5.1源码
    跟Eclipe的完全不一样啊,也没有Eclipse直观,eclipse有保留原本的文件结构。
    最后试了下debug,通过emulator命令启动模拟器,结果整个电脑都卡的不要不要的(用真机可能会好些)。使用Eclipse没这么卡过,不光打开模拟器,还编译都没卡的这么厉害, 所以暂时我还是放弃使用Android studio来debug Android 源码,目前我还是使用Eclipse来debug源码,配置简单,使用起来也不会卡顿,打断点调试也方便。不过我特么喜欢Android studio打断点调试,变量的值显示的特么清晰。
    如果想用android studio来调试android工程源码,可以参考这篇文章:http://www.cnblogs.com/Lefter/p/4176991.html
    如果想用Eclipse来调试android工程源码,可以参考:Android-Windows下Eclipse导入源码调试    
    如果有哪位朋友使用Android studio调试Android工程源码,使用的顺风顺水,请指点一二啊,拜谢!


转载地址:http://blog.csdn.net/u013656135/article/details/50088485