cm11下的recovery和recovery-cm

说明

应该是2016年之前的记录,之前没有写文档记录的习惯,都是随手记录的txt文件,所以没有图片、格式等。甚至现在看来有些地方逻辑不通(可能还因为年少轻狂,有些偏颇的话语),但是这些与现在的我不重要了,所以也不打算再复现、推理,重新编辑等,仅仅是在旧硬盘中发现,删除之前觉得可能还有点价值,记录下来吧。

1:应该是默认使用recovery。
界面和cm10.2的好像没什么差异,支持触摸,滑动触摸。
2:如果把recovery-cm改名recovery,删除原来的recovery编译完内核就停止了,没看到报错。测试编译boot发现:
device/xiaomi/aries/charger/charger.c:1358: error: undefined reference to ‘res_create_surface’
device/xiaomi/aries/charger/charger.c:1367: error: undefined reference to ‘res_create_surface’
collect2: error: ld returned 1 exit status
make: *** [/media/ubuntu/home/dong/cm/cm11.0/out/target/product/aries/obj/EXECUTABLES/charger_aries_intermediates/LINKED/charger_aries] 错误 1
make: *** 正在等待未完成的任务…

删除device的charger再编译就可以编译出recovery了,界面有些变化,没有recovery那么多的选项,不过可以滑动触摸和选项触摸选择,只是很混乱的感觉,只是想向下滚动,可是很可能就直接成了点击效果,很容易误操作。

3:在recovery中grep -rin res_create_surface .

./recovery/ui.c:546: int result = res_create_surface(BITMAPS[i].name, BITMAPS[i].surface);
./recovery/ui.c:558: int result = res_create_surface(filename, gProgressBarIndeterminate+i);
./recovery/ui.c:572: int result = res_create_surface(filename, gInstallationOverlay+i);
./recovery/minui/resources.c:44:int res_create_surface(const char* name, gr_surface* pSurface) {
./recovery/minui/minui.h:75:int res_create_surface(const char* name, gr_surface* pSurface);
./recovery/minui/minui.h:77: return res_create_surface(name, pSurface);

4:在charger的Android.mk中LOCAL_C_INCLUDES := bootable/recovery
charger.c引入了#include “minui/minui.h”

int main(int argc, char **argv)
{
int ret;
struct charger *charger = &charger_state;
int64_t now = curr_time_ms() - 1;
int fd;
int i;

list_init(&charger->supplies);

klog_init();
klog_set_level(CHARGER_KLOG_LEVEL);

dump_last_kmsg();

alarm_thread_create();

LOGI("--------------- STARTING CHARGER MODE ---------------\n");

gr_init();
gr_font_size(&char_width, &char_height);

ev_init(input_callback, charger);

fd = uevent_open_socket(64*1024, true);
if (fd >= 0) {
    fcntl(fd, F_SETFL, O_NONBLOCK);
    ev_add_fd(fd, uevent_callback, charger);
}
charger->uevent_fd = fd;
coldboot(charger, "/sys/class/power_supply", "add");

ret = res_create_surface("charger/battery_fail", &charger->surf_unknown);
if (ret < 0) {
    LOGE("Cannot load image\n");
    charger->surf_unknown = NULL;
}

for (i = 0; i < charger->batt_anim->num_frames; i++) {
    struct frame *frame = &charger->batt_anim->frames[i];

    ret = res_create_surface(frame->name, &frame->surface);
    if (ret < 0) {
        LOGE("Cannot load image %s\n", frame->name);
        /* TODO: free the already allocated surfaces... */
        charger->batt_anim->num_frames = 0;
        charger->batt_anim->num_cycles = 1;
        break;
    }
}

ev_sync_key_state(set_key_callback, charger);

set_backlight(false);
gr_fb_blank(true);

charger->next_screen_transition = now - 1;
charger->next_key_check = -1;
charger->next_pwr_check = -1;
reset_animation(charger->batt_anim);
kick_animation(charger->batt_anim);

event_loop(charger);

return 0;

}


对比两个recovery的minui.h和resources.c,把charger.c中修改
//ret = res_create_surface(“charger/battery_fail”, &charger->surf_unknown);
ret = res_create_display_surface(“charger/battery_fail”, &charger->surf_unknown);

//ret = res_create_surface(frame->name, &frame->surface);
ret = res_create_display_surface(frame->name, &frame->surface);


编译通过,不过充电无法显示图片,只有电量数字,不装电池时不断启动第一屏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值