1首先說壹下app的被喚醒(自啟動)機制。
app自啟動,基本上都是依靠Android的廣播來實現的,而且是靜態註冊的廣播(在AndroidManifest.xml文件中進行配置的廣播),發送廣播的方法在壹般情況下是sendBroadcast。
2按照慣例,反編譯壹下微信apk,然後搜索壹下它能夠由哪些靜態廣播進行喚醒,同時抓取廣播相關的log。
結合微信的AndroidManifest.xml文件以及抓取的log,可以知道相關的BroadcastReceiver是EntryReceiver,相關的action為
com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER
com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_UNREGISTER
從其名稱上看,是和註冊/註銷相關,具體接收到廣播之後做了哪些處理,這些就不贅述了。
3接下來分析知乎的代碼,搜索壹下知乎反編譯之後的smali文件(sendBroadcast),其中只有壹條是和微信相關的