android从sd卡启动(MTK)(工作内容)
2016-12-13 16:54
197 查看
看这篇文章之前可能会遇到关于SELINUX权限问题可以参考这篇文章 http://blog.csdn.net/morixinguan/article/details/53353427
还可能会遇到程序中自己的程序中printf()打印不能显示,这时可以先在自己的程序的main()中加入这条语句system(“reboot”);来确定自己的服务是否正确加入其中,为什么要用reboot因为reboot在系统服务中比较靠前,加这个成功的概率高些,确定系统每次运行到rebootzhe就重启后,再来解决printf()打印消息问题,这个是关于重新定向标准输入输出的问题,可以参考这篇文章
http://blog.csdn.net/morixinguan/article/details/53469818
文章的最下面讲了如何重新定向标准输入输出
(如果没有了其他问题开始进入正题了)
先将自己的需要启动的程序放在源码目录的/external/下(我的程序是runexec)在源码根目录下执行(可以将需要生成的文件的包加在源码下的build/target/product/xxx.mk下,这样编译源码的时候就一起编译了)
source build/envsetup.sh
lunch
20 (以eng版为例)
mmm external/runexec/
执行完后会在对应的目录下生成可执行文件(我的是runexec,具体看你的Android.mk文件中生成对应得可执行文件)
生成文件在/out/target/product/em_t8530_emmmc/system/bin/
在源码的
system/core/rootdir/init.rc中添加自己的服务
我的添加过程如下
on vtech
service CalibrateTest /system/bin/runexec /system/bin/gsensorCalibrate noexit ignoreerr
class core
oneshot
on property:sys.bnd.checkexec=0 //这个属性下的所有服务都将它的启动模式
//改为disabled
//这下面的所有服务就是开机自 android
//这个logo出现及其后面相关的服务
start nand //自己的服务放在这个on property之前
start servicemanager //就可以启动自己的服务并判断什么条件下
start vold //启动android自己的文件系统
start surfaceflinger
start zygote
start media
start sethdmimode
然后再init.rc中适当的位置(也就是自己需要启
a94e
动服务的位置)将自己的vtech加入,加入方式如下
trigger vtech
添加完这个之后还需要在自己的程序的main()函数中添加设置属性
#define SET_PROPERTY
#ifdef SET_PROPERTY
static void set_property(void)
{
LOGD("set sys.bnd.checkexec=0\n");
property_set("sys.bnd.checkexec", "0");
}
#endif
在main()函数中需要的地方调用这个函数,就是系统正常启动界面,不调用这个函数就可以启动自己的服务,服务下有自己的可执行程序
(系统的不同,加入方法不同)
还可能会遇到程序中自己的程序中printf()打印不能显示,这时可以先在自己的程序的main()中加入这条语句system(“reboot”);来确定自己的服务是否正确加入其中,为什么要用reboot因为reboot在系统服务中比较靠前,加这个成功的概率高些,确定系统每次运行到rebootzhe就重启后,再来解决printf()打印消息问题,这个是关于重新定向标准输入输出的问题,可以参考这篇文章
http://blog.csdn.net/morixinguan/article/details/53469818
文章的最下面讲了如何重新定向标准输入输出
(如果没有了其他问题开始进入正题了)
先将自己的需要启动的程序放在源码目录的/external/下(我的程序是runexec)在源码根目录下执行(可以将需要生成的文件的包加在源码下的build/target/product/xxx.mk下,这样编译源码的时候就一起编译了)
source build/envsetup.sh
lunch
20 (以eng版为例)
mmm external/runexec/
执行完后会在对应的目录下生成可执行文件(我的是runexec,具体看你的Android.mk文件中生成对应得可执行文件)
生成文件在/out/target/product/em_t8530_emmmc/system/bin/
在源码的
system/core/rootdir/init.rc中添加自己的服务
我的添加过程如下
on vtech
service CalibrateTest /system/bin/runexec /system/bin/gsensorCalibrate noexit ignoreerr
class core
oneshot
on property:sys.bnd.checkexec=0 //这个属性下的所有服务都将它的启动模式
//改为disabled
//这下面的所有服务就是开机自 android
//这个logo出现及其后面相关的服务
start nand //自己的服务放在这个on property之前
start servicemanager //就可以启动自己的服务并判断什么条件下
start vold //启动android自己的文件系统
start surfaceflinger
start zygote
start media
start sethdmimode
然后再init.rc中适当的位置(也就是自己需要启
a94e
动服务的位置)将自己的vtech加入,加入方式如下
trigger vtech
添加完这个之后还需要在自己的程序的main()函数中添加设置属性
#define SET_PROPERTY
#ifdef SET_PROPERTY
static void set_property(void)
{
LOGD("set sys.bnd.checkexec=0\n");
property_set("sys.bnd.checkexec", "0");
}
#endif
在main()函数中需要的地方调用这个函数,就是系统正常启动界面,不调用这个函数就可以启动自己的服务,服务下有自己的可执行程序
(系统的不同,加入方法不同)
相关文章推荐
- 【工作笔记】android TextView、EditText对部分内容设置颜色、字体、超链接、图片
- android系统移植emmc记录(1) --制作SD卡启动u-boot .
- MTK android 下载及启动过程
- MTK android 下载及启动过程
- MTK android 下载及启动过程
- android 读取sd卡文件的内容用TextView显示
- Android中模拟器启动中出现“emulator-arm.exe已停止工作”
- android不能删除sd卡或u盘内容权限问题
- 尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
- Android mtk sd卡调试
- android系统移植emmc记录(1) --制作SD卡启动u-boot
- mtk android sd卡调试
- 在Android应用程序中经过某个操作后启动短信程序,并填充你想要的电话号码和内容
- Android的四大组件之二--BroadcastReceiver(相关内容,开机启动Service)
- android系统移植emmc记录(1) --制作SD卡启动u-boot
- i.mx51开发板利用已有的镜像文件(SD卡启动)刷写Android
- 最近做的Android项目,和同事分开做的,所以需要写一些文档注释,说明自己的工作内容
- android 数据持久化——读写SD卡中的内容
- Android的四大组件之二--BroadcastReceiver(相关内容,开机启动Service)
- Android启动模式:singleTask的深究--其真正含义的解读之准备工作