在android系统上写C语言程序--开机启动该程序不进入安卓系统

文件系统的加载是从init.rc开始一步步的,创建文件系统所需的目录,还有给这些目录加权限,拷贝相关的程序,等待操作,最重要的,一个文件系统的运行需要加载这些服务才可以实现。至于怎么加载的,原理我就不多说了,说来话长,推荐大家可以去搜索init.rc,init.c这样的字眼就可以明白了。

mediatek/config/mt6582/init.rc


  1. on YYX  
    class_start core  
    service pppService /system/bin/PPPreboot   
       class core   
       user root  
       group root  
       oneshot 

  2. 我写的这个服务名字叫做pppService,服务对应需要执行的bin文件是PPPreboot,实现的就是平板一开机打印语句然后就重启,一直反复,这样就不会进入安卓文件系统了,也就看不到我们平常使用的安卓UI界面,而是黑压压的一篇,但是你在串口上可以看到调试信息输出,当然,如果你了解驱动应用编程,你可以在此时在屏幕上画点东西,做你自己的界面,其实就是写C或者C++的程序了,就是写linux的应用程序。
  3. 源码如下(位置:external/test/ppp.c)
  4.     #include <stdio.h>  
        #include <stdlib.h>  
        #include <android/log.h>  
        #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)  
        int main(void)  
        {  
            int i ;  
            freopen("/dev/ttyMT0", "a", stdout);setbuf(stdout, NULL);  
            freopen("/dev/ttyMT0", "a", stderr);setbuf(stderr, NULL);  
            LOGD("YYX---->reboot system!!!!!!--->201612.1\n");  
            system("reboot");  
            return 0 ;  
        }  

    对应的Android.mk
  5. LOCAL_PATH:=$(call my-dir)  
    include $(CLEAR_VARS)  
    LOCAL_MODULE_TAGS := eng  
    LOCAL_LDLIBS := -llog  
    LOCAL_SRC_FILES:= \  
            ppp.c  
          
    LOCAL_MODULE:= PPPreboot  
    include $(BUILD_EXECUTABLE)  
    #include $(BUILD_SHARED_LIBRARY) 
    6.system/core/init/init.c

    action_for_each_trigger("YYX", action_add_queue_tail);
  6. 编译 将对应的文件下载到安卓平板,开机你就会发现平板可以打印信息也可以不断的重启了。
    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值