在Android的external目录中添加freg目录,并在其中添加如下两个文件
freg
├── Android.mk
└── freg.c
freg.c文件中代码
/*************************************************************************
* 文件: freg.c
* 作者: fantasy
* 邮箱: fantasy@gmail.com
* 创建时间: 2016年07月20日 星期三 22时58分58秒
*************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define FREG_DEVICE_NAME "/dev/freg"
int main(int argc, char **argv)
{
int fd = -1;
int val = 0;
fd = open(FREG_DEVICE_NAME, O_RDWR);
if (-1 == fd)
{
printf("Failed to open device %s.\n", FREG_DEVICE_NAME);
return -1;
}
printf("Read original val:\n");
read(fd, &val, sizeof(val));
printf("%d.\n\n", val);
val = 5;
printf("Write val %d to %s.\n\n", val, FREG_DEVICE_NAME);
write(fd, &val, sizeof(val));
printf("Read the val again:\n");
read(fd, &val, sizeof(val));
printf("%d.\n\n", val);
close(fd);
return 0;
}
Android.mk文件中
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := freg
LOCAL_SRC_FILES := $(call all-subdir-c-files)
include $(BUILD_EXECUTABLE)
通过如下命令进行单独模块进行编译
$ mmm ./external/freg
然后通过如下命令把新增的freg模块打包到system.img文件中
$ make snod
然后通过如下命令重新运行emulator
$ emulator -kernel kernel/goldfish/arch/arm/boot/zImage &
通过adb shell命令来运行新增的freg模块,如下
参考
《Android系统源代码情景分析》 第2.2节