導航:首頁 > 操作系統 > android保活

android保活

發布時間:2022-02-07 13:53:43

android無線開發的幾種常用技術(阿里巴巴資深

完整的開發一個android移動App需要經過從分解需求、架構設計到開發調試、測試、上線發布等多個階段,在發布後還會有產品功能上的迭代演進,此外還會面對性能、安全、無線網路質量等多方面的問題。
移動App的產品形態各不相同,有的是內容類,有的是工具類,有的是社交類,所以它們的業務邏輯所偏重的核心技術有些差別,但它們都會用到一些常用的技術方案。今天我們就先來簡單介紹一下這些常用技術,以後會專門分專題來詳細介紹這些技術的原理和使用場景。

1. Multidex
在Dalvik虛擬機所使用的dex文件格式中,用原生類型short來索引文件中的方法數,也就是最多隻能有4個位元組65536個method,在打包apk的過程中會把工程所需要的全部class文件都合並壓縮到一個dex文件中,也就是說自己開發的代碼加上外部引用的庫的方法總數不能超過65535。
隨著業務邏輯的不斷增長,很容易就會超過這個限制,在編譯期間就會遇到這樣一個錯誤:

還好google官方給出了一個解決方案Multidex,它會把dex文件拆成兩個或多個,第二個dex文件叫classes2.dex,在Application實例化後會從apk中解壓出classes2.dex並將其拷貝到應用的目錄下,通過反射將其注入到當前的ClassLoader中。但是這個方案非但不能解決一切問題也不能直接拿來用,而要加入自己的一些改造,來解決NoClassDefFoundError、INSTALL_FAILED_DEXOPT等問題,以保證自己的dex被順利的載入流暢的執行。

2. Plugin
Multidex雖然可以解決方法數的限制,但隨著業務邏輯越來越多,apk的大小也變得越來越多,而且有一些功能並非全部用戶都想用的,所以會把一些功能模塊獨立出來做成插件,讓用戶可以按需下載更新,這樣既減小了包大小,又改善了用戶體驗。

插件類似於windows的dll文件,放在某個特定目錄,應用程序主框架會用LoadLibrary載入各dll文件,按插件介面去訪問插件。Android的插件技術也是這樣,利用一個進程可以運行多個apk的機制,用ClassLoader將宿主apk之外的類載入進來,插件的context可以通過createPackageContext方法創建。因為插件中的activity,service等組件如果沒有在AndroidManifest.xml中聲明將不能運行,所以需要預先在AndroidManifest.xml中聲明一個代理類(ProxyActivity),將這個ProxyActivity傳給插件,讓插件的activity也有訪問資源的能力。

3. Hot Patch
有時一些嚴重的crash bug或漏洞需要緊急修復,但有些用戶不會或不願意立即升級,而且頻繁升級,沒有特別的功能更新只是修復bug的升級,對活躍用戶是一種傷害。熱補丁就可以解決這樣的窘境,它是一種可以線上修復的技術方案,有動態改變方法的能力,一般大型的移動應用都會使用熱補丁來處理緊急事件。

Hot Patch可以通過hook來修改java的method,注入自己的代碼,實現非侵入式的runtime修改,或者採用正向編程,通過工具生成patch文件,通過jni bridge指向補丁文件中的方法。還有就是利用ClassLoader,在dex中查找class時,如果找到類則返回,找不到就從下一個dex文件中繼續查找,由此可以想到,在把問題修復後,可以單獨生成一個dex,通過反射插入到dexElements數組的最前面,這樣就能讓dalvik載入補丁里的類了。

4. Push通道
Push是移動App常用的一種無線技術,基礎是基於TCP的心跳機制,和客戶端維持一個長連接。用處是向客戶端推送消息,或者代替客戶端定時去從伺服器pull的策略,改為客戶端接收到push消息後再去pull。
如果每個應用都自己實現push通道的話,cpu就會不定時地經常被喚醒,耗電量達到難以容忍的程度,而且自己搭建push平台的成本也很大,實時性和效率也存在問題,一般都直接使用一些服務商提供的push方案,這些push平台一般都經過了優化設計,在跨平台和網路穿透性、長連接心跳包、多客戶端App鏈路復用、服務和連接保活等技術上做了優化。比如Agoo最初是淘寶無線事業部開發的push服務,在逐漸完善和支撐淘系其他app後,通過服務端容量、通訊協議優化、業務和開放能力的拓展改進後,與友盟等合作,開始向第三方提供推送服務。

5. 應用加固
一款熱門的移動app或游戲發布後會受到很多的關注,經常會遇到二次打包的盜版行為,破解者要麼修改游戲的資源文件、道具、分值甚至直接把訪問的站點指向自己架設的伺服器,損害了開發者的利益;要麼偷偷植入自己的惡意代碼,表面上看起來跟正版的app完全一樣,在後台卻盜取用戶隱私,植入木馬;要麼通過反向工程學習原app的核心技術,打破技術上的競爭壁壘。
為了防止被破解只通過混淆是遠遠不夠的,即使是在native層混淆也還是會被人熟練的反編譯,所以需要一套對apk的保護方案來反調試、防逆向和防篡改。一般的加固方法都是對原apk先進行加密,然後和殼合並生成新的apk。殼是用來解密apk的dex文件。當應用啟動時,殼先解密原apk,准備好自己定義的ClassLoader,然後獲取源程序中的Application名稱,通過反射找到正確的Application對象,運行它的onCreate方法,這樣原apk才能被真正運行。其他一些反調試的方法有針對反編譯工具,在源程序中加入一些無效的指令或無效的指針,引發反編譯工具的崩潰,還有就是加花指令,利用一些跳轉,堆棧操作等指令,讓破解者無法清楚地理解反匯編後的內容。

6. 其他
除了上述幾點外,在服務端還會涉及灰度策略、鏈路流量優化、動態更新配置、防DNS劫持等技術,在客戶端會涉及用戶埋點上報、在線監控、進程保活、H5和native混合開發、注入框架等。

㈡ 求問大神 AndroidDaemon.apk 這個軟體是啥

Android 服務保活/常駐 (Android Service Daemon)
建議只在 App 的核心功能需要保活/常駐時使用。
啟動前台服務而不顯示通知來自於 D-clock 的 AndroidDaemonService,對其他的一些非 native 層保活方法進行了實現。

㈢ android開發 如何像微信一樣,不啟動App也能收到消息

常見的方法是藉助第三方推送工具實現APP保活,第三方推送一般都會用「長連互保」功能來保證消息的到達,長連互保的意思是,用戶設備中任何一個集成過該推送的app是打開的狀態,即使這個app沒打開也能啟動push service,收到推送。
第三方推送工具,例如極光推送也能實現APP保活的功能,使得開發者可以即時地向其應用程序的用戶推送通知或者消息,與用戶保持互動,從而有效地提高留存率,提升用戶體驗。
是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果

㈣ 安卓8.0以上 怎麼實現保活啊急

對於移動端IM應用和消息推送應用的開發者來說,Android後台保活這件事是再熟悉不過了。

自從Android P(即Android 8.0)出現以後,Android已經從系統層面將後台保活這條路給堵死了(詳見:《Android P正式版即將到來:後台應用保活、消息推送的真正噩夢》),曾今那些層出不窮的保活黑科技能用的也越來越少了(詳見:《全面盤點當前Android後台保活方案的真實運行效果(截止2019年前)》。雖然可以自已對接廠商的ROOM級推送通道,但一方面各廠商的推送介面都不一樣(而且同一廠商不同的系統版本間也存在推送介面的兼容性問題),很不方便。另一方面要一家家引入各自的推送服務SDK包會讓APP變的很大,這讓APP的下載變的很不友好。

總之,Android應用的後台保活在某些場景下,還是有持續的需求。除了之前那些耳熟能詳的保活黑科技以外,在Android 9.0(甚至Android 10)時代,我們還有哪些保活方法可以用?那麼,請跟著本文作者的思路,看看更優雅的後台保活實現方法吧

㈤ app植入保活功能後,會存有惡意軟體嗎

建議用戶提高警覺性,使用軟體請到官網下載。到應用商店進行下載正版軟體,避免從論壇等下載軟體,可以有效的減少該類病毒的侵害。關注」暗影實驗室」公眾號,獲取最新實時移動安全狀態,避免給您造成損失和危害。
為防止病毒變種,用戶發現已經安裝此病毒的,可以請專業人員分析此病毒。
安全需要做到防患於未然,可以使用恆安嘉新公司的APP威脅檢測與態勢分析平台進行分析對Android樣本提取信息並進行關聯分析和檢測;
用戶發現感染手機病毒軟體之後,可以向「12321網路不良與垃圾信息舉報受理中心」或「中國反網路病毒聯盟」進行舉報,使病毒軟體能夠第一時間被查殺和攔截。

㈥ 面試android高級開發工程師具備哪些技能

1、關於團隊:對內:能提升團隊內聚力和執行力,注重個人成長,能快速提高團隊戰鬥力;對外:能住區更多的資源,使項目和組內成員獲得更好的成長和發展。
2、關於技術:領導項目優化,架構變更、核心模塊的修改,也能不斷引入新技術、對標競品,不但技術上領先,也能做出更優秀的作品。
一、了解系統核心機制
1. 了解SystemServer的啟動過程
2. 了解主線程的消息循環模型
3. 了解AMS和PMS的工作原理
4. 能夠回答問題」一個應用存在多少個Window?「
5. 了解四大組件的大概工作流程
二、基本知識點的細節
1. Activity的啟動模式以及異常情況下不同Activity的表現
2. Service的onBind和onReBind的關聯
3. onServiceDisconnected(ComponentName className)和binderDied()的區別
4. AsyncTask在不同版本上的表現細節
5. 線程池的細節和參數配置
6.熟悉設計模式,有架構意識
三、技術要求
1.稍微深入的知識點
2.系統核心機制
3.基本知識點的細節
4.設計模式和架構
當然,除了上面的知識點和技能外,你還要能玩轉RxJava、掌握自定義view 、要會進程間通信與進程保活、熱修復等知識點。

㈦ 怎麼讓 Android 程序一直後台運行,像 QQ 一樣不被殺死

  1. 提高進程優先順序,降低進程被殺死的概率

  2. 防止鎖屏清理,1像素Activity

  3. 將Service 設置為前台 Service(會常駐一條通知,比如安全軟體和一些手機助手)

  4. 注冊系統廣播

  5. 集成推送功能(推送自帶喚醒)

  6. JobScheler,AlarmManager

  7. 廠商白名單

只能做到不那麼容易被殺。

關鍵字: 不死 保活 拉活

㈧ Android 7.0 和8.0 如何保活

1.控制onStartCommand函數的返回值。

我對這個函數的理解是:當服務被異常終止時,是否重啟服務?

有些文章裡面在用這個做保活時,修改的是flag,在我實際測試中是無效。有效的做法是直接返回參數。另外默認的flags值為0,是START_STICKY_COMPATIBILITY。如下:

[java]view plain

㈨ Android N 是什麼

一、 性能改善
Doze超級省電模式
手機在關屏同時沒有充電的情況,會進入打盹狀態,這時候app的位置服務,訪問網路,cpu background-running 等後台服務會被停止,不允許定時任務,忽略wake locks,停止wifi scanner。
會影響app的保活,尤其對那些需要接受消息類的app。Google 推薦使用GCM。
後台優化
廣播:
靜態注冊CONNECTIVITY_ACTION 廣播將失效,只有動態注冊才行。Android 5.0上可以使用JobScheler在指定的網路條件運行你的任務,還可以通過ConnectivityManager registerNetworkCallback()來監聽網路狀態。
ACTION_NEW_PICTURE,ACTION_NEW_VIDEO廣播已經去除,當然應用可以通過ContentResolver來監聽。Android N上面可以JobScheler來監聽
二、 NDK 試用改變
限制只能試用平台公共api,否則你的應用會crash,最好只使用NDK中包含的api,否則系統被定製了可能會找不到你要鏈接的so,其次使用第三方so的時候也要注意對方有木有試用非法的so.
如圖:

三、 Screen Zoom

用戶最低可以改變到屏幕寬度為320dp,所以app最好能適配sw320dp,當你的 compile target < android N 時,當用戶改變屏幕顯示大小時,會殺掉後台進程(你的app會被幹掉哦)
四、 Language and Locale
支持多用戶多語言環境,提供新的API: LocaleList.GetDefault(),可以獲取所有用戶的語言環境。
同時app多語言查找策略改變,當你的app中不在當前語言環境的resources時,會找最接近的語言代替,而不是直接使用默認語言代替。如:你的app的Resources中只包含 es,和zh_cn,當用戶的環境是zh_tw時,會用zh_cn代替。並且還支持自定義語言目錄。

五、 Multi-Window Support
Android N機器上默認就支持Multi-Window,同一個屏幕可以運行多個app窗口。有兩種模式,split-screen mode和picture-in-picture mode。app開啟和關閉這兩個模式很方便,在AndroidManifest.xml配置一下即可。
android:resizeableActivity=["true" | "false"]
android:supportsPictureInPicture=["true" | "false"]
這種模式在平板電腦上面很合適。

六、Notifications
Android N提供一些新的關於Notifications的API。
RemoteInput.Builder:使得用戶可以在通知欄直接回復,這個很適合社交類app和簡訊app,以及可以應用到用戶反饋中。

NotificationCompat.Builder.setGroup():可以使同一個app通知放在同一個分組。

NotificationManager:能讓你知道你目前發了多少條通知,怎樣通知進行分組。
七、Data Saver
當用戶開啟流量節省後,會禁止app在後台使用收費網路流量數據。甚至在前台使用流量時也會發出警告。
ConnectivityManager.isActiveNetworkMetered(),
ConnectivityManager.isActiveNetworkMetered(),
查詢是否開啟流量節省模式,自己是否在用戶白名單中(對自己例外)
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
監聽用戶開啟流量節省模式
八、Network Security Configuration
能讓app定製網路安全設置:
Debug-only overrides(自定義信用的CA)。
Debug-only overrides(自定義能調試你app信用的CA)
Cleartext traffic opt-out(防止網路請求明文交互)
Certificate pinning(自定義只信用包含特定公鑰CA)

㈩ android 友盟消息推送 如何保活

其實這個很簡單,第三方推送一般都會用「長連護保」功能來保證消息的到達,以下是該平台推送對長連護保的解釋:長連互保,用戶設備中任何一個集成過友盟推送的app打開,即使他的app沒打開也能啟動push service,收到推送。
其他的第三方推送工具,例如極光推送也能實現APP保活的功能,使得開發者可以即時地向其應用程序的用戶推送通知或者消息,與用戶保持互動,從而有效地提高留存率,提升用戶體驗。
極光推送是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果

閱讀全文

與android保活相關的資料

熱點內容
r1234yf汽車空調壓縮機 瀏覽:143
ftp伺服器地址欄 瀏覽:898
linux圖形分區 瀏覽:963
安徽到遼寧源碼 瀏覽:575
libs安卓的文件夾叫什麼 瀏覽:869
生意圈app是什麼意思 瀏覽:395
linuxarcgisserver 瀏覽:234
加密pdf怎麼修改文件 瀏覽:138
紅米刷機無命令怎麼辦 瀏覽:356
啥叫美國谷歌外包程序員 瀏覽:260
雲伺服器管家婆 瀏覽:440
發郵件命令 瀏覽:354
程序員好做嗎工作好嗎 瀏覽:886
雲電腦伺服器維護一個月多少錢 瀏覽:882
有沒有什麼app數學題型較多 瀏覽:341
政策pdf 瀏覽:295
有什麼好玩的文娛app 瀏覽:811
python教學合集 瀏覽:959
有什麼好用的小眾app嗎 瀏覽:118
芋道app源碼 瀏覽:448