- 博客(50)
- 资源 (8)
- 收藏
- 关注
转载 强文推荐
Android Camera System(2):Camera Systemhttp://zhoujinjian.cc/2018/07/10/Android%20Camera%20System%EF%BC%882%EF%BC%89%EF%BC%9ACamera%20System[Camera%20%E7%B3%BB%E7%BB%9F]startPreview%E3%80%81takePictu...
2019-04-02 14:11:49 820
原创 android O版本 pms 强制编译流程
adb shell cmd package compile -m XXX 强制编译流程研究Pm.java private int runShellCommand(String serviceName, String[] args) { final HandlerThread handlerThread = new HandlerThread("results"); ...
2018-03-11 22:09:43 2307 1
转载 ART classloader双亲委托模式
ART的classloader,继续采用双亲委托模式ANDROID classloader:https://www.jianshu.com/p/a620e368389a双亲委派模型2016年01月02日 15:34:1712065说道双亲委派模型,就要从类加载器说起。。。。。。。。。。。Java虚拟机类加载过程是把Class类文件
2018-01-14 23:29:43 537
转载 Android Art分析2
dex2oat/system/bin/dex2oat 对应的源码文件位于/art/dex2oat/dex2oat.cc。main 函数代码如下:123451. int main(int argc, char** argv) { 2. return art::dex2oat(argc,
2017-12-31 00:01:59 699
转载 Android ART 分析
对Android ART的分析,主要包括ART Runtime启动过程以及dex2oat的分析。由于代码量较多,忽略了很多细节,所以分析过程会存在错误;ART Runtime采用单例模式,启动过程中参数解析实例化会对后续dex2oat的分析有所影响,但是我在分析过程中没有去特别关注每个参数,有兴趣的可以自行分析!另外ART Runtime还可以继续深入分析!BTW,附件中是分析中使用的
2017-12-31 00:01:31 2467
转载 ELF映像的装入(二)
http://www.longene.org/techdoc/0750005001224576724.html漫谈兼容内核之九:ELF映像的装入(二)毛德操 上一篇漫谈介绍了在通过execve()系统调用启动一个ELF格式的目标映像时发生于Linux内核中的活动。简而言之,内核根据映像头部所提供的信息把目标映像映射到(装入)当前进程用户空间的某个位置上;并且,
2017-11-13 23:58:18 594
转载 ELF映象的装入(一)
漫谈兼容内核之八:ELF映像的装入(一)毛德操 上一篇漫谈中介绍了Wine的二进制映像装入和启动,现在我们来看看ELF映像的装入和启动。一般而言,应用软件的编程不可能是“一竿子到底”、所有的代码都自己写的,程序员不可避免地、也许是不自觉地、都会使用一些现成的程序库。对于C语言的编程,至少C程序库是一定会用到的。从编译/连接和运行的角度看,应用程序和库程序的连接有两种方法。一种是
2017-11-13 23:57:28 618
转载 Sublime Text 3 配置java程序运行环境(可引入jar包、控制台输入)
流传很多配置运行java的文章,都没找到合适的,包括例子,终于东拼西凑的弄好了,给大家参考: 1、Sublime Text 3--->Preference--->Browse Packages,在打开的窗口中双击User文件夹,新建文件JavaC.sublime-build,用记事本打开,粘贴下面的代码并保存关闭:{ "cmd": ["javac", "-encoding
2017-01-08 15:53:39 5426 2
原创 使用ubuntu16.0416.04
16.04 无法上网1. VMware 设置: Edit -> Virtual Network Editor-> Vmnet0 : Bridged, Auto-bridging.2. 在关闭虚拟机的情况下设置。 Virtual Machine Settings -> Network Adapter -> Custom(VMnet0)3. 启动Ubuntu
2017-01-08 11:48:34 621
转载 sudo fastboot not found and no permissions
fastboot flash boot out/target/product/generic/boot.img不管用,提示原因查找:用fastboot命令查看设备提示无权限,如下:$ fastboot -l devicesno permissions fastboot usb:2-1.3于是知道是因为权限问题,是fastboot没有权限, 解
2016-11-01 19:53:12 2099
翻译 Stability of the C++ ABI: Evolution of a Programming Language
By Stephen Clamage, March 2011 (updated June 2016)As C++ evolved over the years, the Application Binary Interface (ABI) used by a compiler often needed changes to support new or evolving language
2016-10-18 15:51:29 501
翻译 so库二进制兼容性检测
http://stackoverflow.com/questions/1970296/how-to-test-binary-compatibility-automaticallyvABI Compliance Checker — a tool for checking backward API/ABI compatibility of a C/C++ lib
2016-10-18 14:41:57 1872
翻译 Tips for debugging on Linux
This page is for Chromium-specific debugging tips; learning how to run gdb is out of scope.ContentsSymbolized stack traceGDBBasic browser process debuggingAllowing attaching to foreign p
2016-10-13 11:12:46 949
转载 socket关闭: close()和shutdown()的差异
转:http://drmingdrmer.github.io/tech/programming/network/2015/07/28/close-shutdown.html对于一个tcp连接,在c语言里一般有2种方法可以将其关闭:close(sock_fd);或者shutdown(sock_fd, ...);多数情况下这2个方法的效果没有区别,可以互换使用。除了:c
2016-05-26 10:13:02 7669
原创 同步linphone
linphone, 牛逼的VOIP开源项目。不做过多说明。参看http://www.linphone.org/代码同步参看下表:Projectgitlinphone, including:oRTPmediastreamer2liblinphonelinphoneclinphone (gtk)git
2016-03-17 14:26:19 1768
原创 SPDY介绍
SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。功能定位将页面加载时间减
2016-02-15 16:08:10 985
原创 jar反编译神器
1. 下载软件jd-gui-0.3.5.linux.i686.tar.gzhttp://pan.baidu.com/s/1ntN7DaT2. 解压后,执行./jd-gui我的环境是ubuntu13.10可能需要libgtk-x11-2.0.so.0sudo apt-get install libgtk2.0-0:i386可能还需要libSM.s
2015-09-07 19:58:56 1057
转载 Android中的USB中的UsbAccessory和UsbDevice的区别
【背景】之前折腾android中的USB相关的东西。遇到两个东西:UsbAccessory和UsbDevice但是,不是完全明白其中区别。所以去找找区别。【解决过程】1.看了:android.hardware.usb | Android Developers的解释,有点概念了:UsbAccessory:一种外部硬件
2015-09-07 16:17:45 1617
转载 #ifndef 与 #program once 的区别 和注意点
来自:http://blog.csdn.net/jfkidear/article/details/7868662为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFIL
2015-08-27 11:03:08 4001
转载 Android 安全机制
1 Android 安全机制概述Android 是一个权限分离的系统 。 这是利用 Linux 已有的权限管理机制,通过为每一个 Application 分配不同的 uid 和 gid , 从而使得不同的 Application 之间的私有数据和访问( native 以及 java 层通过这种 sandbox 机制,都可以)达到隔离的目的 。 与此 同时, Android 还 在此基础上进行扩
2015-08-25 10:10:43 583
转载 android contentResolver与contentProvider如何关联在一起的
注:Application是一个完整的应用,比如某个apk,它对应一个Application,它里面可能包含n个Activity。涉及到的类froyo/frameworks/base/core/java/android/app/ApplicationContext.java froyo/frameworks/base/core/java/android/a
2015-08-20 10:16:04 929
转载 两种对 URL 的散列效果很好的函数
http://www.jos.org.cn/1000-9825/15/179.pdfhttp://wenku.baidu.com/link?url=irOpsGkPESNv76CWnpJXPLxJnguiudD7NRnM96hwkPu4MwS5AsCVrNe_o-Ihr7nw7aY1zhq268cHLsiE3QguF7tzQzLHIjp7X9n7Z81tnV_
2015-07-27 10:33:01 868
原创 android su源码
android su 通过源码编译出来的;文件位置: $android/system/extras/su/Android.mk: LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= su.cLOCAL_MODULE:= suLOCAL_FORCE_STATIC_EXECUTABL
2015-06-26 17:10:13 6111
原创 MakeFile边学边用-变量覆盖 override
变量覆盖 override作用是使 Makefile中定义的变量能够覆盖 make 命令参数中指定的变量语法:override = override := override += 下面通过一个例子体会 override 的作用:# Makefile内容 (没有用override)SRCS := programA.c programB
2015-04-28 16:53:18 3962
原创 chromium thirt_party skia编译shared_liberary
默认情况下,Android4.4 chromium webview使用的skia是系统的skia 'conditions': [ # In component mode (shared_lib), we build all of skia as a single DLL. # However, in the static mode, we need to build skia
2015-04-23 20:57:02 1327
翻译 Speed up your eclipse as a super fast IDE
Follow these steps to speed up your eclipse as a super fast IDE , it works for 32 & 64 bit version eclipse/jdk on my windows 7 x64.1.Disable antivirus software, or add your jdk & eclipse & workspace
2015-04-22 16:46:05 571
原创 linux映射磁盘或者文件夹到windows
方法有两种:笔者用的是Ubuntu13.10.1. 像windows一样共享 a. 点击要共享的文件夹或者磁盘,右键属性,会弹出一个框,点击share,然后根据选项,修改权限,over; b. 进入到window, cmd->\\*.*.*.* 如果网络正常,自然会 显示你刚才共享的文件夹, 然后右键,点击映射网络驱动器2. smba 老一点的
2015-04-21 15:30:29 16512
转载 dlopen 与dlsym
共享对象通过dlopen动态打开动态库的加载完成后,返回一个句柄,通过dlsym定位到你需要执行的函数指针然后可以在程序中使用dlopen -- open a dynamically linked librarydlsym -- get the address of a symbol in a dynamically linked library例子void*handle;
2014-03-14 16:45:05 802
原创 变态的libDispatch源码分析-全局队列异步延时任务处理过程-设置计时器与插入ds
1. 为ds设置计时器,并将其加入到计时任务队列中(1) .入口dispatch_source_set_timer(ds, when, 0, 0);when参数由用户提供,有下面几种情况:#define DISPATCH_TIME_NOW 0#define DISPATCH_TIME_FOREVER (~0ull)0: 表示立即执行;-1: 永久等待
2014-01-22 11:28:50 2972
原创 变态的libDispatch源码分析-全局队列异步延时任务处理过程-计时轮询
前文讲到了进入计时队列轮询,通过_dispatch_mgr_invoke进入到了下面这段代码:static dispatch_queue_t_dispatch_mgr_invoke(dispatch_queue_t dq){ static const struct timespec timeout_immediately = { 0, 0 }; struct timespec time
2014-01-22 10:40:32 5916
原创 变态的libDispatch源码分析-全局队列异步延时任务处理过程-原理与创建ds
延时任务的处理通常包括如下几个要素:a). 任务;b). 延时任务队列;c). 计时器,循环检测延时任务队列,若有任务到时则取出,然后执行;下面分析下GCD中关于libdispatch的延时任务处理方式。下面这部分代码是根据自身需求,封装的一个接口,基本能满足异步延时任务的处理:void _dispatch_delayed(dispatch_time_t when,
2014-01-20 20:49:31 4639
原创 变态的libDispatch结构分析-全局队列同步任务处理过程
GCD的处理过程,从全局队列的同步处理任务开始。先说明一下两个宏定义#if __GNUC__#define fastpath(x) ((typeof(x))__builtin_expect((long)(x), ~0l))#define slowpath(x) ((typeof(x))__builtin_expect((long)(x), 0l))# define __bu
2014-01-17 16:52:07 2065
原创 变态的libDispatch结构分析-semaphore
文件位置:libdispatch/dispatch/semaphore.hlibdispatch/src/semaphore.c针对Dispatch的semaphore定义了三个方法:/*! * @function dispatch_semaphore_create * * @abstract * Creates new counting semaphore w
2014-01-16 18:32:33 2730
原创 bionic semaphore学习
文件位置:bionic/libc/bionic/semaphore.c头文件位于Linux kernel中下面是头文件定义的接口:/* Initialize semaphore object SEM to VALUE. If PSHARED then share it with other processes. */extern int sem_init (sem_t
2014-01-16 17:06:21 1378
转载 UNIX/Linux程序设计教程之错误处理
UNIX的系统调用和大部分库函数在失败时会返回一特殊值报告出错,这个特殊值通常是–1。这种返回值仅告诉调用遇到了错误而已,为了让应用知道究竟发生了什么错误,系统调用和库函数同时还会在系统定义的变量errno中给出指明错误原因的错误码。变量errno是系统调用和库函数用来报告错误的一种标准方法。早期的UNIX和C将它实现为外部整型变量,其说明为:extern int errno;
2014-01-16 16:35:32 1290
原创 变态的libDispatch结构分析-原子操作方法
libDispatch 省去了队列锁,代替的是大量的原子操作:文件位置:libdispatch/src/hw_shims.h#if 0 && defined(__i386__) || defined(__x86_64__)#define dispatch_atomic_xchg(p, n) ({ typeof(*(p)) _r; asm("xchg %0, %1" : "=r" (_
2014-01-16 11:50:13 2464
原创 变态的libDispatch结构分析-全局队列
1. pthread_key_t在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时 应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效;但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操 作,最简单的办法就是使用同名而不同变量地址的线程相关数据结构。这
2014-01-15 19:25:08 3424
原创 变态的libDispatch结构分析-dispatch_object_s
基础类dispatch_object_s是一个透明联合体。透明联合类型削弱了C语言的类型检测机制。或者,换言之,它起到了类似强制类型转换的效果。在一定程度上打破了类型对我们的束缚,使数据以一种更底层的角度呈现在我们面前。不过这样也弱化了C语言对类型的检测,由此也可能带来一些很严重的错误。可以参看:http://nanjingabcdefg.is-programmer.com/p
2014-01-13 19:25:13 2160
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人