zoukankan      html  css  js  c++  java
  • R3300L Android相关的记录

    在寻找高版本Android固件的过程中遇到一个Android6.0的固件, 刷上去之后发现没有Root. 因为原发布者设置了收费的QQ群, 固件开机图上就是QQ群号, 满以为交了钱之后应该能有Root教程, 结果完全没有, 还被原发布者踢出群.

    于是只能自己Root, 顺便将碍眼的开机图片换掉.

    Root需要准备的材料

    TTL引线

    首先要将TTL连线引出, 这会涉及到焊板子

    TTL转USB线

    我用的是PL2302芯片的TTL转USB线, 这个在win7和ubuntu下都自带有驱动. 对应的软件Win7下建议用xshell或secureCRT, Ubuntu下建议使用GTKTerm

    软件

    su和daemonsu: 这个要从同一类型(芯片组), 同一内核版本的已经Root的电视盒子固件上复制. 因为现在R3300L盒子的不同安卓版本其内核都是3.14.29, 所以这两个文件是通用的.

    SuperSu 和 RootExplorer: 前者是必须的, 后者可选

    Root的过程

    Root其实就是要将不带uid限制的su和daemonsu(其实也是su)放到/system/xbin/ 下, 将其权限设为0755, 再运行 /system/xbin/daemonsu --auto-daemon & 命令让daemon运行在后台, 然后在Android界面上运行SuperSU, 让SuperSU完成最后的Root工作, 等SuperSU更新完文件提示重启, Root就完成了.

    实际的步骤要复杂一些

    • 首先要通过TTL访问命令行, 这个固件在TTL启动后, 直接是root shell, 所以这一步没什么问题
    • 然后将/system分区挂载为可写, 通过 mount -o rw,remount /system 命令实现
    • 将软件都复制到U盘, 连上盒子之后, 在TTL Shell命令行将su, daemonsu复制到 /system/xbin/ 下, 并修改权限 chmod 0755 su daemonsu
    • 在安卓界面上安装SuperSU, RootExplorer
    • 在TTL Shell命令行运行/system/xbin/daemonsu --auto-daemon &  然后ps检查是否有daemon的进程
    • 在安卓界面运行SuperSU开始Root, 如果前面步骤正确, 这一步SuperSU会提示是否更新文件, 按普通更新即可, 等十几秒后SuperSU会提示完成要重启
    • 重启后就不需要再运行daemonsu了, 直接运行SuperSU检查Root结果

    制作自带Root的固件

    制作已经Root的固件相对而言就更麻烦一点, 因为要把上面提到的要素都准备好, 并且固件当中可以改的只是 /system 下面的内容, 因为这些在 system分区下, 其他地方的内容是不方便修改的. 这边涉及到的工具主要有linux下的工具 https://github.com/natinusala/linux-amlogic-toolkit  和windows下的解包和打包工具 Amlogic CustomizationTool. 前者的打包存在bug, 所以只用于对system.img进行修改, 后者用于制作最外层的解包打包.

    用 linux-amlogic-toolkit 解开的 system 分区会挂载在 output/system/ 目录下, 因为里面都是owner为root的文件, 所以要用sudo进行修改, 将su和daemonsu复制进 xbin目录, 并修改权限为 0755, chown 为 root:2000 (这个根据目录里其他文件的属性进行修改), 然后将前一步中安装好的SuperSU, RootExplorer 的安装目录(在 /data/app) 复制过来, 放到这里的app目录下, 检查并确认权限和owner是否和其他的app一样. 这样文件都准备好了. 还缺一个随开机启动的 daemonsu.

    这时候要检查一下运行中的盒子, 看看根目录下的 init.rc 这个文件, 查找service 关键词, 能看到一系列开机启动的服务, 看看其中有没有这条 service ... /system/bin/install-recovery.sh, 这个路径不是固定的, 有些系统放在了 /system/etc/下, 确定位置后, 直接修改(或创建) install-recovery.sh 文件, 写入以下内容

    #!/system/bin/sh
    
    # Run SuperSU deamon
    /system/xbin/daemonsu --auto-daemon &
    

    .再chmod 0755 将文件属性改为可执行, 这样就都准备好了.

    接下来就是再通过 linux-amlogic-toolkit 的recreate 将system分区打包为 system.PARTITION, 然后通过 CustomizationTool 将固件解包(只需要解level1), 将system.PARTITION 替换成新的, 再打包, 一个自带Root的固件就完成了.

    在固件刷机完启动后, 在界面上运行SuperSU按提示更新文件, 待更新完文件重启后, 新系统就已经Root了.

    TWRP 3.0.2.0 Recovery

    可以使用S905X的TWRP作为S905L的recovery, 文件在 https://github.com/botfap/A95X-Linux-BuildEnv/tree/master/recovery

    相比系统自带的recovery, TWRP的命令行各种命令是相当完整的, 几乎等价于一个小linux系统. TWRP的使用方式有两种:

    • 格式化一个U盘或TF卡, 我使用的是一张2G的TF卡, 格式化为FAT, 将 twrp-s905x.img-v3.0.2 文件重命名为 recovery.img, 放到TF卡根目录下, 连上盒子, 用reboot update启动
    • 将 twrp-s905x.img-v3.0.2 重命名为 recovery.PARTITION, 直接打包在固件里, 这样系统进入recovery时, 就是TWRP recovery了.

    修改Logo和Bootanimation

    修改Logo, 直接在linux-amlogic-toolkit 解开的 /output/logo/ 目录中替换 bootup 文件就可以了. 图像文件必须是BMP格式的16bit或者24bit, 不支持8bit(这个试过, 肯定不行), 再recreate 后, 用生成的 logo.PARTITION去打包.

    修改bootanimiation, 在 /system/media 下, 替换 bootanimation.zip, 根据Google的格式说明 , 里面分两部分, 一部分是desc.txt, 一部分是包含顺序文件名的png文件的目录.

    desc.txt文件格式

    # Line1
    WIDTH HEIGHT FPS
    
        WIDTH: animation width (pixels)
        HEIGHT: animation height (pixels)
        FPS: frames per second, e.g. 60
    
    # Line 2 ~ N:
    TYPE COUNT PAUSE PATH [#RGBHEX [CLOCK1 [CLOCK2]]]
    
        TYPE: a single char indicating what type of animation segment this is:
            p -- this part will play unless interrupted by the end of the boot
            c -- this part will play to completion, no matter what
        COUNT: how many times to play the animation, or 0 to loop forever until boot is complete
        PAUSE: number of FRAMES to delay after this part ends
        PATH: directory in which to find the frames for this part (e.g. part0)
    

    注意目录里的图片不能太多, 最好控制在50张以内, FPS也不能太高, 最好在20以内, WIDTH和HEIGHT设置得不对会导致动画不显示. 另外bootanimation.zip的权限也要设置为0644, 否则系统无法读取, 就会显示默认的ANDROID动画字符.

    在Ubuntu下打zip包的命令如下, 用winrar这类工具打包的似乎系统不认.

    zip -0qry -i *.txt *.png *.wav @ ../bootanimation.zip *.txt part*
    

    Preinstallapps

    在/system/media 目录下还有一个 preinstallapps.tar 文件, 这个是用来在第一次启动时预装app的, 调用在/system/bin/preinstallapps.sh, 由某处 init.*触发. 如果要清理的话最好在rm之后touch一个同名空文件在那里, 避免启动时错误.

    TTL Shell

    在TTL Shell里可以通过 /system/etc/mkshrc 这个文件执行一些初始化命令, 功能等价于.profile 或者 .bashrc, 在里面绑一些alias.

    播放H.265 X265 10bit格式的视频

    在运行安卓6的R3300L上, 用最新的VLC 3.2.3, 小白播放器1.2.0都无法正常播放HEVC H.265/X265 10bit的视频, 具体表现为, 如果使用硬解则声音正常显示花屏, 如果使用软解则声音正常显示停滞. MX Player因为没下载到v7a的版本, 所以没法测试. 能完美播放的是SPMC-16.7.4, 下载地址为 https://github.com/koying/SPMC/releases/download/16.7.4-spmc/SPMC-16.7.4-spmc-94d913d-armeabi-v7a.apk 因为SPMC是Kodi的folk, 本身带了播放局域网SMB视频的能力, 所以可以完全取代VLC和小白播放器了.

  • 相关阅读:
    Redis源码分析(二十一)--- anet网络通信的封装
    leetcode 总结part1
    leetcode String to Integer (atoi)
    leetcode 165. Compare Version Numbers
    leetcode 189. Rotate Array
    leetcode 168. Excel Sheet Column Title
    leetcode 155. Min Stack
    leetcode 228. Summary Ranges
    leetcode 204. Count Primes
    leetcode 6. ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/milton/p/12052332.html
Copyright © 2011-2022 走看看