android 7.1 修改源码添加可执行文件到system/bin目录
说明
硬件: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 <stdio.h> // fopen(),fclose(), fprintf(), printf()
#include <errno.h> // errno
#include <string.h> // 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 已经成功编译进系统了。
- ① ./demo执行提示打开日志文件失败,权限不够
- ② su 获得 shell 下 root权限
- ③ 查看日志文件,写入成功
- 这里要注意,shell 下 root并不具有所有目录的写入权限,如果想获取所有目录下的读写权限,参考文章 firefly ROC-RK3399-PC-Pro开发板如何获取root权限及remount
3. 设置开机自启服务
如想将可执行文件设置成开机自启服务,可参考firefly ROC-RK3399-PC-Pro android7.1 修改init.rc 添加开机自启服务