Ⅰ 拿到android 项目源码后,如何才能以最高效的速度看懂
1.显然Eclipse不是阅读Android源码的好工具,不流畅,搜索低效,继承性关系/调用关系都无法有效查看。推荐Source Insight,在这个工具帮助下,你才可以驾驭巨大数量的Android 源码,你可以从容在java,C++,C代码间遨游,你可以很快找到你需要的继承关系。
顺便,我们公司一直是Windows+linux+Samba的工作模式。
2.宏观上看,Android源码分为功能实现上的纵向,和功能拓展上的横向。在阅读源码时需要把握好着两个思路。
譬如你需要研究音频系统的实现原理,纵向:你需要从一个音乐的开始播放追踪,一路下来,你发现Jni调用解码库,共享内存的创建和使用,路由的切换,音频输入设备的开启,音频流的开始。
3.Android的功能模块绝大部分是C/S架构,你心里一定需要有这个层级关系,你需要思路清晰地找到Server的位置,它才是你需要攻破的城。然后你才能发现HAL和Kernel一层层地剥离。
我大概在三个月前阅读完Android UI系统的源码,这是Android最复杂的部分,没有之一。
我需要先找一个开头,和UI有直接关系的就是最常见的Activity了吧,我就从它开始解剖。
我从Activity的创建入手,寻找Activity真正的创建位置,setContentview这个方法很明显和UI有关,这两方面一结合,我发现了ViewRoot和WindowManager的身影,沿着WM和WMS我发现了Surface,以及draw的函数,它居然在Activity 创建时出现的DeCorView上画东西。借助Source Insight我总结了UI Java层的横向静态图。
完成这个静态UML,我觉得我可以开始功能实现上追踪了,这部分主要是C++的代码(这也是我坚定劝阻的放弃Eclipse的原因),我沿着draw函数,看到了各个层级的关系,SurfaceSession的控制和事务处理,SharedBuffer读写控制,彪悍的SurfaceFlinger主宰一切,OpenGL ES的神笔马良。FrameBuffer和FrameBufferDevice的图像输出。一气呵成的完成了。
Ⅱ 怎样着手研究 Android 源代码
一、源码里的工程需要导入所有的Android源码,不可以单独作为一个Android工程导入到Eclipse里。
二、使用git和repo下载Android的源代码,参考如下步骤
以下操作都是在Ubuntu10.04LTS下完成:
1)安装git
sudo apt-get install git-core
2)安装curl
sudo apt-get install git-core curl
3)安装Repo,为了方便直接下载repo到用户根目录中。通过curl下载repo
curl http://android.git.kernel.org/repo >~/repo
4)给repo可执行的权限
chmod a+x ~/repo
5)新建一个目录,然后进入该目录。通过repo将当前Android上所有源代码下载。
首先初始化本地,
~/repo init -u git://android.git.kernel.org/platform/manifest.git
看到repo initialized in /android的提示后,则证明初始化完毕。成功后会在~/android下生成.repo文件夹
执行
repo sync
则自动开始下载源代码。git支持断点续传,如果中断了下次可继续。
单独下载内核,用这个
git clone git://android.git.kernel.org/kernel/linux-2.6.git
如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
另一种情况是,我们只需要某一个project的代码,比如kernel/common,就不需要repo了,直接用Git即可。
git clone git://android.git.kernel.org/kernel/common.git
Ⅲ Android studio 如何为下载下来的开源源码,快速添加 log用来查看运行流程
在开发中,我们经常需要在Github上找一些开源项目用于自己的项目中,然而经常由于看不到其运行效果导致不断的“试错”,因此一般来说,本人在使用一个开源项目之前会将其下载并运行到手机上看效果。一方面可以准确判断出是否适合自己的项目,另一方面可以根据项目需求做一定的修改。
1、 找到项目地址,点击DownloadZIP,下载完成后,解压到本地磁盘。如图1所示
图5
6、将项目导入AS,下载项目其余需要的组件,编译安装,大功告成!
Ⅳ 如何阅读一个android apk的开源源码
要阅读开源源代码,你首先要知道这个开源软件是干什么的,不要直接一头裁到代码里去,知道代码是干什么的再去看它,明显要比看代码再猜它是干什么的轻松的多。然后开始看的时候注意找应用程序的主Activity,从OnCreate看起,多多留意类的成员变量及其作用。
Ⅳ 初学Android开发!求一个完整的详细的Android小程序源码参考!
媒体播放器源码Audio.java
package org.example.audio;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;
public class Audio extends Activity {
private MediaPlayer up, down, left, right, enter;
private MediaPlayer a, s, d, f;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Native rate is 44.1kHz 16 bit stereo, but
// to save space we just use MPEG-3 22kHz mono
up = MediaPlayer.create(this, R.raw.up);
down = MediaPlayer.create(this, R.raw.down);
left = MediaPlayer.create(this, R.raw.left);
right = MediaPlayer.create(this, R.raw.right);
enter = MediaPlayer.create(this, R.raw.enter);
a = MediaPlayer.create(this, R.raw.a);
s = MediaPlayer.create(this, R.raw.s);
d = MediaPlayer.create(this, R.raw.d);
f = MediaPlayer.create(this, R.raw.f);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
MediaPlayer mp;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
mp = up;
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
mp = down;
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
mp = left;
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
mp = right;
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
mp = enter;
break;
case KeyEvent.KEYCODE_A:
mp = a;
break;
case KeyEvent.KEYCODE_S:
mp = s;
break;
case KeyEvent.KEYCODE_D:
mp = d;
break;
case KeyEvent.KEYCODE_F:
mp = f;
break;
default:
return super.onKeyDown(keyCode, event);
}
mp.seekTo(0);
mp.start();
return true;
}
}
Ⅵ 想看一个开源的Android Studio 项目 , 新手看不懂 有没有大神教教我该怎么看
看开源的项目的,一定要看他的开发文档,有很多注释
Ⅶ android系统是开源去哪里下载源代码
他这不是编程原代码对外公开,而是系统外部接口对外公开,简单说,开源就好比是,英特尔生产一个CPU 然后告诉你所有的脚都是干吗用的,这个告诉你干吗用的就等于是安桌的开源了, 你知道CPU那些脚干吗用的后,然后再根据这些脚的功能生产主板,针对这些脚所生产出来的主板就好比那些为因安桌开源后,别人针对安桌所编写出来的软件了,
Ⅷ Android新手入门,求一个计算器的源代码,不要太复杂的就好。。。
#include "SDL2/SDL.h"
#include "SDL2/SDL_image.h"
#include "SDL2/SDL_ttf.h"
#include "unistd.h"
#define N 200
SDL_Window *win = NULL;
SDL_Renderer *ren = NULL;
SDL_Texture *tex[3] = { NULL };
SDL_Surface *sur[2] = { NULL };
SDL_Color color[2] = {
{255, 0, 0}
, {0, 255, 0}
};
SDL_Rect p[3];
SDL_Event e;
TTF_Font *font[3] = { NULL };
char *pic = "/picture/cbg.png",*ttf = "/font/DroidSans.ttf"; /*
所应用文件的相对路径*/
char way[2][100]; /*
存储路径 */
char token[N]; /* 存放表达式字符串的数组 */
char str[N]; /* 获取输入字符串数组 */
char result[N / 4]; /* 存放结果的数组 */
char K = 'k'; /* 用来判断触摸字符 */
int W, H; /* 屏幕宽高 */
int x, y, y_1, pst = -1; /* 用来获取触摸位置 */
int n = 0, m = 0, t = 0; /* 初始化 */
int computed = 0; /* 判断是否已经计算0表示没有计算 */
bool quit = false;
void init(); // 加载
void clear(); // 清理
Ⅸ 有没有适合Android初学者的APP源码推荐
如果是初学者的话,建议先看看sdk中的sample,这些项目都是google提供的研究价值蛮高的,先从java基础开始学起吧。
Ⅹ 有没有适合 Android 开发初学者的 App 源码推荐
我觉得与其看那些app的代码 倒不如自己尝试基于android源代码的不同组件增加或减少功能来学习android内部的代码 原因如下
1 源代码密度高 维护和使用的人最多 所以看下来的价值最大
2 看app代码可以看他的架构 看他的trick 但是真正的性能优化 还是要从源码入手
可能有些人说 直接看源代码难度高 其实不然 现在一个优秀的开源代码 基本都具备面对开源社区友好的优势 读起来并不一定比随便抓一个其他人写的代码要难
可以尝试循序渐进的方式 比如先尝试给app定制桌面 改ui 然后再到通知系统 线程 数据库等比较低层的 我觉得这个过程也会是一段非常有趣的代码之旅~