自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎关注微信公众号:DroidMind

技术干货,工具分享

  • 博客(464)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 第三方 ROM

LineageOS:原 CyanogenMod(CM),因原小组中几位成员不满其后的商业化不开源之路,以 Chainfire 为代表的几位成员遂脱离 CM 小组创立了现在的 LineageOS,其沿袭了 CM 稳定的特点,虽尚存少许 Bug,但瑕不掩瑜。国内有一个LineageOS 中文论坛 。魔趣ROM:国内开源项目,本地化非常好,很符合国内使用的情况。Resurrection Remix ...

2019-08-23 21:14:55 2977 1

原创 Android ROM定制与实战教程视频下载

Android ROM定制与实战教程下载地址为:https://pan.baidu.com/s/1kN0bw_PZoi8w9lEsCvKYvg提取码获取方式:扫描关注下面微信公众号,回复关键字: romvideo

2018-09-26 08:53:08 1401 2

原创 Android应用去广告方法盘点

应用广告方式1、小平台应用由于其没有自己的广告系统,它们一般会嵌入第三方广告平台的SDK来显示广告,所以只需要分析第三方平台的SDK就行。2、大平台应用由于其拥有自己的广告平台,需要对其单独进行分析。去广告的场景 1、游戏2、视频3、其他 广告类应用的特点 对于一些包含广告的应用,它首先会进行广告的拉取,如果拉取到广告就会正常显示,否则就会跳过广告,所以我们既可以从网络请求着手,也可以从网络请求代...

2018-03-13 15:34:51 10767

原创 如何修改Android的ro属性

一、Android ro属性概述在adb shell中输入getprop命令就可以获取到当前系统所有的属性内容:另外,如果我们系统获取到指定属性的属性值,我们也可以通过在adb shell中输入getprop+属性名来获取,设置属性也是一样的,可以通过setprop+属性名+新值来给指定的属性名称设置新的属性。在android中,属性一般是存放在属性文件中,系统启动的时候会对属性文件进行加载。存储...

2018-03-13 15:24:25 13870 2

原创 Dalvik虚拟机中Java native方法的调用过程

我们知道,Java native方法的注册形式有两种,一种是主动注册,一种是默认的被动注册,如果我们希望弄清楚java native方法的调用过程,我们首先就需要搞清楚两种注册方式的实现原理,下面我们先分别看看这两种注册方式。一、Java native方法的主动注册首先说说JNINativeMethod,它是一个结构体,表示了我们需要注册的本地方法,主要是将java方法跟native...

2018-02-06 19:55:26 2795

原创 Dalvik虚拟机中ClassLoader的创建过程

首先我们来看看下面代码我们知道,在Java中,类的加载是使用的委托机制,上面的代码就是打印ClassLoader的委托关系。它的运行结果如下:可以看到,我们应用的加载器是PathClassLoader,它的父加载器是BootClassLoader。下面我们通过代码来进行分析。一、bootstrap class loader的初始化过程system/framework/...

2018-02-01 10:44:14 499

原创 Dalvik虚拟机中Java类的加载过程

首先需要明白一点,Java类在使用之前必须先被加载。关于加载其实分为显式加载和隐式加载,显式加载就是我们通过自己来调用相应的加载方法来对特定的类进行加载,隐式加载就是在使用类的时候如果这个类没有被加载过可能就会触发其加载,这个可能是无感知的。下面对类的加载进行一下梳理,主要有以下情形来实现对类的加载。Class.forName()Class.forName()我们在Android...

2018-01-03 12:35:37 1065

原创 J2V8:在Java中运行JavaScript

说到J2V8之前,需要首先说说由Google开发的V8 JavaScript 引擎 , JavaScript引擎的作用就是对JavaScript代码进行解析并且运行。V8是一个比较独立的模块,它可以嵌入到我们自己的应用中,这样就可以在我们的应用中运行JavaScript代码了,V8 JavaScript 引擎 使用C++编写的,如果我们需要在Java中使用V8引擎,就需要首先使用JNI对其进行封装...

2017-12-27 18:33:59 9907 1

原创 在JNI中创建一个Java虚拟机实例

