
Android
文章平均质量分 66
span76
这个作者很懒,什么都没留下…
展开
-
Android MediaPlayer 类图和调用关系
Service side includes 3 components: Service, Service_client and Service_ImpementationService: it will be regiestered to ServiceManager, so Client can locate it, then call Service to create an Servic原创 2016-07-13 14:40:22 · 1582 阅读 · 0 评论 -
Android DNS 代码分析
Android DNS 代码都在bionic/libc/netbsd中(虽然netbsd 是个废弃的项目,但dns功能部分代码被 Android用上了)netbsd 代码晦涩难懂,只有一边写程序,一边打log验证照抄了一个简单程序, 在android 下面用 mmm 编译可以得到 py_getaddr 可能, 用adb 登陆到 devices 再到 system/bin 下去执原创 2014-11-25 11:32:14 · 11325 阅读 · 0 评论 -
实践编译 Firefox Fennec
编译 Firefox的官方link在 https://wiki.mozilla.org/Mobile/Fennec/Android, 我只是记录下实践过程而已Linux 下的 Firefox 是用gcc/g++ 基于glibc编译的编译Android 下的 Firefox 需要使用 Android SDK 和Android NDKAndroid 的 SDK/NDK to原创 2014-11-27 17:38:55 · 2513 阅读 · 3 评论 -
连抛2个异常,第一个是第二个的Cause
异常只能抛一个,捕捉到再抛一个,也只是一个异常看下面的代码,如果你认为执行不到(如果 if 条件满足)执行不到第2个 throwException 就错了 (Jeallybean code)libcore/luni/src/main/native/libcore_io_Posix.cpp#throwException 146 static void throwGaiExcep原创 2014-09-29 14:12:17 · 2845 阅读 · 0 评论 -
android Qemu GPS 模块简明分析
Android 的 gps module 是 gps.default.so 在system/lib/hw/ 目录上, 一般提供gps功能的手机应该实现这个module和真实gps硬件交互Qemu中gps就是要构造一个gps.default.so, 但这个so并不和真的硬件打交道,只是个模拟接口,其代码在sdk/emulator/gps/gps_qemu.c中Qemu 容器外部实原创 2014-10-23 16:32:30 · 2388 阅读 · 0 评论 -
理解 Android 的 ONE_SHOT_MAKEFILE
使用 mmm 编译的时候 Android 执行的 ONE_SHOT make, 其如何实现?mmm 的源代码在 build/envsetup.sh 中function mmm() 641 { 642 T=$(gettop) 643 if [ "$T" ]; then 644 local MAKEFILE= 64原创 2014-03-12 17:55:57 · 4348 阅读 · 0 评论 -
RenderScript on LLVM笔记
Android 为何引入 Render参考:https://events.linuxfoundation.org/slides/2011/lfcs/lfcs2011_llvm_liao.pdf原创 2014-08-19 10:25:45 · 2281 阅读 · 0 评论 -
Android Dalvikvm 内存管理理解
网上很多文件介绍了 jvm 内存管理的理论,但在 Dalvikvm 中,究竟是如何实现的。这几天猛看了 Dalvikvm 的源代码,说一下我的理解:在大层面上讲跟理论一样,jvm 把内存分成了一些区,关于各区的说明参见。http://blog.youkuaiyun.com/lengyuhong/article/details/5953544对于h原创 2014-06-27 15:15:57 · 7311 阅读 · 0 评论 -
获取 Android 模拟器的 MAC
启动模拟器, 用adb shell 登陆用 # ip link show1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: eth0: mtu 1500 qdisc pfifo_fast state UNKNOW原创 2014-06-06 16:33:41 · 5005 阅读 · 0 评论 -
Android 设置透明ImageButton
android:id="@+id/imageButton1" android:layout_width="244dp" android:layout_height="wrap_content" android:layout_weight="0.64" android:background="@null" an原创 2014-06-05 17:24:15 · 4354 阅读 · 0 评论 -
看 Unity3d 生成的 APK打包了什么
找了个Unity3d的sample, 让它生成了个简单的apk, 在android 4.0手机上跑了起来。Unity3d 打包的内容如下:在 assets\bin\Data\Managed 目录下有若干 dll这部分应该是用 Unity用c#编写的游戏引擎反编译classes.dex 看到Unity3d的若干适配类这部分,应该是把原创 2015-02-09 14:46:41 · 4516 阅读 · 1 评论 -
Droidplanner(tower) 系统分析
个人使用 DroidPlanner 手机地面站(简称DP),觉得很好用。也想了解其系统构成。就 git 下载了一个,在Android Studio 中编译成功。而后又看了下代码下面谈谈自己粗略理解:观测者模式广泛使用观测者模式(Listener), 这跟 model-view-controler 模式也相似, model数据变化,立马通知 view 更新显示。 而无原创 2016-07-12 10:25:30 · 5444 阅读 · 2 评论 -
android studio老办法编jni
过去一直用 eclipse, 现在google的官方支持都到 android studio, 所以必须用会它以前在双核i3 win7上运行AS, 慢得如同噩梦一般由来在 ubuntu i5上运行,而后勇xming来作为xserver, UI相应还是慢得同噩梦只好全在ubuntu上运行了比较奇怪的是 AS 经常要访问网络,如果被 GFW 挡住了,就没法使用了实验原创 2016-02-16 14:51:15 · 796 阅读 · 0 评论 -
android cts理清testpackage和文件名的对应关系
android cts test package 管理有点混乱比如 testpackage android.appwidget 的文件是 CtsAppWidgetTestCases.xml (大概有1/4的文件名和testpackage名字一致 ) 当你生成test plan 的plan 又要指明 testpackage 我写了段python脚本,找出这些原创 2016-04-26 15:50:51 · 2112 阅读 · 0 评论 -
追踪bionic的call method的方法
如果要追踪系统有没有调用bionic的方法,可以采用替换大法比如要查 prctl() 这个函数是否被调用就把 bionic/libc/arch-x86/syscalls/prctl.S 中的prctl 改名为 prctl1而后自己创建一个 bionic/pnp_prctl.cpp #include #include #include __BEGIN_DECLS原创 2016-03-09 16:17:49 · 754 阅读 · 0 评论 -
如何打log 检查 Android CTS failure
跑了CTS 就需要检查出问题的地方CTS提供一些Log但可能不够用,需要自己下该CTS src再增加代码, 如何做?1)根据出错信息,找到代码位置比如提示 com.android.cts.aadb.TestDeviceFuncTest#testSyncFiles_extStorageVariable 出错通过搜索找到文件是 cts/hostsidetests/aadb/sr原创 2016-02-17 16:23:07 · 2810 阅读 · 0 评论 -
把简单的老Android App项目转移到Android Studio
过去写了若干Android App, 都是在eclipse中写的现在要转移到Android StudioAndroid Studio 有个 import的功能,但是我就用自己编写简单跳棋程序,实验了一下失败了所以这里谈谈手动转移的建议1)建一个空的Android项目 注意包的名称和原项目名称完全一致2)把原项目的文件 copy过来cd src/cp原创 2016-02-16 16:42:18 · 1733 阅读 · 0 评论 -
android netd 笔记
只讨论netd 提供dns服务,从android 4.4 开始,android 提供基于socket 的dns服务(类似ubuntu的dnsmasq)源文件在 system/netd 下面当应用需要访问dns服务的时候,通过system/netd/client接口访问, libnetd_client中的函数被bionic动态load了(只是猜想,需要确认)netd作为单独进程启原创 2015-10-27 16:57:20 · 4642 阅读 · 0 评论 -
Android SystemUI中HOME key的处理
在Android系统的nav bar 中点击home按钮,就回到HOME,他是如何实现的在view的xml描述文件,指明了key_codeframeworks/base/packages/SystemUI/res/layout/navigation_bar.xml ... systemui:keyCode="3" ...>而后再基类,K原创 2015-09-14 17:30:31 · 3192 阅读 · 0 评论 -
Android Looper(cpp)用法举例
在使用loop 前,我是直接使用 epoll 的,后来发现 loop 封装了 epoll, 使用起来还要更方便一点。static int event_handle(int fd, int events, void* data){ printf("==== handle === \n"); return 1;}int mMsgFds[2];int main(void)原创 2015-08-10 18:41:27 · 2423 阅读 · 0 评论 -
验证 Android Tombstone 是否工作
参考 http://blog.youkuaiyun.com/span76/article/details/44225415, 编写一个必然crash的程序#include void f() { char *c=0; *c=0;}int main (void){ printf("hello world"); f(); return 0;}编译后复制到原创 2015-03-31 14:39:44 · 995 阅读 · 0 评论 -
最简单 NDK 例子
下面在 Ubuntu下 编译一个 c 语言 hello world 并在 android 手机或模拟器上运行进入程序位置cd ~/pnp5/jni有三个文件 main.c Android.mk, Application.mk, 内容:$ cat main.c #include int main (void){ printf("hello world原创 2015-03-12 18:40:47 · 2047 阅读 · 0 评论 -
搞懂 mismatch dep signature
在Android 开发中,经常遇到 mismatch dep signature 的问题最初以为是 apk 的签名,后来问了一位对Android 比较资深的同事,终于明白了其中原理编译系统会对 system/framework/下面的 jar 以及 system/app下面的apk 文件优化,生成 odex 文件由于jars, apks 有依赖关系,odex 文件会记住它所原创 2014-04-01 15:11:04 · 2610 阅读 · 0 评论 -
android 模拟器 3D 开发环境配置
使用HAXM 与 KVM 给emulator加速Android emulator 运行很慢,应该使用虚拟机加速, Windows 下 Android SDK Manager中可以安装 HAXM, 安装之后运行速度提升很多Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization T原创 2014-02-24 18:12:57 · 1765 阅读 · 0 评论 -
Android技巧: 如何读取 apk 中的 Video
把 video 放在 apk 包中, 可以方便程序的安装,有两种读取的方法从包中拆解文件再读取video 文件放在 Prj_Dir/assets 下 ( Prj_Dir/assets/myvideo.mp4) public class VideoActivity extends Activity { public final String TAG = "Video原创 2013-05-27 20:29:44 · 4822 阅读 · 0 评论 -
分析Cocos2d Android 项目的生成和运行
构建 Cocos2d 的 Android 开发和 build 环境貌似运行了几个批处理, 但实际遇到若干问题, 通过分析其内部机制才得以解决准备工作请大家参见: "Cocos2d-x学习之windows 7 android环境搭建" ( http://www.cnblogs.com/lhming/archive/2012/06/27/2566460.html )生成项目原创 2013-04-05 13:36:25 · 17017 阅读 · 0 评论 -
Android cocos2d 弹弓游戏 Catapult 源代码 完成
本文是 Android cocos2d 弹弓游戏 Catapult 源代码 的后续参考下面两篇文章, 完成了较为完整的弹弓游戏http://mssyy2010.blog.51cto.com/4595971/856611http://www.raywenderlich.com/4787/how-to-make-a-catapult-shooting-game-with-c原创 2013-05-06 13:27:55 · 1625 阅读 · 0 评论 -
Android REST 开发网络跳棋对战程序
一直对编写战棋类游戏感兴趣,去年花了些时间来试验把原来C#编写的跳棋改成Android联网对战跳棋,但没有成功,最近再次努力,居然有所成果。可能是去年想编一个兼顾单机玩和网络玩的游戏,过于抽象了,现在只考虑网络对战。效果人和电脑对战两人对战设计主要有两个构件客户端com.pnp.chess.android 是客户端在 Android原创 2013-05-07 18:06:02 · 2844 阅读 · 0 评论 -
理解 Cocos2D 如何绘制帧
绘制帧是游戏的关键环节, 要做事情有两件1) 处理游戏对象的状态变化 ( 位置移动, 碰撞等等 )2) 重新绘制这些对象绘制对象本文谈一下我对 Cocos2D 绘制帧实现的理解, 见下图 ( 注意, 这不是严格的UML, 只是为了便于理解绘制的 )drawScene 就是要求 Cocos2D 去绘制一帧, Schudler_update() 就是处理原创 2013-04-21 17:13:59 · 3257 阅读 · 0 评论 -
Cocos2D 如何做 Android 适配
我们知道Cocos2D 是跨平台的 ( Android, iOS, BlackBerry ), 因此它必须把自己适配到不同平台上, 这些适配包括:1) 屏幕显示2) 用户输入3) 进程主循环4) 资源文件 (图片,音乐)资源适配Android 的程序是 Apk, Apk 也是一个 Zip 文件. 处理资源文件有下列几步1) Cocos2dxHelper 初始化时会原创 2013-04-21 18:08:34 · 3381 阅读 · 0 评论 -
Android cocos2d 弹弓游戏 Catapult 源代码
根据下面两篇文章, 我一步步实践, 成功让程序在 Samsung Galaxy G2 上运行起来, 感谢这些贡献者http://www.raywenderlich.com/4756/how-to-make-a-catapult-shooting-game-with-cocos2d-and-box2d-part-1http://mssyy2010.blog.51cto.com/4595971原创 2013-04-26 18:02:25 · 4171 阅读 · 0 评论 -
Cocos2d Box2D 开发Android下的 Breakout 撞球游戏
网上有文章介绍如何构造 撞球游戏( http://www.raywenderlich.com/28602/intro-to-box2d-with-cocos2d-2-x-tutorial-bouncing-balls )但是它是基于 Apple, 我通过实践构造了 Android 下项目并成功编译运行现假设已经生成 Android 下的 Hello World 项目 (可以原创 2013-04-13 13:56:46 · 2922 阅读 · 3 评论 -
用 jdb 追踪 Android
You may have debug Android in eclipse, Have you ever used jdb tracing Android. Since Dalvikvm support jdwp, we can use jdb to debug the program. there are 2 waysAndroid as debug hostSteps1) up原创 2013-04-07 10:40:59 · 2685 阅读 · 0 评论 -
dalvik直接跑hello world并用jdb调试
像Android 这样的 Java, C/C++ 混合的应用,如何进行调试Native (C/C++) 调试比较简单,启动程序(source 加入 sleep ) , 再启动 gdb 而后把 attach pid 就可以了Java是否更简单,Eclipse 本来就通过 ddms 提供此功能但是如果没有adb, 没有ddms能否做调试现在我想对 dalvikvm 上运行的代原创 2013-04-07 10:55:44 · 3296 阅读 · 0 评论 -
Android 技巧:命令行运行 sqlite3
Android 使用 sqlite3 存储数据,所以我希望用如同 mysql 一样操作数据库使用 SQLiteOpenHelper 略显繁琐用 adb shell 登陆到 devices 打开db 文件/system/xbin/sqlite3 /data/data/com.android.providers.settings/databases/settings.db原创 2013-06-06 18:20:41 · 2793 阅读 · 0 评论 -
Android经验: proguard 阻碍 webview 正常工作
WebView 常识使用 Alert 提供消息我在页面经常用 Alert 提供消息, 但 Android 需要你编写 MyWebChromeClientmWebView.setWebChromeClient(new MyWebChromeClient()); final class MyWebChromeClient extends WebChromeClie原创 2013-06-13 11:00:44 · 7060 阅读 · 0 评论 -
理解 Android 2D/3D 图形架构
首先理解 Android 的 egl原创 2014-04-30 13:06:32 · 4949 阅读 · 1 评论 -
Android 模拟器 GPU ON
Android 模拟器 3D 加速架构运行 Android 模拟器的有个 GPU 开关,当打开 GPU 开关 3D 加速功能将转给 HOST的 GPU, 否则就是用 Soft 3D(CPU 执行 GPU 运行), 因此勾选此项可以让3D程序运行流畅。其设计如下:可以参见官方 sdk/emulator/opengl/DESIGN值得注意的是 Android 支持的 G原创 2014-02-14 18:14:08 · 10853 阅读 · 0 评论 -
QEMU, KVM, QEMU-KVM 和 Goldfish
qemuQEMU 是模拟器QEMU在 在 System 模式下,能进行指令级的模拟(就是说他虚拟了一个/多个CPU(包含内存管理器等),比如虚拟一个ARM CPU)可以模拟 IA-32 (x86)个人电脑,AMD64个人电脑,MIPS R4000,ARM v6, v7 (Cortex-A8, A9, A15),升阳的 SPARC sun3 与 PowerPC(PReP 及 Power原创 2014-02-13 16:59:45 · 6974 阅读 · 2 评论 -
static 和 visibility hidden 的区别
做 C 的人都知道如果所定义函数只在本文件中用,那么应该声明为 static但看 Android 看 bionic 的代码 bionic/libc/bionic/pthread.c 发现有这样的代码片段 1269 __LIBC_HIDDEN__ 1270 int pthread_mutex_unlock_impl(pthread_mutex_t *mutex) 1271 {原创 2014-01-17 14:43:42 · 3498 阅读 · 0 评论