明明一样的程序为啥有的系统就报错有的就正常运行呢_SurfaceGo Android系统折腾笔记...
Surface Go平板在Win10系統下的表現我認為還是比較出色的,x86架構CPU意味著不考慮性能的情況下,臺式機上能跑的程序,這臺平板也能跑,新Galgame一出就能直接安裝上躺床上玩,妙哉。
但遺憾的是現實世界還是要考慮性能問題的,這平板玩Galgame在轉場動畫都會肉眼可見地掉幀,雖然不影響食用,但還是足以證明這板子配置是真的差,我還是很想挖掘一下這板子的游戲潛力的,不然只能推個Galgame也太可惜了點(其實還能玩玩Helltaker的)。
因此我就試著給板子安裝上了Android系統,這個筆記就是用來記錄我這一年來折騰的點點滴滴。
市面上可以在x86架構CPU上安裝的Android系統有很多,除了Android x86這種比較原生的系統以外還有BlissOS、PrimeOS、鳳凰OS、RemixOS等,此外還有FydeOS這種雖然不是Android系統但也可以直接運行Android程序的系統可供選擇。我安裝的是Android x86,雖然BlissOS有專門針對Surface系列的適配版本,網上也有很多人夸另幾個系統,不過我還是很倔強地選擇了不一樣的路。
我一共嘗試裝了Android x86的一下幾個版本(按時間順序):8.1、CM14.1、7.1、9.0,之前在臺式機上裝過一個模擬器是Android 5.1,本來想裝個看看但鏡像不知道為啥下載下來沒法用,所以沒試,而且現在模擬器都開始用7.1了嘛。
Android 8.1
Android 8.1是我最開始(2019年6月)裝的系統,裝它的原因是因為它當時在Android x86官網下載列表的最上面,有挺多小毛病的,比如平板物理鍵時不時就不靈了,電源鍵沒法長按的,有時開機后觸摸屏會失靈(好像已經有解決方案了),有時不認觸摸板不顯示鼠標,有時候系統會一睡不醒,wifi也會時不時地不能用等等
不過,游戲能玩了啊啊啊啊啊啊啊
以下是應用測試情況,大部分是一年前的數據了所以可能沒啥參考價值:
王者榮耀,能玩
絕地求生:刺激戰場,很卡沒法玩,當時好像還沒改名
絕地求生:全軍出擊,能打開,因為低等級沒法進訓練場(就沒見過這種設計)所以隨便開了一局結果傘還沒打開就說我故意繞過模擬器檢測機制封了一年,所以是不能玩
崩壞三,能玩
明日方舟,能進去,不過密碼忘了所以沒具體玩
多多自走棋,直接打不開
BanG Dream,能玩
(近期測試)雙生視界,2020年4月大更新前能玩,大更新后開始頻繁閃退
(近期測試)公主連結R,能玩,但是戰斗場景很容易讓解碼進程崩潰導致后續整個游戲崩掉,推測是顯卡驅動問題
B站與Taptap,打開1秒后自帶報錯,做特殊處理后能正常運行
(近期測試)微信,無法安裝
因為大部分Android設備都是用的ARM架構的CPU,很多Android應用都只帶有ARM指令集的二進制庫,這種二進制庫在x86架構的CPU上無法運行,因此x86的Android系統需要一個名叫houdini的東西來模擬ARM的CPU來運行(據說是國內的intel分部寫的,不保證真實性)。
Android x86的作者已經將houdini打包好并針對各個版本的Android x86系統做了調整,但Android x86的鏡像中并不自帶,需要在安裝系統后以root身份執行enable_nativebridge命令手動下載打包好的houdini.sfs文件。
houdini.sfs分xyz三種,x是用32位x86指令集模擬arm32,y是用64位x86指令集模擬arm32,z是用64位x86指令集模擬arm64,如果安裝的是64位系統,enable_nativebridge腳本會自動下載y包,否則會下載x包,如果執行的是enable_nativebridge 64,則會去下載z包,不過從Android x86 從8開始就沒有z包了,也就是說8和9是沒法安裝只使用arm64庫的應用的,這也是為什么微信沒法安裝的原因。
不過雖然Android 8沒有模擬arm64但有Vulkan,這個是7沒有的。
雙生視界大更新后閃退是因為程序員新打包的apk中刪掉了x86的庫導致系統要模擬arm運行,就這個頻繁閃退的情況來看,Android x86 8.1對arm的模擬效果還挺差的……
B站與Taptap需要做特殊處理是因為這倆客戶端自帶一小部分x86的庫,但不完整,缺了挺多庫,所以安裝后啟動會因為缺失庫文件報錯閃退,我修改build.prop文件讓系統安裝器優先安裝arm的庫,重裝再啟動一次再把優先級改回來就能正常運行了。如果不先啟動一下直接把優先級改回來,它們程序里的SoLoader庫就會根據優先級重新把x86的庫搞回來然后再報同樣的錯誤閃退……有點傻傻的
這個系統使用中途我更新了一次,從r2更新到了r4,直接把我system的讀寫權限更沒了……研究了下怎么把system掛載成讀寫的,需要一點linux的知識,回想那堆我tabtab就能出來的命令挺麻煩的就不寫具體命令了:
首先掛載Android系統所在的分區,進入分區后有個Android啥啥的文件夾,再進去應該有個system.sfs,好像是這個名,把這個sfs文件解壓會有個system.img文件,接下來
接下來把system.sfs刪掉重啟就好了
因為它判斷system目錄掛載讀寫權限的邏輯就是判斷有沒有sfs有就掛只讀沒有就去找img掛讀寫
如果想改回只讀的話,就自己再壓縮成sfs文件唄,如果沒做啥修改用安裝鏡像自動升級一下也行的
注:這個是8的方法,7好像是直接解壓成system文件夾
Android x86 CM 14.1
這個是最近幾天(2020年7月25日左右)裝的。
直接說結論,兼容性最好的Android x86系統沒有之一,推薦使用。
看了下init.sh,里面已經包含了修復觸摸屏失靈的代碼。
電源鍵直接沒法用,從根本上解決了鎖屏睡不醒的問題(笑)。
音量鍵會被系統識別成實體鍵盤,如果想要在摘下Surface的鍵盤后讓系統正常彈出虛擬鍵盤,需要屏蔽音量鍵,具體做法是在grub配置文件里在系統的kernel那一行加個i8042.nokbd參數,不過Android x86默認的配置文件……稍微有一點點繞,但讀懂了還挺好用的。
如果3秒沒有聲音播放聲卡就會休眠,再播放聲音時就會爆音,可以在init.sh的Surface*Go這一行下面加一行
echo 0 > /sys/module/snd_hda_intel/parameters/power_save來解決,意思是關閉聲卡的省電功能
觸控板與wifi好像也不會掉了,至少現在沒掉過,就是觸控板體驗不是很好,win下觸控板是有誤觸判斷的,Android那邊一碰鼠標就亂飛,而且指針加速沒得關。
但是首先CM14.1是基于Android 7.1的,它是有houdini的z包的,也就是說綠色修改器(指微信支付)能裝了,而且它對arm的模擬也挺完美的,至少玩雙生視界比Android8流暢而且沒有閃退。
但是會讓整個界面卡死……
看了下游戲崩潰的log,提示是Failed to create agent because it is not close enough to the NavMash.然后后面跟著各種取向量除以0空指針報錯,我尋思貼吧那邊也沒有誰說有卡死的問題,所以估計著是houdini又搞了啥幺蛾子,可能是浮點數模擬出問題了,試著用x包代替y包,游戲沒再報錯,但是沒那么流暢了,又試了下Android x86 6.0的houdini的y包(中間也試過8和9的y包,不過都沒法用),這次是既流暢又不報錯了,完美
不過公主連結R還是一如既往地會把解碼進程mediacodec搞崩,看來這個不是很好修,主要還是平板配置太爛了
之后又測試了幾款游戲,有崩壞2(x86)、崩壞3(x86)、明日方舟(有x86但不知道為啥會裝成arm庫)、萬靈啟源(arm)、戰雙帕彌什(arm),都能運行的很穩定,B站客戶端也可以直接安裝運行了,爽了。
微信裝了能進到登錄頁面,不過聽說微信封模擬器比較兇就沒嘗試登陸,我有tx封模擬器ptsd了。
不過CM14.1有個稍微嚴重的問題,就是運行大負荷任務時會時不時整個系統卡住一下,公主連結R在Loading時出現過幾次卡很久的情況,B站打開視頻時出現過一次差點把系統卡崩掉的情況,其他游戲倒只出現過稍微卡1、2秒的情況,目前不清楚原因在哪里,對我來說只要不閃退啥都好說。
Android x86 7.1&Android x86 9
在解決CM14.1雙生視界崩潰問題的時候我曾嘗試換了下這倆系統,結果……挺慘的,Android x86 7.1對arm的模擬效果還不如Android x86 8.1(明明CM14.1就是基于7.1,迷惑),而Android x86 9干脆系統應用直接不停地彈報錯,根本沒法用(Android x86 9安裝時格式化彈了個已格式化132%把我嚇不輕)
最后,因為我上面提到自己手動更換houdini了,所以說一下如何手動下載houdini包:
http://dl.android-x86.org/houdini/6_y/houdini.sfs
把鏈接中的6_y改成需要的包,比如Android 7的z包就是7_z,下完還需要自己根據自己的系統在結尾加上6_y、7_z這樣的標簽,變成houdini7_z.sfs這樣
下好后傳到Android里,su獲得權限進入/data/arm目錄,如果沒有需要自己mkdir一個,把剛下好的sfs文件放進去,執行enable_nativebridge
如果這次是覆蓋安裝,需要執行以下命令
xy包
umount /system/lib/libhoudini.so umount /system/lib/arm enable_nativebridgez包
umount /system/lib64/libhoudini.so umount /system/lib64/arm enable_nativebridge 64總結
以上是生活随笔為你收集整理的明明一样的程序为啥有的系统就报错有的就正常运行呢_SurfaceGo Android系统折腾笔记...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钢质防火门多少钱啊?
- 下一篇: 《从临海王上荆初发新渚诗》第五句是什么