xposed框架會不會讓手機變卡?

聽說在低端機上會讓手機變卡


謝 @Kunana XP 邀請。

xposed 會不會影響性能這個問題的答案是顯而易見的:會。

而且這個問題還需要分兩種情況討論。Android 5.0+ 和 Android 4.4-

我們先從 Android 4.4 及其以下版本的 xposed 框架說起。xposed 歸根究底就是一個提供對 Android 運行虛擬機 hook 的一個工具。可以使得用戶無需修改軟體本身而做到對軟體進行修改(通過在運行時進行修改)。其本身提供了一套抽象的 API 來幫助開發者開發 xposed 上面的插件。在運行時,通過在類載入過程中對類進行重寫的方法實現修改。

就這一點上來說,無疑是存在性能上的損耗的。但也如這個問題下其他答主所說,由於 xposed 的一些插件的本身的目的就是優化其他更佔資源的應用再加上 xposed 插件開發者本身開發經驗較為豐富,也比較良心,所以對性能的影響是有限的,相反,其優化性能的功能帶來的效果通常是顯著的。

我比較想單獨談論一下 Android 5.0+ 的 xposed 框架,這是目前其他答主還沒有提到的地方。顯然的 Android 5.0+ 帶來的問題有很多,比如更加嚴格的 SELinux 的限制以及對 64 位的支持等等對於 xposed 框架的實現難度提了更高的要求。當然最麻煩的東西還是 ART 虛擬機。

由於 ART 虛擬機不同於 Dalvik 只通過 JIT 來實現性能優化,它還選擇了在安裝期間通過 AOT 的方式將一部分 dex 轉換成更加原生的代碼。這使得 hook 的難度大為提高。顯然 AOT 之後的代碼就沒有那麼容易再進行運行時的類級別的 hook ,尤其是經過優化過後。

所以在 Android 5.0+ 上的 xposed 框架有著很大的實現上的區別。首先,xposed 框架會將系統的 ART 虛擬機的庫文件(libart.so 以及相關的文件)完全替換掉。但這一點,便沒有 Dalvik 上實現得那麼「乾淨」,並且這個替換掉的庫會禁用掉了一些 ART 的代碼優化的特性。這也會使得整個 hook 過程變得更可靠,更穩定。

所以這樣處理過後,這個 ART 虛擬機一定會跑得比原始的版本慢,而這也是作者所承認的。所以在 Android 5.0+ 上 xposed 對性能的影響其實是略大於 Android 4.4- 上帶來的。但是出於一個粗略的認識,即使禁用了一些特性的 ART 虛擬機跑得速度總體也是比 Dalvik 虛擬機要快的。

所以 xposed 框架會不會讓你手機變卡,其實還是取決於你使用 xposed 框架本身對性能的消耗,和你的 xposed 插件對你手機性能的提升兩者之間誰更明顯。

如果你裝了各家的全家桶的話,顯然,提升會比較明顯。


先簡答:會。

最為一個初級的Xposed插件開發者簡單說一下,Xposed是一個hook提供器,在安卓虛擬機執行類載入的時候為各種已啟用的插件的各種重寫的資源/方法的hook到原來的對應類中,以達到「對源代碼的修改或對源控制項布局的修改」,這一步驟顯然對app本身是有性能損失的。

根據插件的性質,有些插件需要hook到所有的app中(比如變色狀態欄)從而影響所有的app運行,有些插件可能隻影響單一或幾個app(比如狀態欄網速)。

再根據插件的性質,有些插件hook了app的某個方法,若這個方法會在窗口切換時執行那每次窗口切換時都要額外執行一段代碼(比如變色狀態欄),那麼相當於每次窗口切換時都要比原來不啟用插件時慢一點。

再根據插件的性質…

說不完了,總而言之,啟用xposed和插件是有性能損失的,但是開發xposed插件的程序猿一般來說都屬於「比較好的程序猿(呃,這裡想不到好的形容詞了,單從寫一個xposed插件的調試成本來看,媽蛋每改一句代碼不僅要重新run一遍,還要重啟一遍手機…)」,相比那些個nbhh的國產app裡面的大量(垃圾)代碼來說,這點性能損失根本不算事。


