- 博客(31)
- 收藏
- 关注

原创 Android跨平台移植经验之谈
原创:M_r_D转载请注明出处!Part 1 元旦休息,闲来无事,又暂无睡意,写点东西捣鼓捣鼓吧!学的东西多了,就怕忘记以前的知识,所以还是记下来比较好。正所谓,好记性不如烂笔头!目前做的一个项目是移植android4.2,所以刚好可以把移植的经验跟大家分享分享,共同进步。尽管界面还没启动起来,但相信到那一天应该不远了。 标题自称为跨平台移植,那么究竟怎样跨平台
2012-12-31 03:58:36
12411
16
转载 Android log的开关
系统中的程序中输出log一般是到/dev/log/下的三个设备中,可以用logcat查看。对于init运行的程序则有两种方法查看到log信息:1.添加/system/bin/logwrapper,可以用logcat查看,例如 service /system/bin/logwrapper /system/bin/rild2.添加console,像sh一样直接输出到console
2014-04-09 10:35:16
3998
原创 android原生态音乐播放器中文歌曲乱码问题——没落的MIPS
基于android4.2,主要出现在mips架构,arm架构上没有此现象。猜测与MediaScanner有关,一直跟代码,跟啊跟,跟啊跟。跟到frameworks/base/media/jni/android_media_MediaScanner.cpp文件的handleStringTag函数,它的实现如下:119 virtual status_t handleStringTa
2014-03-26 15:33:04
2458
原创 Android 4.4 KitKat--Dalvik 2.0 (ART)
Google可能会在android4.2版本中推出ART(Android Runtime)来取代Dalvik虚拟机。根据Google android工程师的说法,ART的性能要比Dalvik好得多。不过,是否在KitKat版本中就搭配ART仍然不能确定。但是,依照google目前的计划来看,显然他们已经很少把精力投入到Dalvik的优化当中了,所以ART被推出的可能性非常大。这又将会是一项革新,暂
2013-11-11 11:59:18
2744
原创 TraceView issue
使用traceview时,遇到一个这样的问题:Exception in thread "main" java.lang.RuntimeException: Method exit (android/widget/AbsListView.startScrollIfNeeded (I)Z) does not match current method (java/lang/Math.abs (I
2013-07-30 15:25:21
6695
原创 修改android系统和watchdog的延时
适用于某些启动android需要很长时间或者系统资源紧缺的特定场合。1、修改watchdog和AMS的TIMEOUT时间# modified: services/java/com/android/server/Watchdog.java# modified: services/java/com/android/server/am/ActivityManagerS
2013-04-24 15:38:57
2390
原创 git创建和删除远程分支
1.创建本地分支git branch 分支名,例如:git branch tmp2.切换到本地分支git checkout 分支名,例如切换到分支tmp:git checkout tmp3.把本地分支推送到服务器,就变成了远程分支git push origin tmp4.删除远程分支在Git v1.7.0 之后,可以使用这种语法删除远程分支:
2013-04-24 15:15:23
1984
原创 关于Android JAR包的优化问题
1、把jar包优化成odex包:在编译脚本.mk里面定义"WITH_DEXPREOPT:=true"这样做,系统在第一次起来的速度比较快。开启了pre-dexopt的系统,jar有依赖性的优化,所以每次修改了java代码,都必须把out目录下的.odex文件清空,然后重编镜像。清空.odex文件可以进入out目录,执行:find -name "*.odex" | xargs rm
2013-04-12 14:48:01
6876
1
原创 Android系统服务
<!--body, div, table, thead, tbody, tfoot, tr, th, td, p {font-family:"Liberation Sans"; font-size:x-small}-->SystemServer中启动的服务服务类名称作用描述EntropyService提
2013-04-07 16:10:33
2761
转载 Android java调试又一好工具
定位framework中的问题,常常发现很多东西都是应用错误调用导致,通过打印堆栈能一定程度上提高定位的速度,但是调用栈遇到异步消息过程就无法很好的跟踪了,这个下面两个函数和一个log语句就非常有用了,如下:int pid = Binder.getCallingPid();int uid = Binder.getCallingUid();Log.e(TAG, "meth
2013-04-02 15:31:25
1835
原创 Android按键事件——上层与驱动的映射
原创:M_r_D转载请注明出处! 首先查看android对上层按键事件的定义,在头文件中:static const KeycodeLabel KEYCODES[] = { { "SOFT_LEFT", 1 }, { "SOFT_RIGHT", 2 }, { "HOME", 3 }, { "BACK", 4 }, { "CALL"
2013-03-18 13:14:39
6172
原创 Android4.2移植的debug之路——不明黑色光圈
Android 4.2的移植工作仍然进行中,目前遇到一个bug:在qemu上,android界面出来后,用鼠标点击屏幕时会有一个黑色的小光圈,这个光圈不会跟着鼠标移动,只有点击后再拖动它才会跟着动,如果我想启动某个应用程序,需要把该光圈拖到应用程序图标位置上,然后双击才能启动。上图: 一个让人措手不及的bug,从未见过,又找不到相关的资料,只能“始作俑者”了。这是驱动问题?还是a
2013-01-30 19:54:43
4613
3
转载 Android NDK安装及使用简介
Android NDK安装及使用简介什么是Android NDKAndroid 应用程序是运行在Dalvik虚拟机之上的。NDK可以让你用本地代码例如C/C++来实现应用程序的一部分。这样可以为应用程序的某些类在复用已有代码或提高性能方面提供便利。如果你的代码是用C/C++来实现的,你的应用程序仍然会被打包成.apk文件,并且仍然运行在虚拟机上。Android应用程序的模型是不变的
2013-01-16 16:40:49
1748
原创 Android系统开发小知识点
目的在于记录平时开发过程中遇到的一些知识点和小技巧!1、添加和获取系统属性(1)系统属性有两种:ADDITIONAL_BUILD_PROPERTIES 写入/system/build.prop文件ADDITIONAL_DEFAULT_PROPERTIES 写入default.prop文件(2)添加方法一般在build/core/main.mk中添加,以便在编译
2013-01-15 15:40:29
2317
转载 向Surface写位图数据的方法
向Surface写位图数据的方法Surface的Buffer准备好后,就可以向Buffer写位图数据,Surface的Buffer跟普通的图像数据一样,也是按一定格式组织的一根根的扫描线数据。下面的例子假设源和目的格式都是32位,并且大小不超标uint8_t *sbits;sbits = (uint8_t *)bitmap->getPixels();int
2012-12-28 10:19:51
1997
原创 悲催的调试ASTER与monkey的经验
刚工作不久,能力有限,经验也不足,志在工作中成长,与大家分享工作经验,有错误的地方请大家指出! 非常感谢! ASTER是台湾0xlab开发的一款开源的自动化测试工具,该工具运行在PC机上,与android设备上的monkey进行通讯,通讯方式使用socket。当然,ASTER能与android设备通讯的前提是adb能正常工作。当ASTER与设备连接上后,会用ddms把设备的屏幕截取
2012-12-27 16:52:47
2893
原创 Android init进程分析
<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->同事整理的,直接贴上来,sorry!一、Android Init.c执行流程Android中的内核启动后,kernel会启动第一个用户级别的进程:init,它是一个由内核启动的用户级进程,它的进程号是1,它以一个守护进程的方式运行,主要提供
2012-12-27 12:59:55
2330
原创 一个测试surfaceflinger的小程序
程序放在Android4.2的源码目录中能编译通过,也可以执行。本人所期待的结果是在android模拟器的屏幕上显示一个圆,但是实际上什么都没有显示!问题出在哪里?我把程序贴上!求大侠赐教!Android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)uses-permission android:name="android
2012-12-27 12:54:10
3825
1
转载 普通应用使用Surface的方法
Android的NDK提供了Surface类,可供应用向屏幕绘图,但使用这个类,有很多机关,如果不注意,代码就不会正常工作。下面是我们使用的时候遇到的问题与解决方法。1,在C++代码里要使用Surface类,必须在APK的工程文件Android.mk里增加权限uses-permission android:name="android.permission.ACCESS_SU
2012-12-27 12:46:36
2198
转载 欺骗编译器取得ISurface对象的方法
欺骗编译器取得ISurface对象的方法我们在使用Android NDK的Surface的时候,遇到无法得到ISurface对象的问题,描述如下:Surface类的定义如下:class Surface: public EGLNativeBase{public:...private:// can't be copied...friend
2012-12-27 12:44:49
1327
转载 android opensource webs
linaro:https://wiki.linaro.org/BenjaminGaignard/ioncm:https://github.com/cyanogenmodqualcom: https://www.codeaurora.org/Ti:http://omapzoom.org/http://www.omappedia.com/wiki/Source_Trees
2012-12-05 14:55:17
742
转载 Learning about Android Graphics Subsystem
By Bhanu ChetlapalliSoftware Engineer, MIPS TechnologiesGraphics Performance is the most important component in defining any user interface (UI) experience. The smoothness of the UI interactions a
2012-12-05 14:45:52
1478
原创 Shell编程与vim控制命令
<!--@page {margin:0.79in}h1 {margin-top:0.24in; margin-bottom:0.23in; line-height:200%; page-break-inside:avoid}h1.western {font-family:"Times New Roman",serif; font-size:22pt}h1
2012-11-30 17:26:53
1848
原创 浅谈Android Vold
一、首先看Vold的作用: Vold:Volume Daemon,用于管理和控制Android平台外部存储设备的后台程序,例如SD卡的挂载、卸载、格式化,以及拔插事件的检查等。 Vold的实现在JNI层,Java层与它打交道的模块是MountService。MountService一方面接收来自Vold的消息,例如SD卡的拔插事件;一方面向Vold发送控制命令,例如挂载和卸
2012-11-30 17:10:44
1144
原创 如何添加一个Android服务
简述主要步骤:1、编写一个AIDL文件,定义服务接口2、将AIDL文件添加到frameworks/base/Android.mk文件中编译,编译完成后会生成stub类3、编写真正工作的服务类,继承上面的stub类4、将自定义的服务注册到SystemServer中
2012-11-30 16:16:41
572
原创 关于Binder线程池
1、Binder线程池的枚举状态:enum{ BINDER_LOOPER_STATE_REGISTERD=0x01 BINDER_LOOPER_STATE_ENTERED=0x02 BINDER_LOOPER_STATE_EXITED=0x04 BINDER_LOOPER_STATE_INVALID=0x08 BINDER_LOOPER_STATE_WATTING
2012-11-30 15:53:47
1875
原创 浅谈Android消息处理机制
分析的源码基于2.3版本1、 Android应用程序在启动的时候,会在进程中加载ActivityThread类,并执行这个类的main函数,应用程序的消息循环就是在这个main函数里面实现的。2、ActivityThread类的main函数做了两件事情:一是在主线程中创建了一个ActivityTread实例,二是通过Looper类使主线程进入消息循环中。3、frameworks/b
2012-11-30 15:08:22
1131
原创 分析SurfaceFlinger过程中遇到的对象
<!--@page {margin:0.79in}pre {font-family:"Liberation Serif"}p {margin-bottom:0.08in}--> 注:本文有部分内容并非原创,感谢原来的作者以及红黑联盟的参考图! Surface 这一块确实有点复杂,对象非常多,所以想要了解清楚它们之间的关系并不是一件容易的事情。
2012-11-29 10:41:21
1379
原创 Linux 内核信号表
SIGHUP 终止进程 终端线路挂断SIGINT 终止进程 中断进程SIGQUIT 建立CORE文件终止进程,并且生成core文件SIGILL 建立CORE文件 非法指令SIGTRAP 建立CORE文件 跟踪自陷SIGBUS 建立CORE文件 总线错误SIGSEGV 建立CORE文件 段非法错误SIGFPE 建立C
2012-11-28 15:41:20
720
原创 分析SurfaceFlinger过程遇到的知识点
<!--@page {margin:0.79in}p {margin-bottom:0.08in}pre.cjk {font-family:"DejaVu Sans",monospace}-->使用的源码是2.3的!1、首先看Activity的启动过程: 无论通过Launcher来启动Activity,还是通过Activity内部调用star
2012-11-28 15:34:26
805
原创 如何编译一个精简的Android系统
本次试验使用的android源码是4.2,编译的架构是mini-mips。一、所做的工作1、修改build/target/product/mini.mk,去掉一些不必要的模块(例如Phone、DownloadManager等)2、修改SystemServer.java,屏蔽一些service,让系统能够启动起来(例如,Location Manager、Telephony R
2012-11-28 15:27:55
2650
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人