文档章节

android studio 导入android 源码

g
 grasp_D
发布于 2016/07/26 10:52
字数 706
阅读 151
收藏 0

在使用Android Studio查看源码之前,你需要做下面几件事:

  • 下载Android Lollipop源码(当然不一定非要是Lollipop源码,其他的版本也是可以的)
  • 进行过一次完整编译(不编译是无法进行源码导入工作的)
    以上操作可以参考Google 官方教程 以确保万无一失(呵呵).上面的几个链接需要翻墙才可以访问,不过有兴趣看这篇文章的人,大部分应该都是知道VPN的.或者没有VPN不会翻墙的,速度去卖一个VPN,能花钱解决的事情,就不要花时间.

开始

  • 进入Android 源码根目录
  • 执行
    mmm development/tools/idegen/
    这行命令的意思是编译idegen这个项目,生成idegen.jar文件.生成成功后,会显示这个jar包的位置,并显示
    make completed successfully (43 seconds) ,如果编译失败了,后面会讲到这种情况(比较少见)
  • 执行
    sh ./development/tools/idegen/idegen.sh
    这行命令的意思是生成对应的文件:android.iws, android.ipr, android.iml .如果生成失败,后面也会讲到这种情况.
  • 生成对应的文件后,打开Android Studio,选择打开一个现有的Android Studio项目,选择Android源码的根目录,导入即可(起作用的是android.irp文件).在配置sdk版本之后就可以查看Android 源码了.
  • 已经完成了,没有下一步了.

问题

  • 执行第一个命令的时候编译不过,出现这种情况的原因有好几种:

    • Android 源码没有下载完全
    • 没有进行全部编译
    • 环境变量配置有问题解决方法依问题而定,网上对应的帖子很多,可以自己去找. 推荐这种问题还是去Google 和StackOverFlow 上去问.
  • 执行第二个命令的时候,碰到下面的问题:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Exception in thread \"main\" java.io.FileNotFoundException: ./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.java (Is a directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileReader.<init>(FileReader.java:72)
    at Configuration.parsePackageName(Configuration.java:204)
    at Configuration.rootOf(Configuration.java:180)
    at Configuration.traverse(Configuration.java:140)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.traverse(Configuration.java:167)
    at Configuration.<init>(Configuration.java:72)
    at Main.main(Main.java:37)

解决办法是将
./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.java
修改为:
./out/target/product/hammerhead/obj/GYP/shared_intermediates/res.j
即可.

后记

使用Android Studio看Android源码很爽,下面是他们的优缺点:

优点

  • 和Android 完美结合
  • 代码提示很全
  • 代码跳转很强
  • IDE比Eclipse好看(我说的是黑色主题)
  • 插件很强大(底层是IDEA你懂得)
  • 免费(SourceInsight负分,啥?你用的破解版? 当我没说)

缺点

  • 对C++代码的支持不是很好
  • 有一定的上手难度

本文转载自:http://androidperformance.com/2015/01/16/view-android-source-code-with-androidstudio.html

共有 人打赏支持
上一篇: appium请求过程
下一篇: ubuntu 循环登陆
g
粉丝 1
博文 126
码字总数 20266
作品 0
青岛
程序员
私信 提问
Google将专注于Android Studio,放弃Eclipse+ADT

上周Android的官方博客发表声明:Google将在年底结束对Eclipse+ADT的开发以及停止支持,把重心完全转移到Android Studio。对于很多使用Eclipse的Android开发者而言,他们必须接受一个全新的I...

yushulx
2015/07/07
0
0
安卓项目-从eclipse导入进android studio并解决依赖相关

【业务需求】 一个安卓项目,以前别人是在win的eclipse下开发的,现在在mac下,想导入进android studio里,但有很多依赖相关的不好折腾,需要解决: mac下的android studio能成功导入并运行 ...

滔哥
2017/04/11
7
0
在linux下开发android应用完全不会

现在我想在fedora下开发android应用,整个安卓系统的源码还没下载下来,但是安装了google的android studio 将windows上的project导入进来的时候遇到各种各样的问题,发现linux下的eclipse和w...

小安是屌丝
2013/12/10
932
8
Android Studio使用教程

今年的Google全球开发者大会虽然没有新的Android系统和设备,但是还是推出了一些不错的产品,Android Studio就是其中之一。这个基于Intellij IDEA开发的Android IDE让很多人眼前一亮,其实时...

枫影Xda
2013/05/21
0
2
Android Studio 1.0 正式版发布!

Android Studio 1.0 正式版发布! Android Studio 1.0 终于发布啦,作为一个 Android 团队官方的集成开发环境(IDE),建立在当下非常流行的 IntelliJ IDEA(社区版)Java IDE 的基础上。 去...

oschina
2014/12/09
18.8K
92

没有更多内容

加载失败,请刷新页面

加载更多

IDE 插件新版本发布,开发效率 “biu” 起来了

近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明。 本地应用一键部署到任何...

阿里云云栖社区
28分钟前
6
0
金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术...

问题终结者
56分钟前
3
0
Kubernetes Client-go Informer 源码分析

几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数,这样通过Watch 或者Get List 可以获取对应的Object,下面我们从源码分析角度来看一下Client go Informe...

阿里云官方博客
今天
4
0
传统IDC部署网站(三)

11. 重置密码 密钥和密码都支持远程登陆, 二选一 两个都可以登陆, 密钥相对于密码来说,相对安全一点 本地登陆无法是用密钥 修改密码 root 用户 passwd root 修改普通用户 passwd usernam...

miko0089
今天
6
0
bash特性

1.支持别名 alias 2.命令替换 $(COMMANS) 或者 `COMMAND` 3. bash支持的引号: `` :命令替换 "":弱引用,可以实现变量替换 '':强引用,不实现变量替换 4.文件名通配 globbing:(man 7 glo...

忙碌的小蜜蜂
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部