前言
眾所周知如绸,國(guó)內(nèi)智能電視的各種廣告和安裝限制一直是令人頭疼的問(wèn)題黍匾。
或許對(duì)于新出的智能電視還可以接受,但是在一些老舊的智能電視上已經(jīng)會(huì)導(dǎo)致嚴(yán)重的卡頓問(wèn)題现喳。
家里有一臺(tái)2015年的創(chuàng)維G7200的電視凯傲,機(jī)芯為8H87犬辰。
這臺(tái)機(jī)器的配置在如今2023年已經(jīng)顯得有些捉襟見(jiàn)肘,但是不斷彈出的各類(lèi)廣告和開(kāi)機(jī)啟動(dòng)的系統(tǒng)應(yīng)用都進(jìn)一步拖慢了電視的運(yùn)行速度冰单。
G7200 8H87系列在2018年6月更新了最后一個(gè)酷開(kāi)6.0版本的系統(tǒng)后就再也沒(méi)有提供過(guò)系統(tǒng)更新忧风。
由于系統(tǒng)安裝包瞎改容易變磚,所以最好的解決方案就是直接對(duì)當(dāng)前的電視系統(tǒng)Root后再進(jìn)行優(yōu)化球凰。
縱觀常見(jiàn)的Root方案狮腿,電視上直接運(yùn)行Root軟件已經(jīng)被證實(shí)操作失敗,而電視也沒(méi)有方便的辦法刷boot.img呕诉。
于是缘厢,能否有方法直接獲取電視的Root權(quán)限?
觀前提示
本人只在創(chuàng)維G7200_8H87上操作成功甩挫,但是這個(gè)方案理論上可以推廣到更多舊的電視上贴硫。
這里會(huì)詳細(xì)介紹解決問(wèn)題的思路,給出需要的工具伊者,但是依然會(huì)涉及到很多系統(tǒng)知識(shí)英遭。
所有使用的工具都是開(kāi)源的,但是并不是一鍵解決的方案亦渗,需要使用命令行進(jìn)行操作挖诸。
不建議什么都不懂的人直接在本文的給出的操作提示下直接操作電視。
如果沒(méi)有辦法使用ADB或者命令窗口法精,抱歉到這里就可以結(jié)束了多律。
本文主要目的是知識(shí)分享,請(qǐng)尊重知識(shí)版權(quán)謝謝搂蜓。
對(duì)于任何基于本文操作導(dǎo)致出現(xiàn)任何問(wèn)題的情況狼荞,本人概不負(fù)責(zé)。
Root智能電視
尋找方案
對(duì)于智能電視帮碰,不想要拆機(jī)的人顯然沒(méi)法直接刷寫(xiě)指定的固件相味。
在部分智能電視上,Root軟件例如“King Root”或“360 Root”都不起效果殉挽,因?yàn)橄到y(tǒng)被修改的很徹底丰涉。
所以想要Root就只能另辟蹊徑利用一些公開(kāi)的系統(tǒng)方案。
對(duì)于智能電視特別是老舊的智能電視此再,這就是一個(gè)可以利用的方案昔搂。
以創(chuàng)維G7200_8H87為例,最新的版本是2018年6月發(fā)布的酷開(kāi)6.0输拇,Android 5.0 (21)摘符,arm64-v8a架構(gòu)(64位),Linux內(nèi)核3.10.61。
值得一提的是逛裤,這個(gè)系統(tǒng)下的SELinux是關(guān)閉狀態(tài)瘩绒。
尋找可用的方案除了可以直接搜索之外,還可以看官網(wǎng)公告
通過(guò)搜索和結(jié)合官網(wǎng)公告進(jìn)行篩選带族,最終確定了可用范圍從Linux內(nèi)核2.x到4.8.3的2016/5195方案锁荔。
從描述來(lái)看確實(shí)“3.10.61”符合條件,但是實(shí)際使用需要經(jīng)過(guò)測(cè)試蝙砌。
選擇它的另一個(gè)原因是XDA有人開(kāi)發(fā)并提供了預(yù)編譯的文件可以直接使用阳堕,這比起自己去研究怎么利用要便捷的多。
這里放一個(gè)Github的項(xiàng)目鏈接择克,如果要下載與編譯版本則查看Github release恬总。
只需要下載VIKIROOT-v0.1.1.zip
即可(只有64位的版本)。
使用這個(gè)工具有個(gè)好處肚邢,就是就算操作失敗壹堰,重啟設(shè)備后就會(huì)恢復(fù)原樣(但是不重啟再次執(zhí)行也無(wú)法繼續(xù)再次運(yùn)行)。
開(kāi)啟ADB
這里以使用ADB為例講解如何操作骡湖,如果有毅力在電視上運(yùn)行終端APP執(zhí)行命令當(dāng)然也是可以的贱纠。
創(chuàng)維G7200_8H87,保持連接家庭局域網(wǎng)的聯(lián)網(wǎng)狀態(tài)(就是連接到家里WIFI)响蕴。
打開(kāi)設(shè)置谆焊,本機(jī)信息,用遙控器按“上上下下换途,左右左右”懊渡,即可進(jìn)入工廠菜單。
工廠菜單中军拟,通用設(shè)置,ADB開(kāi)關(guān)誓禁,然后啟用即可懈息。
在設(shè)置,本機(jī)信息中摹恰,可以看到電視的IP地址(如果有其他方法找到電視的IP地址也行)辫继。
在電腦上運(yùn)行ADB客戶(hù)端需要下載工具,如果自己電腦上有俗慈,并且能用那就再好不過(guò)了姑宽。
這里給出官方的34.0.4版本的下載鏈接:
-
Windows
SHA1: d245eedc17259b15e799c312e9014f78aea3da21 -
MacOS
SHA1: ecc476b9801fcb6ea61605eedf60f85217964f09 -
Linux
SHA1: faaac1c05af0e3fa20baee6e8970d96fb53bfe58
開(kāi)啟任意一個(gè)命令窗口,在含有adb.exe的目錄下使用adb命令連接到電視闺阱。
# adb connect "電視IP"
# 部分電視需要指定端口號(hào)炮车,默認(rèn)端口5555
# 例如:
adb connect 192.168.1.100
# 出現(xiàn) connected to 192.168.1.100:5555 即連接成功
# 進(jìn)入電視的命令行界面 (這是電視系統(tǒng)的命令行了別搞錯(cuò))
adb shell
另外附加一些電視系統(tǒng)的命令行下的常用命令:
(所有命令前使用adb shell
開(kāi)頭都可以在自己電腦的命令行環(huán)境下使用)
# 查看Linux內(nèi)核版本
cat /proc/version
# 查看所有系統(tǒng)信息
getprop
# 查看系統(tǒng)版本名稱(chēng)
getprop ro.build.version.release
# 查看系統(tǒng)SDK版本
getprop ro.build.version.sdk
# 查看CPU支持的架構(gòu)
getprop ro.product.cpu.abilist
獲取臨時(shí)Root權(quán)限
確認(rèn)好電視的版本是支持的,就可以進(jìn)一步操作了。
提前解壓VIKIROOT-v0.1.1.zip
得到exploit
文件瘦穆。
# 再開(kāi)一個(gè)自己電腦的命令行窗口用于發(fā)送文件
# 請(qǐng)注意替換exploit文件位自己電腦上它的位置
# 命令含義:將exploit文件推送到/data/local/tmp目錄下
adb push exploit /data/local/tmp
回到剛才打開(kāi)的電視系統(tǒng)的命令行窗口:
# 電視的命令行界面
# 打開(kāi)/data/local/tmp目錄
cd /data/local/tmp
# 為exploit文件賦予執(zhí)行權(quán)限(否則不能運(yùn)行)
chmod +x exploit
# 執(zhí)行當(dāng)前目錄下的exploit
./exploit
# 如果一切順利纪隙,就可以看到如下提示:
# CVE-2016-5195 POC FOR ANDROID 6.0.1 MARSHMALLOW
# Usage:
# exploit port: use local terminal.
# exploit ip port: use remote terminal.
# 如果執(zhí)行失敗,說(shuō)明你的電視不是ARM架構(gòu)的64位系統(tǒng)扛或,請(qǐng)自行編譯或者尋找其它方案
這個(gè)幫助命令告訴我們有兩種方式啟動(dòng)绵咱,一種是本地命令窗口,另一種是遠(yuǎn)程命令窗口熙兔。
遠(yuǎn)程命令窗口需要使用nc
命令在自己電腦上連接悲伶,我嘗試了但是沒(méi)成功過(guò)。
所以住涉,不如使用本地命令窗口模式方便拢切。
但是,由于未知原因秆吵,直接使用本地命令窗口模式可能會(huì)出現(xiàn)一直卡等待的情況淮椰,所以如果出現(xiàn)這個(gè)情況可以先啟動(dòng)遠(yuǎn)程命令窗口等待自動(dòng)30秒關(guān)閉后,再啟動(dòng)本地命令窗口纳寂。
如果想要試試能不能本地命令窗口直接使用:
# 電視的命令行界面
# 在10800端口開(kāi)啟本地命令窗口
./exploit 10800
# 如果出現(xiàn):
# >>> Reverse shell target: 127.0.0.1:10800
# >>> Exploit process starts.
# >>> Inject: patch 1/2
# >>> Inject: patch 2/2
# >>> Please wake up you phone now.
# 的輸出提示后不動(dòng)了主穗,可以嘗試打開(kāi)或者關(guān)閉藍(lán)牙/打開(kāi)或者關(guān)閉鬧鐘(時(shí)鐘)應(yīng)用
# 如果依然卡在這里,那就只能重啟電視重新?lián)Q下面的方法繼續(xù)了
# 如果成功繼續(xù)執(zhí)行毙芜,詳見(jiàn)后面的教程
先啟動(dòng)遠(yuǎn)程命令窗口等待自動(dòng)30秒關(guān)閉后忽媒,再啟動(dòng)本地命令窗口的方法:
# 電視的命令行界面
# 在IP0.0.0.0與10800端口開(kāi)啟本地命令窗口
./exploit 0.0.0.0 10800
# >>> Reverse shell target: 0.0.0.0:10800
# >>> Exploit process starts.
# >>> Inject: patch 1/2
# >>> Inject: patch 2/2
# >>> Please wake up you phone now.
# >>> Restore process will start in 30s.
# >>> Restore process starts.
# >>> Remove: patch 2/2
# >>> Remove: patch 1/2
# >>> Removing .x file.
# 等待一次打補(bǔ)丁與反打補(bǔ)丁執(zhí)行完成
# 在10800端口開(kāi)啟本地命令窗口
./exploit 10800
# 如果出現(xiàn):
# >>> Reverse shell target: 127.0.0.1:10800
# >>> Exploit process starts.
# >>> Inject: patch 1/2
# >>> Inject: patch 2/2
# >>> Please wake up you phone now.
# >>> Waiting for reverse connect shell.
# >>> Enjoy!
# ====================TERMINAL====================
# 就說(shuō)明一切順利,完成了打補(bǔ)丁
# 此時(shí)不要退出這個(gè)窗口或者程序腋粥,因?yàn)榇蜓a(bǔ)丁得到的權(quán)限只在目前本次啟動(dòng)的命令下時(shí)有用
# 在這里輸入的任何命令都是作為臨時(shí)的Root權(quán)限執(zhí)行的
# 需要注意的是晦雨,這個(gè)窗口無(wú)法使用左右上下的按鍵,也無(wú)法粘貼文本隘冲,只能輸入闹瞧,刪除和回車(chē)。
# 查看可用的命令所在位置 $PATH
echo $PATH
# 本人的機(jī)器返回的結(jié)果為 /usr/bin:/bin 意思就是/system/bin與/system/xbin的命令必須指定路徑才能執(zhí)行
# 查看當(dāng)前用戶(hù)ID
/system/bin/id
# 如果返回 uid=0(root) gid=0(root) 說(shuō)明當(dāng)前為root賬戶(hù)
如果想要修改系統(tǒng)文件展辞,則需要掛載分區(qū)為可讀寫(xiě)奥邮,以下命令按需求使用:
# 掛載根目錄為可讀寫(xiě)
/system/bin/mount -o remount /
# 掛載/system分區(qū)為可讀寫(xiě)
/system/bin/mount -o remount /system
在這個(gè)情況下可以執(zhí)行任何想要的操作了,但是這是一個(gè)臨時(shí)的Root權(quán)限并且啟動(dòng)的操作很復(fù)雜罗珍。
另外洽腺,每次執(zhí)行命令無(wú)法粘貼,修改覆旱,必須指定路徑都非常繁瑣蘸朋。
因此,我們需要將其變?yōu)橛谰玫腞oot權(quán)限扣唱,即加入su
命令藕坯。
獲取永久Root權(quán)限
就本人而言团南,并沒(méi)有在電視上使用SuperSU等Root管理軟件的需求。
因?yàn)榕f的智能電視本來(lái)空間就小堕担,卸載不用的系統(tǒng)軟件后也禁不起Magisk或者Exposed的折騰了已慢。
本人希望把電視清理干凈后就基本用不到Root權(quán)限了,知識(shí)作為一種應(yīng)急需求霹购。
所以佑惠,本人使用了一種不使用SuperSU等Root管理軟件,直接使用su
命令的方案齐疙。
首先膜楷,我們需要從SuperSU的官網(wǎng)下載預(yù)編譯的su
命令(如果你的電視系統(tǒng)不支持運(yùn)行這個(gè)su
命令,就需要去尋找其他可用的了)贞奋。
點(diǎn)擊這個(gè)鏈接可以跳轉(zhuǎn)到下載頁(yè)面赌厅,下載Recovery V2.82 Flashable.zip。
解壓到本地轿塔,根據(jù)CPU架構(gòu)選擇合適的su
文件(G7200_8H87是arm64架構(gòu))特愿。
# 在自己電腦的命令行窗口發(fā)送文件
# 請(qǐng)注意替換su文件位自己電腦上它的位置
# 命令含義:將su文件推送到/data/local/tmp目錄下
# 注意,adb依然沒(méi)有也不會(huì)有root權(quán)限(后面會(huì)說(shuō)明),所以只能把文件發(fā)送到這個(gè)臨時(shí)目錄中
adb push su /data/local/tmp
# 打開(kāi)剛才的電視的命令行界面(獲得臨時(shí)Root權(quán)限的窗口)
# 掛載/system分區(qū)為可讀寫(xiě)
/system/bin/mount -o remount /system
# 先把exploit文件自己復(fù)制到系統(tǒng)文件夾勾缭,方便以后使用
/system/bin/cp /data/local/tmp/exploit /system/xbin/exploit
# 然后把su文件復(fù)制到系統(tǒng)文件夾
/system/bin/cp /data/local/tmp/su /system/xbin/su
# 使用命令查看其他文件的權(quán)限和擁有者信息
/system/bin/ls -l /system/bin
# 給兩個(gè)文件設(shè)置合適的權(quán)限
/system/bin/chmod 755 /system/xbin/exploit
/system/bin/chmod 755 /system/xbin/su
# 給兩個(gè)文件設(shè)置合適的擁有者
/system/bin/chown root:shell /system/xbin/exploit
/system/bin/chown root:shell /system/xbin/su
# 此時(shí)揍障,su命令就可以嘗試使用了,如果輸出一些幫助信息就是執(zhí)行成功
/system/xbin/su
# 但是俩由,此時(shí)su命令還沒(méi)有設(shè)置為系統(tǒng)守護(hù)進(jìn)程毒嫡,所以su命令是無(wú)法在命令行中正常使用切換權(quán)限的
# 我們可以通過(guò)以下命令在Root權(quán)限下設(shè)置為系統(tǒng)守護(hù)進(jìn)程
# 這樣只要電視沒(méi)重啟,打開(kāi)一個(gè)新的命令窗口幻梯,使用adb shell進(jìn)入電視命令行界面兜畸,就能正常使用su命令切換為root賬戶(hù)
/system/xbin/su -ad &
# 如果想要開(kāi)機(jī)啟動(dòng)的時(shí)候就能夠自動(dòng)設(shè)置為系統(tǒng)守護(hù)進(jìn)程
# 就需要在系統(tǒng)開(kāi)機(jī)就能夠執(zhí)行的腳本上動(dòng)手腳
# 多數(shù)系統(tǒng)中/system/bin/install-recovery.sh文件和/system/etc/install-recovery.sh文件都是自動(dòng)開(kāi)機(jī)最高權(quán)限執(zhí)行的腳本
# 如果你的電視不是G7200_8H87并且想要確認(rèn)一下是不是自動(dòng)開(kāi)機(jī)執(zhí)行的腳本,可以使用如下命令查看
/system/bin/cat /init.rc
# 如果發(fā)現(xiàn)存在 service flash_recovery /system/bin/install-recovery.sh 的句子碘梢,就說(shuō)明這是一個(gè)自動(dòng)開(kāi)機(jī)執(zhí)行的腳本
# 如果不存在咬摇,則可以尋找其他的方案,或者先試一試/system/bin/install-recovery.sh文件和/system/etc/install-recovery.sh文件
# 此處以/system/bin/install-recovery.sh文件為例
# 查看是否存在/system/bin/install-recovery.sh文件
/system/bin/cat /system/bin/install-recovery.sh
# 如果返回No such file or directory則不存在
# 如果/system/bin/install-recovery.sh文件不存在痘系,則執(zhí)行
# 若存在菲嘴,則忽略這句命令
echo "#!/system/bin/sh" >> /system/bin/install-recovery.sh
# 寫(xiě)入一個(gè)換行,避免出現(xiàn)問(wèn)題
echo "" >> /system/bin/install-recovery.sh
# 寫(xiě)入要執(zhí)行的命令
echo "/system/xbin/su -ad &" >> /system/bin/install-recovery.sh
# 再次查看/system/bin/install-recovery.sh文件中的內(nèi)容
# 此時(shí)文件末尾應(yīng)該就是剛才寫(xiě)入的內(nèi)容了
/system/bin/cat /system/bin/install-recovery.sh
# 如果/system/bin/install-recovery.sh文件不存在汰翠,則需要手動(dòng)設(shè)定權(quán)限和擁有者
/system/bin/chmod 755 /system/bin/install-recovery.sh
/system/bin/chown root:shell /system/bin/install-recovery.sh
至此,你的電視就已經(jīng)完美的獲得了永久的Root權(quán)限昭雌,可以重啟嘗試一下了复唤。
為了避免其它應(yīng)用直接使用這個(gè)su命令,我們還可以將/system/bin/install-recovery.sh
文件改名字避免開(kāi)機(jī)執(zhí)行烛卧。
只在需要的使用通過(guò)exploit
將文件名改回來(lái)佛纫,然后重啟后正常使用su
命令妓局。
注意:改名字僅限/system/bin/install-recovery.sh
文件一開(kāi)始不存在的情況,若是存在就最好只是把開(kāi)機(jī)執(zhí)行的命令注解了呈宇。
雖然老舊的系統(tǒng)存在如此多的問(wèn)題好爬,但是能避免直接利用最高權(quán)限的應(yīng)用也是好的。
使用Root權(quán)限
完成以上的步驟甥啄,重啟電視存炮,然后在本機(jī)的命令行窗口像之前一樣連接電視:
# 連接電視IP的ADB
adb connect 192.168.1.100
# 打開(kāi)電視的命令行界面
adb shell
# 執(zhí)行root用戶(hù)切換
su
# 默認(rèn)用戶(hù)前綴一般是 shell@XXXXXX:/ $
# root用戶(hù)前綴一般是 root@XXXXXX:/ #
# 如果看到切換為root用戶(hù),并且前綴中以#結(jié)尾蜈漓,那就要恭喜你成功獲取root權(quán)限了
# 掛載/system分區(qū)為可讀寫(xiě)
# 然后愉快的精簡(jiǎn)系統(tǒng)吧
mount -o remount /system
關(guān)于ADB Root權(quán)限
有一些人會(huì)奇怪穆桂,為什么有Root權(quán)限了,adb依然無(wú)法直接寫(xiě)入系統(tǒng)文件融虽。
這是因?yàn)閍db默認(rèn)使用的就是最普通的用戶(hù)權(quán)限而不是root用戶(hù)享完,沒(méi)有寫(xiě)入系統(tǒng)文件的權(quán)限。
雖然有adb root命令可以設(shè)置為使用root用戶(hù)有额,但這個(gè)僅在debug的開(kāi)發(fā)版本的系統(tǒng)中有效般又。
就算手動(dòng)在build.prop添加配置,也是無(wú)法生效的巍佑,因?yàn)檫@個(gè)是寫(xiě)死在boot分區(qū)中的茴迁。
所以獲得Root權(quán)限后,還是需要在電視的命令行界面使用su命令才能切換root用戶(hù)句狼,進(jìn)行高權(quán)限的操作笋熬。
創(chuàng)維G7200_8H87系統(tǒng)精簡(jiǎn)優(yōu)化方案
看到這里,如果你成功獲取了Root權(quán)限但是不是創(chuàng)維電視系統(tǒng)腻菇,就可以退出了胳螟。
如果你是創(chuàng)維G7200_8H87機(jī)芯,那么繼續(xù)跟著操作就好筹吐。
如果你是創(chuàng)維其它型號(hào)或者版本的電視系統(tǒng)糖耸,那么請(qǐng)務(wù)必有選擇地參考以下操作。
以下給出了部分可用的精簡(jiǎn)方案丘薛,你可以在有Root權(quán)限的基礎(chǔ)上做到更多嘉竟。
刪除開(kāi)機(jī)廣告以及卸載無(wú)用的系統(tǒng)應(yīng)用
# 在電視命令行窗口,獲取su Root權(quán)限洋侨,并掛載/system分區(qū)為可讀寫(xiě)后執(zhí)行以下命令
# 查看全部安裝的應(yīng)用
pm list packages
# 以下使用的卸載方法是保留原始文件在系統(tǒng)中舍扰,但是不讓其繼續(xù)運(yùn)行
# 你也可以使用disable-user的方法禁用這些應(yīng)用
# 但是卸載后應(yīng)用不會(huì)出現(xiàn)在第三方桌面,只是禁用還是可能會(huì)出現(xiàn)的
# 只卸載不刪除的目的是為了萬(wàn)一出問(wèn)題還能恢復(fù)
# 當(dāng)然你也可以卸載后再去刪除/system/app或者/system/vendor或者/data/app下的文件
# 卸載廣告服務(wù)
# 只要卸載了就不會(huì)有開(kāi)機(jī)廣告了
# 有可能導(dǎo)致開(kāi)機(jī)啟動(dòng)的加載頁(yè)面會(huì)黑屏閃1s
pm uninstall -k --user 0 com.tianci.ad
# 以下應(yīng)用按需卸載希坚,或者你可以卸載其它不想要的
# 經(jīng)過(guò)測(cè)試卸載以下應(yīng)用不會(huì)出現(xiàn)嚴(yán)重系統(tǒng)問(wèn)題
# 卸載天氣
pm uninstall -k --user 0 com.icoolme.tv.weather
# 卸載小維智聯(lián)
pm uninstall -k --user 0 com.skyworth.smarthome_tv
# 卸載商城
pm uninstall -k --user 0 com.coocaa.mall
# 卸載卡拉OK
pm uninstall -k --user 0 com.bajintech.karaok
# 卸載語(yǔ)音助手
pm uninstall -k --user 0 com.skyworth.lafite.srtnj.speechserver
# 卸載親朋圈
pm uninstall -k --user 0 com.skyworth.voip
還原卸載的系統(tǒng)應(yīng)用
如果誤操作卸載了某個(gè)應(yīng)用边苹,可以通過(guò)這個(gè)方法還原:
# 列出所有已卸載的應(yīng)用所在的位置,例如com.icoolme.tv.weather
pm list packages -u -f | grep com.icoolme.tv.weather
# 返回的結(jié)果為:package:/system/app/ZuiMeiWeather/ZuiMeiWeather.apk=com.icoolme.tv.weather
# 所以我們可以使用以下命令還原
pm install -r --user 0 /system/app/ZuiMeiWeather/ZuiMeiWeather.apk
替換應(yīng)用市場(chǎng)
如果你提前通過(guò)各種方式安裝了其它的應(yīng)用市場(chǎng)裁僧,則可以直接卸載自帶的應(yīng)用圈
在電腦本機(jī)的命令窗口執(zhí)行以下命令安裝XXX.apk:
adb shell install -r XXX.apk
如果你希望安裝其為一個(gè)系統(tǒng)應(yīng)用可以看后面的教程个束。
在電視命令窗口執(zhí)行以下命令卸載應(yīng)用圈:
pm uninstall -k --user 0 com.tianci.appstore
注意:如果卸載了“應(yīng)用圈”慕购,信號(hào)源中的“我的應(yīng)用”會(huì)處于點(diǎn)擊無(wú)反應(yīng)的情況
修改系統(tǒng)文件
假設(shè)你想修改/system/build.prop文件,則可以執(zhí)行以下命令:
# 在電視命令行窗口操作
# 命令行中查看文件內(nèi)容(可選)
cat /system/build.prop
# 命令行中查看文件權(quán)限和擁有者
ls -l /system | grep build.prop
# 備份文件
cp -a /system/build.prop /system/build.prop.bak
# 在電腦命令行窗口操作
# 將/system/build.prop文件拉取到當(dāng)前目錄
adb pull /system/build.prop .
# 你可以修改拉取的build.prop文件
# 將build.prop文件推送到/data/local/tmp
adb push build.prop /data/local/tmp/
# 在電視命令行窗口操作
mv /data/local/tmp/build.prop /system/build.prop
# 設(shè)置正確的權(quán)限和擁有者
# 這一步因不同的文件而異茬底,請(qǐng)先確認(rèn)自己修改的文件需要哪些權(quán)限
chmod 644 /system/build.prop
chown root:root /system/build.prop
安裝一個(gè)應(yīng)用為系統(tǒng)應(yīng)用
假設(shè)你有一個(gè)Launcher.apk想安裝為系統(tǒng)應(yīng)用沪悲,則可以執(zhí)行以下命令:
# 在電腦命令行窗口推送APK
adb push Launcher.apk /data/local/tmp
# 接下來(lái)在電視命令行窗口操作
# 打開(kāi)/system/priv-app文件夾
# 雖然放在/system/app也可以,但是/system/priv-app文件夾下的APP權(quán)限更大
cd /system/priv-app
# 新建一個(gè)文件夾Launcher
# 取名隨意阱表,必須英文無(wú)空格殿如,不要和其他的文件重復(fù)
mkdir Launcher
# 設(shè)置文件夾權(quán)限
chmod 755 Launcher
chown root:root Launcher
# 將APK移動(dòng)到Launcher/下
mv /data/local/tmp/Launcher.apk Launcher/
# 打開(kāi)Launcher文件夾
cd Launcher
# 設(shè)置Launcher.apk權(quán)限
chmod 644 Launcher.apk
chown root:root Launcher.apk
重啟電視,就可以發(fā)現(xiàn)這個(gè)應(yīng)用被安裝為系統(tǒng)應(yīng)用了捶枢。
替換默認(rèn)主頁(yè)
替換默認(rèn)的主頁(yè)握截,首先需要將一個(gè)主頁(yè)APK安裝為系統(tǒng)應(yīng)用。
但是烂叔,在創(chuàng)維G7200_8H87上谨胞,就算安裝為系統(tǒng)應(yīng)用也無(wú)法通過(guò)按主頁(yè)鍵回到指定的主頁(yè)APP。
也不會(huì)彈出任何要求選定默認(rèn)主頁(yè)APP的選項(xiàng)蒜鸡。
在此情況下胯努,若是直接禁用或者卸載默認(rèn)的主頁(yè)APP則會(huì)導(dǎo)致主頁(yè)完全無(wú)法打開(kāi)的問(wèn)題。
本人在查看了許多系統(tǒng)文件后逢防,在/data/data/com.tianci.setting/shared_prefs/tcsetting.xml
文件中找到了解決方案叶沛。
這個(gè)文件定義了系統(tǒng)的配置文件所在的位置,即<string name="preSavedPcfgPath">/system/pcfg/8H87_G7200/config</string>
忘朝。
打開(kāi)這個(gè)config
文件夾灰署,就可以發(fā)現(xiàn)許多配置文件了。
找到general_config.xml
文件局嘁,拉取到本地進(jìn)行修改溉箕。
# 在電腦命令行窗口
# 拉取配置文件到本地的當(dāng)前文件夾
adb pull /system/pcfg/8H87_G7200/config/general_config.xml .
將其中的:
<config name="DEFAULT_HOMEPAGE" value="com.tianci.movieplatform/com.coocaa.homepage.vast.HomePageActivity" />
修改為你想要的主頁(yè)的啟動(dòng)包名和Activity名稱(chēng)。
本人使用了Emotn UI悦昵,所以修改為:
<config name="DEFAULT_HOMEPAGE" value="com.oversea.aslauncher/com.oversea.aslauncher.ui.main.MainActivity" />
最后保證有原始文件備份肴茄,將這個(gè)文件替換過(guò)去,保證權(quán)限和擁有人正確但指,重啟電視即可生效寡痰。
# 在電腦命令行窗口
# 推送本地文件到緩存目錄
adb push general_config.xml /data/local/tmp
# 在電視命令行窗口操作
# 備份并設(shè)置新的配置文件
mv /system/pcfg/8H87_G7200/config/general_config.xml /system/pcfg/8H87_G7200/config/general_config.xml.bak
mv /data/local/tmp/general_config.xml /system/pcfg/8H87_G7200/config/general_config.xml
# 最后設(shè)置權(quán)限和擁有人
chmod 644 general_config.xml
chown root:root general_config.xml
# 重啟電視
reboot
重啟電視后可以打開(kāi)任意APP,點(diǎn)擊主頁(yè)按鈕棋凳,就能返回到自定義的主頁(yè)APP了拦坠。
確保生效后就可以卸載原來(lái)默認(rèn)的主頁(yè)APP了。
# 在電視命令行窗口操作
# 卸載默認(rèn)主頁(yè)
pm uninstall -k --user 0 com.tianci.movieplatform
目前已知存在的問(wèn)題:由于第三方主頁(yè)沒(méi)有緩沖加載界面剩岳,開(kāi)機(jī)后首次打開(kāi)可能會(huì)黑屏1~2s贪婉。
其他創(chuàng)維系統(tǒng)配置
創(chuàng)維電視系統(tǒng)在/system/pcfg
中存放了許多有用的配置文件。
這些都可以進(jìn)行修改卢肃,并通過(guò)重啟測(cè)試其是否有效疲迂。
例如,general_config.xml
文件中還可以直接通過(guò)配置關(guān)閉開(kāi)機(jī)廣告莫湘。
例如尤蒿,bootQueue.xml
文件中定義了開(kāi)機(jī)啟動(dòng)的應(yīng)用隊(duì)列。
在保證有原始文件備份幅垮,權(quán)限和擁有人正確的情況下都可以嘗試修改腰池。
禁用開(kāi)機(jī)Root權(quán)限
如果電視上所有的操作都完成了,想要關(guān)閉Root權(quán)限也很簡(jiǎn)單:
# 在電視命令行窗口操作
# 此處以之前不存在/system/bin/install-recovery.sh為例
# 更改開(kāi)機(jī)啟動(dòng)的腳本文件名稱(chēng)忙芒,重啟后就沒(méi)有Root權(quán)限了
mv /system/bin/install-recovery.sh /system/bin/install-recovery.sh.bak
# 如果想再次開(kāi)啟su命令示弓,由于我們已經(jīng)保存了一份/system/xbin/exploit
# 再次執(zhí)行教程的步驟,然后將文件名改回來(lái)或者直接執(zhí)行以下命令就可以使su命令可用
/system/xbin/su -ad &