Android Honeycomb加载键盘布局文件过程

2011年4月19日 kellyvivian 没有评论
Andriod启动过程中是如何正确加载.kl和.kcm的键盘布局文件?本文就从Honeycomb代码入手,详细介绍开机启动时键盘布局文件的加载过程。
Honeycom相较与之前的版本,加入了一个.idc后缀的配置文件,使在不修改系统代码的前提下,我们就可以使用自定义的键盘布局文件,系统中与键盘布局相关的目录为/system/usr/keychars,/system/usr/keylayout,/system/usr/idc

一、系统启动过程中SystemServer添加WindowManagerService
Slog.i(TAG, "Window Manager");
wm = WindowManagerService.main(context, power,
        factoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL);
ServiceManager.addService(Context.WINDOW_SERVICE, wm);

((ActivityManagerService)ServiceManager.getService("activity"))
        .setWindowManager(wm);

阅读全文…

分类: Android 标签:

C语言删除android里的git版本库

2011年4月14日 kellyvivian 没有评论
为了在windows上用Source Insight查看android源码,我们通常会把从linux下check out的代码拷贝一份至windows下。这样会带来一个问题,源码里面的.git版本库信息也同时被拷贝了一份,而在查看源码的时我们是不需要这些信息的,同时.git文件会占用你几个G的空间。所以与Swan一起写了这个删除.git文件的工具,一下是源代码,仅供参考:
#include <dirent.h>
#include <stdio.h>
#include <string.h>

#include <sys/stat.h>

阅读全文…

分类: 应用技术 标签:

Linux 用户和用户组详细解说

2011年4月8日 kellyvivian 没有评论

一、理解Linux的单用户多任务,多用户多任务概念
Linux 是一个多用户、多任务的操作系统;我们应该了解单用户多任务和多用户多任务的概念。

1、Linux 的单用户多任务

单用户多任务;比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;当然beinan这个用户,其它的人还能以远程登录过来,也能做其它的工作。

阅读全文…

分类: Linux 标签: ,

gcc生成静态库和动态库

2011年4月2日 kellyvivian 没有评论

gcc生成静态库和动态库
一、库文件简介
简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态库文件的扩展名是.a,共享库文件的扩展名是.so(在CYGWIN环境下,分别叫做.o和.dll)。共享库现在常常被叫做动态库,是由于很多人借用了MS Windows的DLL(Dynamic Linked Library)这个词。
(1)静态库
     静态是指每个用到该库的应用程序都拥有一份自己的库拷贝;应用程序运行的时候,即使将库删除也没有问题,因为应用程序自己已经有了自己的拷贝。
(2)共享库
     一个共享库有可能被多个所有应用程序共享。因此,对每个应用程序来说,即使不再使用某个共享库,也不应将其删除。此外,应用程序需要正确的环境变量设置(LD_LIBRARY_PATH),从而找到共享库所在的位置,否则,应用程序运行时会报告找不到这个库。

阅读全文…

分类: 编程技术 标签:

Linux gcc 编译过程

2011年4月2日 kellyvivian 没有评论

目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序.GCC不仅功能非常强大,结构也异常灵活.最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等.

Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

使用GCC编译程序时,编译过程可以被细分为四个阶段:
◆ 预处理(Pre-Processing)
◆ 编译(Compiling)
◆ 汇编(Assembling)
◆ 链接(Linking)

阅读全文…

分类: Linux 标签:

C实现遍历文件夹及删除其内容

2011年3月29日 kellyvivian 1 条评论
好久没更新博客,最近写了一段文件夹遍历的代码,实现删除文件夹下所有文件的功能
贴上来供大家参考
#include <dirent.h>
#include <stdio.h>
#include <string.h>

void rm_dir(char *path);
void usage();

int main(int argv, char *argc[]) {
if(argv != 2) usage();
rm_dir(argc[1]);
return 0;
}

阅读全文…

分类: 编程技术 标签: ,

android与ubuntu下的可执行文件互用

2011年2月16日 kellyvivian 没有评论

有时候有些命令需要用C代码写,编译成可执行程序放到Android系统里,结果不能运行,说找不到文件,而明明文件就在眼前。

有时候想运行一下系统编译出来的工具,结果说不能执行,Can’t execute,而明明就具有执行权限。

这些问题,在很多情况下可以如下解决,而且解决起来居然就这么简单。

对于自己写的C代码,如test.c

#include <stdio.h>

int main() {
printf(“OK”);
return 0;
}

阅读全文…

分类: Android 标签:

android Monkey工具参数意义

2011年2月11日 kellyvivian 没有评论

命令选项参考

下表中列出了Monkey命令行可用的全部选项。

–help
列出简单的用法。

-v
命令行的每一个-v将增加反馈信息的级别。Level 0(缺省值)除启动提示、测试完成和最终结果之外,提供较少信息。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

事件
-s <seed>
伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。

–throttle <milliseconds>
在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。
阅读全文…

分类: Android 标签:

Errors when building android-gingerbread for x86

2011年1月5日 kellyvivian 6 条评论

1、

issue “You are attempting to build on a 32-bit system”

My ubuntu-9.04 is 32-bits systemand android-gingerbread need 64-bits system to build itso I modified the build system in build to void this issue, if your system is 64-bits, you will not meet this issue.
build/core/main.mk
change
ifneq (64,$(findstring 64,$(build_arch)))
to
ifneq (i686,$(findstring i686,$(build_arch)))

external/clearsilver/cgi/Android.mk,
external/clearsilver/java-jni/Android.mk,
external/clearsilver/util/Android.mk,
external/clearsilver/cs/Android.mk
change
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
to
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32

阅读全文…

分类: Android 标签:

Using GCC’s C++ Compiler

2010年12月23日 kellyvivian 没有评论
本文讨论GNU编译器集合(GCC)中的C++编译器(g++)的典型用法,主要是指命令行选项的构造。GCC的C++编译器正常安装后,可以使用g++或c++命令执行。
GCC Option Refresher
本节回顾GCC的C编译器的基本使用方法。
g++编译器的选项可以是单字符,比如-o,也可以多字符,比如-ansi。所以你不可以把多个单字符选项合写到一起,这和许多其他GNU和UNIX下的程序不同。例如,多字符选项-pg不表示2个单字符选项-p -g。选项-pg表示在最终的2进制文件里生成额外的代码,用来输出GNU code profiler的信息gprof;而选项-p -g则表示在目标2进制文件里生成额外的代码,用来产生prof code profiler需要的信息(-p),并在目标里加入调试信息(-g)。
既然g++把多字符的选项进行了区分,你就可以随意安排各个选项的顺序了。比如:
g++ -pg -fno-strength-reduce -g myprog.c -o myprog
g++ myprog.c -o myprog -g -fno-strength-reduce -pg
是一样的。
分类: 应用技术 标签: , ,
本WordPress博客由爱写字提供技术支持