Java语言分为编译和运行两个阶段。 第一个阶段是使用javac命令完成的,第二阶段是使用java命令完成的。下面的目标就是写一个java程序,然后手动创建一个Java虚拟机实例来执行该java程序。创建一个Demo.java文件public class Demo { public static void greet(String name) { Syste...

2017-12-25 13:59:51 964

转载 Android FrameWork底层开发视频

=========================== 下面的链接失效了,这里重新给个 链接: https://pan.baidu.com/s/1iZ1SXS4Oy8drjaQOJ2kR4g 密码: 62ua============================= 1.如题,下面是百度云盘链接:https://pan.baidu.com/s/1boDbEIN另一个链接: 探索...

2017-12-15 10:53:26 3369 1

转载 android 常见的AOSP命令

在build/envsetup.sh定义了一些函数供我们直接使用Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:- lunch: lunch <product_name>-<build_variant>- tapas...

2017-12-14 14:16:25 1836

转载 Android系统定制和源码开发以及源码编译(附视频)

http://www.jianshu.com/p/46c63dfd5c89欢迎关注微信公众号:DroidMind 精品内容独家发布平台 呈现与博客不一样的技术干货

2017-12-14 14:03:15 1939

原创 Android 开发的技术方向

1、应用开发2、源码级开发分为系统应用开发,Framework开发,底层浏览器内核开发,音视频编码开发、虚拟机开发、底层驱动开发等系统ROM相关的开发3、安全、逆向,病毒分析欢迎关注微信公众号:DroidMind 精品内容独家发布平台 呈现与博客不一样的技术干货 ...

2017-12-13 17:11:39 2761 1

原创 Android java层binder解析 2

在SystemServer中会调用下面进行ActivityManagerService的注册 context = ActivityManagerService.main(factoryTest); ActivityManagerService.setSystemProcess();在main方法中会创建一个ActivityManagerService对象,对应的是mSelf变量下...

2017-12-12 16:48:39 439

原创 Android java层binder解析1

下面直接从ServiceManager的addService看起 ServiceManager.javapublic static void addService(String name, IBinder service) { try { getIServiceManager().addService(name, service, false); ...

2017-12-12 12:43:17 628

转载 Android SystemServer的创建过程

SystemServer进程是有Zygote fork出来的一个进程,下面来看看zygote进程的执行过程 frameworks/base/cmds/app_process/app_main.cppint main(int argc, char* const argv[]){ // zygote进程是由init进程通过fork而来 AppRuntime runti...

2017-12-11 17:02:47 654

转载 Android native层事件传递 1

InputManagerService在SystemServer中的ServerThread线程中启动 /frameworks/base/services/java/com/android/server/SystemServer.javaSystemServer.java->ServerThread.run()// 1、创建InputManagerService对象...

2017-12-08 16:53:01 479

转载 Android输入系统简介

1、当输入设备接入到android设备并且可用的时候,Linux内核会在/dev/input/下创建名为event0-n或者其他名称的输入节点,但输入设备不可用的时候,则会删除对应的节点。 2、在用户空间可以通过ioctl的方式从这些设备节点获取对应的输入设备的类型、厂商、描述等信息。 3、当用户对输入设备进行操作的时候,Linux内核会接收到相应的硬件中断,然后将中断加工成原始的输入事件写入...

2017-12-08 11:25:15 439

转载 Android Java层事件传递

android事件传递如图所示,我们下面重点关注的是上图中红色框内的处理流程。一、Activiy的事件响应接口Callback首先看Activity的实现,如下,Activity实现了一个特殊的接口:Window.Callback。public class Activity extends ContextThemeWrapper implements Lay...

2017-12-07 20:55:55 325

转载 andriod binder-ServiceManager守护进程

ServiceManager是一个守护进程。它的main()函数源码如下: frameworks/native/cmds/servicemanager/service_manager.cint main(int argc, char **argv){ struct binder_state *bs; void *svcmgr = BINDER_SERVICE_M...

2017-12-07 19:50:49 358

转载 binder解析

static int binder_open(struct inode *nodp, struct file *filp){ struct binder_proc *proc; . . . . . . proc = kzalloc(sizeof(*proc), GFP_KERNEL); get_task_struct(current); proc...

2017-12-06 20:59:04 335

转载 Android 音频相关

1、音频采集 Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。如果想简单地做一个录音机,录制成音频文件,则推荐使用 MediaRec...

2017-12-06 16:59:03 355

转载 Android音视频相关

1、Adndroid VoIP相关的开源应用有哪些 ?imsdroid,sipdroid,csipsimple,linphone,WebRTC 等等vitamio webRTC ffmpeg vlc ijkplayer2、音频算法处理的开源库有哪些 ?speex、ffmpeg,webrtc audio module(NS、VAD、AECM、AGC),等等3、Androi...

2017-12-06 16:34:09 346

转载 Android浏览器开源项目

Chrome:https://github.com/pwnallchromium_webview:https://github.com/mogoweb/chromium_webview365browser:https://github.com/mogoweb/365browserAndroidChromium:https://github.com/JackyAndroid/Androi...

2017-12-01 19:34:19 10319

原创 【Android进阶】Android Binder之ServiceManager注册服务解析1

下面将通过一个系列来对binder进行解析,虽然之前很多人都已经写过相关的博客,不过还是决定自己来写写,把整个思路理一理,增加自己对binder的认识,也同时希望对大家有所帮助。首先我们来看的就是ServiceManager注册服务的过程,通过MediaPlayerService的注册过程来讲解整个注册的流程,主要为了看看binder跨进程通信的具体过程。下面直接上源码。 /fra...

2017-11-30 20:15:15 720

原创 Android WindowManagerService解析(6)

前面说过,所有的UI的绘制最终调用的都是WindowManager的addView方法,另外从前面我们也可以知道,我们操作的是WindowManagerImpl对象的addView方法,下面我们先来看看addView方法。public final class WindowManagerImpl implements WindowManager { private final Win...

2017-11-28 16:47:18 515

原创 Android WindowManagerService解析(5)

强烈建议看这篇文章前把前面的几篇都看看,这样理解更深刻下面来看看Toast的显示过程一、Toast的创建public static Toast makeText(Context context, CharSequence text, int duration) { Toast result = new Toast(context); LayoutInflate...

2017-11-24 17:07:52 413

原创 Android WindowManagerService解析(4)

看篇文章之前,建议先看看前面几篇,这样理解会更深刻,下面我们来看看PopupWindow的显示过程一、PopupWindow的创建public PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { mContext = context; ...

2017-11-24 16:18:36 400

原创 Android WindowManagerService解析(3)

在前面 Android WindowManagerService解析(2)中,我们了解到了Activity背后的Window,下面我们来看看Dialog背后的Window一、Dialog的创建 Dialog.javaDialog(Context context, int theme, boolean createContextThemeWrapper) { // ...

2017-11-24 14:21:26 340

原创 Android WindowManagerService解析(2)

一、Activity背后的Window每个Activity都对应一个Window,Activity并不是UI真实的载体,真实载体是Activity中的Window。 Activity.javaprivate Window mWindow;final void attach(Context context, ActivityThread aThread, I...

2017-11-24 12:58:47 506

原创 Android WindowManagerService解析(1)

ContextImpl.java服务的注册函数private static void registerService(String serviceName, ServiceFetcher fetcher) { if (!(fetcher instanceof StaticServiceFetcher)) { fetcher.mContextCacheIn...

2017-11-23 17:25:01 901

原创 Android反射工具类ReflectUtil

public class ReflectUtil { public static Object getField(String clazzName, Object target, String name) throws Exception { return getField(Class.forName(clazzName), target, name); } ...

2017-11-22 17:05:47 2527

原创 Android Hook PackageManager

通过前面文章 Android中的Context ,我们可以知道,当我通过Application、Activity或者Service调用getPackageManager()的时候,实质调用的都是ContextImpl类中的getPackageManager方法。所以我们从ContextImpl类中的getPackageManager方法看起。 ContextImpl.java...

2017-11-22 17:02:10 4379 1

原创 Android中的Context

1、Application中的Contextprivate void handleBindApplication(AppBindData data) { data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); // 创建Context final ContextImpl appContext...

2017-11-13 17:21:16 346

原创 Android应用的ClassLoader创建过程

还是从Application的创建说起 /frameworks/base/core/java/android/app/ActivityThread.javaprivate void handleBindApplication(AppBindData data) { data.info = getPackageInfoNoCheck(data.appInfo, data.c...

2017-11-13 17:07:08 1063

原创 Android中的Resources解析

下面我们从Application的创建说起 /frameworks/base/core/java/android/app/ActivityThread.javaprivate void handleBindApplication(AppBindData data) { // 1.1 获取应用信息LoadedApk data.info = getPackageInf...

2017-11-13 16:53:31 858

原创 Android开源插件化框架汇总

按照时间先后排列AndroidDynamicLoader https://github.com/mmin18/AndroidDynamicLoaderPluginMgr https://github.com/houkx/android-pluginmgr/Dynamic-load-apk https://github.com/singwhatiwanna/dynamic-load...

2017-10-21 18:18:06 1592

原创 Android Dex文件数据结构解析

下面以Android4.4.2源码为例,来分析Dex文件的结构,这里分析的方式是将结构定义与实际的Hex字节码进行对照分析。Dex文件结构图 1、查看/dalvik/libdex/DexFile.h,它里面包含了所有结构体定义。 2、我们将一个dex文件使用010Editor打开,并且使用Dex Template进行查看,可以看到Hex字节码和结构的对应关系一、Dex文件整体结...

2017-09-07 19:42:26 1245

原创 Android代码生成与操作工具

Java源码生成工具google auto https://github.com/google/autojavapoet https://github.com/square/javapoetJava字节码操作工具ASM http://asm.ow2.orgJavassist https://github.com/jboss-javassist/javassistBy...

2017-09-04 18:17:00 1040

原创 android 隐藏API显式调用以及内部资源使用方法

一、android.jar包android.jar是我们Android应用开发包,它内部包含了我们在应用开发中需要使用的所有API调用。二、显式使用 Android 隐藏 API 和内部 API在进行Android应用开发的时候,一般会选择指定的编译版本,选择编译版本之后,我们的项目就会使用我们SDK目录中对应版本的android.jar(sdk/platforms/android-v...

2017-08-31 16:50:05 6937 1

方正飞腾排版快捷键

好东西, 一定要看,把所有的方正飞腾快捷键囊括在内,好好看,一定要下哦

2012-03-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除