android 7.1 修改源码添加可执行文件到system/bin目录

android 7.1 修改源码添加可执行文件到system/bin目录

  • 说明
  • 1. 源代码修改
    • 1.1 在源代码 external 文件夹下新建 ademo 文件夹
    • 1.2 添加 ademo.c 文件
    • 1.3 添加 Android.mk 文件
    • 1.4 添加 PRODUCT_PACKAGES
  • 2. 编译运行
    • 2.1 编译
    • 2.2 运行效果
  • 3. 设置开机自启服务

说明

硬件:ROC-RK3399-PC-Pro
固件:ROC-RK3399-PC-Pro_Industry7.1.2_HDMI
目录: firefly-rk3399-Industry 为工程根目录,所有编译、烧录命令均在改目录下执行
官方教程:https://wiki.t-firefly.com/zh_CN/ROC-RK3399-PC-Pro/
个人专栏:firefly ROC-RK3399-PC-Pro开发板专栏

1. 源代码修改

1.1 在源代码 external 文件夹下新建 ademo 文件夹

1.2 添加 ademo.c 文件

#include   // fopen(),fclose(), fprintf(), printf()
#include  // errno
#include  // strerror()

int main()
{
    FILE *log_fp = NULL;
    log_fp = fopen("/cache/recovery/ademo_log.txt", "w+");
    if (log_fp != NULL)
    {
        fprintf(log_fp, "open /cache/recovery/ademo_log.txt success\n");
        fprintf(log_fp, "----------------log by ademo\n");
        fclose(log_fp);
    }
    else
    {
        int errNum = errno; 
        printf("open /cache/recovery/ademo_log.txt failed, errno:%d, error:%s\n", errNum, strerror(errNum));
    }
    return 0;
}

1.3 添加 Android.mk 文件

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
        ademo.c

LOCAL_MODULE:= ademo
# LOCAL_32_BIT_ONLY := true

include $(BUILD_EXECUTABLE)

1.4 添加 PRODUCT_PACKAGES

修改整体编译脚本:firefly-rk3399-Industry/device/rockchip/rk3399/rk3399_roc_pc_plus.mk
在 PRODUCT_PACKAGES 选项中添加 ademo

PRODUCT_PACKAGES += \
    SoundRecorder \
    ahello \
    ademo
# 不添加 PRODUCT_PACKAGES 选项不会打包编译进/system/bin

如果要将一个其他文件打包到系统镜像中,则应该修改 PRODUCT_COPY_FILES 选项,如下倒数第二行添加了一个a.txt文件到system/bin目录下

PRODUCT_COPY_FILES += \
   device/rockchip/rk3399/rk3399_roc_pc/ddr_config.xml:system/etc/ddr_config.xml \
   device/rockchip/rk3399/rk3399_roc_pc/video_status:system/etc/video_status \
   device/rockchip/rk3399/rk3399_roc_pc/factoryboot.txt:system/etc/factoryboot.txt \
   device/rockchip/rk3399/rk3399_roc_pc_plus/factoryboot.sh:system/bin/factoryboot.sh \
   device/rockchip/rk3399/rk3399_roc_pc/myifconfigtest:system/bin/myifconfigtest \
   device/rockchip/rk3399/rk3399_roc_pc/a.txt:system/bin/a.txt \
   device/rockchip/common/resolution_white.xml:/system/usr/share/resolution_white.xml 

2. 编译运行

2.1 编译

此过程分三步,具体参考firefly ROC-RK3399-PC-Pro android7.1 编译打包详解

  • 整体编译:./FFTools/make.sh -d rk3399-roc-pc-plus -j8 -l rk3399_roc_pc_plus-userdebug
  • 打包固件:./FFTools/mkupdate/mkupdate.sh -l rk3399_roc_pc_plus-userdebug
  • 升级固件:sudo upgrade_tool uf the_path_of_image_file

2.2 运行效果

烧录成功后 adb shell 查看/system/bin目录下文件,可以看见 ademo 已经成功编译进系统了。
android 7.1 修改源码添加可执行文件到system/bin目录_第1张图片

  • ① ./demo执行提示打开日志文件失败,权限不够
  • ② su 获得 shell 下 root权限
  • ③ 查看日志文件,写入成功
  • 这里要注意,shell 下 root并不具有所有目录的写入权限,如果想获取所有目录下的读写权限,参考文章 firefly ROC-RK3399-PC-Pro开发板如何获取root权限及remount
    android 7.1 修改源码添加可执行文件到system/bin目录_第2张图片

3. 设置开机自启服务

如想将可执行文件设置成开机自启服务,可参考firefly ROC-RK3399-PC-Pro android7.1 修改init.rc 添加开机自启服务

你可能感兴趣的:(开发板,Android,android)