關於root 關於實現靜默安裝

(文章最初寫在有道筆記裏面,所以排版不是很好,請原諒)

首先說一下靜默安裝,經過10天左右的研究,大概有如下幾種方法:

一.
我們平時開發打包後,我們的ide(包括eclipse idea as )  都會給我們自動安裝到手機上。那麼很多手機並沒有顯示安裝界面,當然也有部分手機是他媽的,做了底層的binder,這裏還是會顯示出來安裝界面。
這種方法是通過命令的方式,adb shell命令的方式只有連接電腦才能實現。而普通的應用就只能通過root權限,否則沒法執行一些特殊的adb命令。   但是問題來了,root了之後又需要一個權限管理的的一個程序進行允許,我擦這個方法好那啥。

二.
訪問隱藏的API方式進行靜態的默認安裝和卸載
隱藏的api,爲何要做到ap然後還又隱藏呢,不給用就不做不就行啦。  原因你切聽老夫來給你訴說:從前有座山山裏有座廟,廟裏有個老和尚,老和尚在幹嗎呢?老和尚在給老和尚講故事,so,講的是什麼呢.........


咳咳  扯遠了。 是這樣的,android 在最早的版本是帶這個功能的,當時沒考慮那麼多的安全性問題,垃圾軟件胡亂安裝問題,就跟我們現在需要靜默安裝這個功能的情況一樣,i just need  ,im not bad。  後來就爲了像一些垃圾軟件偷偷的安裝apk就隱藏了這個api,把這個api開放給廠商用於廠商自己的內置app更新之類的操作。

所以這個使用隱藏的api的方式呢,大概實現方法如下:

大概需要如下幾個類,
  PackageManager.java
IPackageDeleteObserver.aidl
IPackagerInstallObserver.aidl
IPackageMoveObserver.aidl


可以跑起來之後,需要賦給系統權限才能調用,所以在打包的時候需要打帶有系統權限的包。
    android:sharedUserId="android.uid.system"  然後簽名需要用系統的簽名,才能安裝。
系統簽名有兩種方案,
1 . 在eclipse中導出未簽名的apk包,導出後使用signapk.jar  和  兩個系統簽名文件,進行簽名,即可,但是這個方法好像不太穩定,經過測試發現一堆的機器都裝不上,而且他媽的,老子昨天晚上還能裝上的機器,早上 竟然裝不起來了,日了狗了,ok,原諒我如此的粗魯,北方的漢子沒辦法。
2.在源碼模式下打包,這個方法我不說了,沒去操作,還要安裝個ubuntu,還有他媽的一堆的android源碼下載等等,問題不在於這個方法很煩,而在於就算你打包了,最後打包結束也他媽的不是所有的機器都能跑的起來,有些機器的系統的簽名文件跟原版rom有出入。

三.
360手機助手的秒裝功能實現
360的秒裝功能就是root+靜默安裝  我拿到了一部分源碼   在eclipse中運行的部分代碼 雖然我不情願用eclipse 可憐

看截圖  



 就不公佈源碼了  太不道德 
原理大概說下360手機助手的實現


先看下面root的原理




下文是我從知乎拷貝出來的一段回答,回答的很好,把android root的原理說了。我只是抽取了簡短的一句。

原帖地址:  
Linux下su以後輸入密碼就可以root了,但Android裏的su和Linux裏的su是不一樣的,Android裏的su不是靠驗證密碼的,而是看你原來的權限是什麼。…………………………………………需要把一個所有者是root的su拷貝到Android手機上,並且把su的權限標誌位置成-rwsr-xr-x。能把這個事情搞定你就成功root了一個手機。
大概意思就是兩行代碼
cp /data/tmp/su /system/bin/ #copy su 到/system/分區
chown root:root su #su的所有者置成root
chmod 4775 /system/bin/su #把su置成-rwsr-xr-x


熟悉Android的同學都知道,執行上面的每一行代碼都需要root權限才能成功。


通過上面的這段話,可以理解root的原理,
大概也就是拷貝一個su文件到指定的目錄即可root,我看源碼的理解是他先用本地的.so文件去root,root失敗後,
提交一些本機的一些信息,如版本號,還有一些其他的信息到360的服務器,獲得這個手機對應的.so文件然後再root,成功就可以實現秒裝,不成功則無法實現,具體秒裝的實現我也沒具體研究。
如果之前root成功過 ,就會讀取上次root的保留的信息,直接root  即可,360採用的是臨時root,不會導致機器真的就root,這個做法還是比較好的。

但是有一點我不理解的,我看360的代碼,好像也是這麼實現的root,但是他們的竟然沒有下載所謂的su文件,而是.so文件。百思不得姐。  可能這個su文件支持 一個key的aes 加密的文件 吧,具體實現我也不清楚了。也可能就是這個so文件就是那個su文件吧。


但是總的來說360手機助手這個方法實現的 靜默安裝是最好的,有一點是說,這個360的臨時root不能適配所有的機器,在nexus7上測試失敗,在sony L36H上測試失敗,其他的機器都成功了,還好公司的機器是挺多的 ,夠我測試的,哈哈哈。


PS:另外現在ARM架構的機器root的方便,非ARM就很難了。

爲避免法律問題,請聽我說,以上內容純屬虛構,如有雷同純屬巧合。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章