機器是Nexus 7 2013,安卓5.1.1,原生原廠系統,第三方節電內核,用Xposed + 綠色守護xposed模式續航3到6天,不用Xposed + 綠色守護root模式可以勉強撐到8天甚至更久。裝Xposed後,實際卡頓不明顯,但發熱明顯,而且更耗電。


作為一個普通的手機用戶,從我體會到的結果就是 - - - 會!

手機裝了不少XPOSED插件,手機裝之前佔用不到1g運存,啟用了插件之後,佔用1.2g。這個是能看到的數據。

還有一個現象就是返回桌面後,桌面圖標又開始重新載入了!

打開應用,點開愛速度還是挺快的,就是載入時間明顯邊長了!

另外,自己使用也能體會到系統反應變慢,這種感官上的,也只有自己使用才知道。

…………………

再補充一點,朋友跟我同型號手機,沒root,更別說框架了,同一個軟體我都可以打開再退出3次後他才進去!


我們先看看Xposed是個什麼東西。

Xposed框架是一款可以在不修改APK的情況下影響程序運行(修改系統)的框架服務,基於它可以製作出許多功能強大的模塊,且在功能不衝突的情況下同時運作。

當前,Per APP Setting(為每個應用設置單獨的dpi或修改許可權)、XPrivacy(防止隱私泄露)、對原生Launcher替換圖標等應用或功能均基於此框架。

說白了,只是個APP修改器。打個比方,他只是工具箱里一把螺絲刀,正常情況並不會影響你的使用效率。

當然,「安卓的事情,能叫bug嗎?」Xposed一直有個問題就是它的日誌文件會大量佔用儲存空間。簡單地說,就是這把螺絲刀不佔地,但他沒卸下來一顆螺絲,就會列印一張紙「我今天幾點幾分又在XX卸了一顆型號為XX的螺絲」,久而久之自然會佔用儲存空間從而影響手機速度。

另外如果安裝插件過多,好比你每次用水杯(app)時,先拿螺絲刀扳手啊什麼的「優化」一下,自然也會影響速度,跟Chrome一個道理。

建議:裝Xposed以後,留個綠色守護,重力工具箱即可。

如果老機覺得卡,強烈推薦Trimmer。


會。

如果你什麼軟體都不裝當然快。

比起裝了一堆軟體互相流氓地進行「全家桶」式反應,我寧可裝完了用xposed的模塊來優化一下來的更快。


主要看你安裝的插件是否高品質,和盡量少安裝一些不常用的插件。


裝一個fs變色狀態欄就知道了


可能會。個人經驗,根據功能有些插件會造成響應慢。誠然,xposed不需後台運行,但是更改系統策略可能會造成響應變慢。比如狀態欄沉浸模塊,看起來是在打開app時首先渲染狀態欄,於是打開app的時間就長了(即使是原本能自動沉浸的app)。自己用的不是旗艦,可能也會有影響。


明顯卡。已經升級基於安卓7.0的MIUI。放棄xp了。


我也感覺有些卡,不過帶來的好處還是很多哦



理論上會,但是實際影響微小。(無論驍龍400還是驍龍801的手機上都嘗試安裝過)


多運行了一個程序肯定要多佔用一個資源。但是後台自啟動的程序大部分都是國產的。一樣佔用資源


一般是不會卡的,當系統不夠兼容可能會導致卡頓。框架本身不怎麼佔用CPU資源吧


看評論快笑死了,看你怎麼用了,會用的只會覺得手機變好用了,不會的就另說了。


推薦閱讀:

為什麼微軟要將cortana適配ios和android? 意義如何?不會僅有的競爭力么?
你為什麼更多用瀏覽器使用某類互聯網產品而不是安裝APP?
你怎麼看待在 Android 中應用MVC,是否有必要抽象出獨立於 Activity 的 Controller ?
google play 中應用為何廣告如此之多?
Android 手機上有哪些好用的讀書軟體?

TAG:手機 | Android應用 | Android開發 | Android | XposedFramework |