文档章节

android studio 导入android 源码

g
 grasp_D
发布于 2016/07/26 10:52
字数 706
阅读 141
收藏 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

共有 人打赏支持
g
粉丝 1
博文 126
码字总数 20192
作品 0
青岛
程序员
Google将专注于Android Studio,放弃Eclipse+ADT

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

yushulx
2015/07/07
0
0
Android Studio使用教程

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

枫影Xda
2013/05/21
0
2
基于Android studio动态调试smali全过程

1 工具和环境 Android studio 用于集成idea插件和导入smali源码 idea插件 插件下载 或者在studio中搜索Smalidea进行插件下载(要翻墙) 在Android studio中通过idea插件来调试smali和在idea中...

gavinme
07/23
0
0
LeadTools Android 入门教学——运行第一个Android Demo

LeadTools 有很多Windows平台下的Demo,非常全面,但是目前开发手机应用的趋势也越来越明显,LeadTools也给大家提供了10个Android的Demo,这篇文章将会教你如何运行第一个Android Demo,我想...

葡萄城控件技术团队
2015/03/26
0
0
史上最详细的Android Studio系列教程五--Gradle命令详解与导入第三方包

Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看、编译并导入第三方开源项目的方法。 Sublime + Terminal编译并查看源码 首...

让代码飞一会
2015/07/05
0
1

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部