無所不用其極!盤點(diǎn)流氓App駐留后臺(tái)的奇技淫巧
- 來源:太平洋電腦網(wǎng)
- 作者:NT
- 編輯:newtype2001
和iOS相比,安卓是一個(gè)更加開放的平臺(tái),帶來了更多自由的同時(shí),也容許了更多“法外之地”。App在安卓系統(tǒng)中的限制比iOS更小,這令安卓孕育出了很多流氓App。盡管Google一直嘗試對(duì)后臺(tái)增添更多限制、理清安卓的生態(tài),但流氓App們見招拆招,使出了各種喪心病狂的手段來駐留后臺(tái)。流氓App駐留后臺(tái)有哪些奇技淫巧?一起來看看吧。
安卓系統(tǒng)的后臺(tái)機(jī)制
我們先來談?wù)劙沧康暮笈_(tái)機(jī)制,這可以讓我們更清晰地得知為何流氓App為何容易駐留在后臺(tái)。安卓是一個(gè)基于Linux的操作系統(tǒng),因此其后臺(tái)機(jī)制也和Linux類似——一般情況下,返回桌面時(shí)程序并不會(huì)推出后臺(tái),而是在后臺(tái)持續(xù)運(yùn)行,當(dāng)系統(tǒng)需要更多資源的時(shí)候,相應(yīng)的程序才會(huì)被請(qǐng)出去。
安卓并不是隨便清理后臺(tái)的進(jìn)程的,在安卓系統(tǒng)中,App分為Foreground_App(前臺(tái)應(yīng)用)、Visiable_App(可見應(yīng)用)、Secondary_App(二級(jí)應(yīng)用)、Hidden_App(隱藏應(yīng)用)、Content_Provider(內(nèi)容提供器)、Empty_App(空應(yīng)用)等狀態(tài)。
當(dāng)內(nèi)存不足的時(shí)候,系統(tǒng)會(huì)優(yōu)先終止Empty_App進(jìn)程和服務(wù),將內(nèi)存釋放出去;內(nèi)存再次吃緊,就開始對(duì)Content_Provider動(dòng)手腳了,以此類推。因此,越重要的進(jìn)程會(huì)越得到保留,越無關(guān)重要的進(jìn)程會(huì)越被優(yōu)先清理出內(nèi)存,這方案乍看之下沒啥問題。
然而事情并不盡如人意,流氓App之所以流氓,就是不守規(guī)則。安卓系統(tǒng)中留有太多余地讓App在后臺(tái)自由發(fā)揮了,就算是Android 6.0引進(jìn)了Doze打盹機(jī)制、Android O倡導(dǎo)后臺(tái)純凈(Background-free),流氓App們?nèi)阅懿宦暡豁懙卦诤笈_(tái)龍盤虎踞。如果沒有使用特別的殺后臺(tái)工具或者對(duì)后臺(tái)有特殊限制的ROM,流氓App們甚至能讓手機(jī)化身續(xù)航兩小時(shí)的暖手寶。
流氓App駐留后臺(tái)技巧:亂注冊狀態(tài)
前面提到,安卓把App分為好幾個(gè)狀態(tài),不過流氓App可不會(huì)遵守這些規(guī)矩,讓后臺(tái)按照這些狀態(tài)來運(yùn)行。例如,流氓App就可以通過startForeground來把自己注冊成為前臺(tái)應(yīng)用,讓自己的后臺(tái)成為最高優(yōu)先級(jí),永遠(yuǎn)不會(huì)被系統(tǒng)干掉。
不過,這個(gè)方法已經(jīng)有了Google官方的應(yīng)對(duì),在安卓4.3以上的系統(tǒng)中,如果有App亂注冊這個(gè)狀態(tài),通知欄就會(huì)顯示“XX正在后臺(tái)運(yùn)行”。盡管流氓App通過一些手段一度繞了過去,但在安卓7.0中Google封堵了該漏洞。如果你升級(jí)到了安卓7.0,某App在通知欄持續(xù)顯示“XX正在后臺(tái)運(yùn)行”,不用懷疑,這就是個(gè)流氓App。
流氓App駐留后臺(tái)技巧:透明懸浮窗
這是個(gè)腦洞大開的一招,我們知道和iOS不同,App可以在系統(tǒng)中顯示懸浮窗,為用戶提供各種實(shí)時(shí)信息。而開了懸浮窗的App,會(huì)一直運(yùn)行,進(jìn)程不會(huì)被隨便清理掉。于是流氓App就在這方面動(dòng)歪腦筋了,某流氓App會(huì)在設(shè)置一個(gè)1像素大小的透明懸浮窗,用戶是看不到的,但這懸浮窗的確存在。App退到后臺(tái)后,由于有懸浮窗的存在,進(jìn)程也得以保留。
這個(gè)方法也已經(jīng)被Google所察覺,在新版的安卓系統(tǒng)以及很多第三方ROM中,App已經(jīng)不能隨便申請(qǐng)到懸浮窗的權(quán)限。
流氓App駐留后臺(tái)技巧:亂請(qǐng)求喚醒
用過安卓的朋友都知道,流氓App最煩人的一點(diǎn)就在于胡亂自行啟動(dòng),這和流氓App們胡亂請(qǐng)求喚醒是密不可分的。安卓系統(tǒng)擁有喚醒機(jī)制,App可以同某些具體事件,觸發(fā)特定動(dòng)作。例如到了時(shí)間,App可以觸發(fā)鈴聲;又例如連上了網(wǎng)絡(luò)或者間隔一段時(shí)間,App可以觸發(fā)數(shù)據(jù)同步動(dòng)作。
這些動(dòng)作都需要喚醒App才能運(yùn)行,于是流氓App就把頻頻使用“Alarm”、“Sync Adapter”等周期性任務(wù)喚醒自己,讓自己不斷在后臺(tái)啟動(dòng),這也是很多殺后臺(tái)App無法徹底干掉流氓App后臺(tái)進(jìn)程的原因。
對(duì)此,Google官方也嘗試使用對(duì)齊喚醒機(jī)制來解決。在安卓6.0中Google引入Doze機(jī)制,讓后臺(tái)進(jìn)程盡量在統(tǒng)一的周期中同時(shí)喚醒,使CPU得到盡可能長的休眠時(shí)間。不過,這個(gè)機(jī)制并不夠激進(jìn),需要手機(jī)無操作靜止較長時(shí)間才會(huì)工作,總體而言效果有限。如果用戶使用手機(jī)頻度較大,Doze機(jī)制甚至不會(huì)生效,流氓App們依然會(huì)不斷吞噬著手機(jī)電量。
流氓App駐留后臺(tái)技巧:進(jìn)程相互喚醒
除了利用安卓系統(tǒng)的喚醒機(jī)制,流氓App們還可以利用進(jìn)程來相互喚醒。一方面,流氓App可以在后臺(tái)注冊多個(gè)進(jìn)程,就算某個(gè)進(jìn)程被干掉,也可以用其他進(jìn)程來喚醒——如果你仔細(xì)觀察,可以發(fā)現(xiàn)很多App都在后臺(tái)注冊了不止一個(gè)進(jìn)程,為的就是不斷喚醒;另一方面,流氓App們還可以抱團(tuán)相互喚醒!當(dāng)你開啟了A應(yīng)用后,它的進(jìn)程可能會(huì)喚醒B應(yīng)用,B應(yīng)用的進(jìn)程接而又會(huì)喚醒C應(yīng)用,這種“鏈?zhǔn)絾拘?rdquo;在國內(nèi)的App中尤為常見,令人防不勝防。
“鏈?zhǔn)絾拘?rdquo;如此常見,是有原因的。由于Google服務(wù)的缺失,很多國內(nèi)App為了實(shí)現(xiàn)推送和廣告等功能,不得不使用一些第三方的SDK。這些第三方的SDK往往就會(huì)讓App抱團(tuán)喚醒,不少App其實(shí)不想耍流氓,但用了這些第三方SDK,也不得不變流氓。當(dāng)然,解決方法還是有的,有心的開發(fā)者可以在使用流氓SDK的時(shí)候,接入Project Condom這個(gè)開源庫,避免“鏈?zhǔn)絾拘?rdquo;。
Google也知道進(jìn)程喚醒的問題所在,于是安卓8.0的開發(fā)規(guī)范要求App一旦進(jìn)入后臺(tái),需要在短時(shí)間內(nèi)停止所有的后臺(tái)服務(wù),也不可以隨便啟動(dòng)新的后臺(tái)服務(wù)。至于這個(gè)效果如何,目前安卓8.0尚未普及,還有待觀察。
流氓App駐留后臺(tái)技巧:沆瀣一氣
這應(yīng)該就是終極的大招了!如果流氓App本身就和ROM有勾結(jié),這App無疑就獲得了最高通行權(quán),無論如何也不會(huì)被干掉。例如,你何時(shí)看到過原生安卓會(huì)干掉Google Play(別說Play服務(wù)不流氓)?國內(nèi)的一堆ROM也不會(huì)干掉自家的流氓推送服務(wù),還得靠推送來賣廣告呢。
面對(duì)這種情況,用戶基本上是無能為力的。或許基于AOSP的第三方ROM可以解決問題,但并不是所有設(shè)備都有條件刷機(jī)。
總結(jié)
實(shí)際上,安卓的生態(tài)已經(jīng)近似于惡性循環(huán),流氓App們不斷找方法駐留后臺(tái),而各種ROM為了對(duì)付流氓App,對(duì)后臺(tái)限制又日益收緊,這令安卓漸漸缺失了最初的賣點(diǎn)。為此,業(yè)界也在想辦法解決流氓App的問題,例如就有開發(fā)者提出了Android綠色應(yīng)用公約,國內(nèi)也打算聯(lián)合開發(fā)者們建立統(tǒng)一的App推送機(jī)制,減少App后臺(tái)駐留的必要性,希望安卓的生態(tài)最終還是可以越來越好吧。

玩家點(diǎn)評(píng) (0人參與,0條評(píng)論)
熱門評(píng)論
全部評(píng)論