是否有可能欺騙Android識別一個apk包名的機制?

事情是這樣的,手機原本自帶了一個android system webview ,自帶的是修改版,我再從google play store 下載這個軟體之後,系統把他們識別成了兩個軟體,也就是說那個新版的是沒用的,它只是作為一個普通軟體存在。

我試過吧自帶的凍結,並且把新安裝的轉換成系統應用。但是不行,那樣的話所有需要用到system webview的軟體都會崩潰。

我們學校的wifi需要進行網頁登陸,在網頁上輸入用戶名和密碼,系統自帶的網頁登陸巨慢無比,但是海豚瀏覽器可以秒開登陸界面。所以我認為android system webview需要更新。

如何才能讓系統知道後一個軟體是預裝軟體的高版本?是通過數字證書嗎?如何欺騙這個機制?


android 系統中使用包名確定app的身份。

名字相同但包名不同的話會當作兩個不同的app存在於手機中,並且是相對獨立的。

如果這兩個app是同類型app,那麼他們會在Intent 發出的時候出現在同一個列表裡面供你選用,此時你選擇『總是使用』這個app來運行。

而這兩個WebView 是一個系統的組件,一般不會出現讓你調用的狀況,就讓它們安靜的呆在那裡好了……用不著折騰。


貌似目前的答案都不夠完整,試答一發。

首先了解幾個概念。

1.app的名字:就像你的名字,別人可以和你同名同姓,如果你願意你也可以改名字

2.app 的包名 : 每一個Android App 都有一個包名,如果你的手機在安裝app a的時候發現已經有一個包名相同的app b ,你的手機就會嘗試覆蓋安裝b. 這個包名是可以由開發人員自己取的。

3. app 的簽名: 每個app在市場上發布之前都需要簽名,就是「上戶口」。通過開發工具可以生成一個加密的簽名文件,下次發布的時候也需要密碼將這個簽名文件導入。這個簽名文件是由程序自動生成的,和你的指紋一樣,別人用你的源代碼生成的簽名文件不會與你的一樣。它起到身份驗證的作用

上面提到了,包名一樣,手機就會嘗試覆蓋安裝。但是如果在覆蓋安裝過程中發現簽名不一致是會安裝失敗的,手機會認為這是個冒牌貨。

但是,有了簽名機制不代表絕對安全,還是有可能假冒的。在Android 4.3(印象中是這個版本 有誤還請指出)之前,Android的簽名驗證機制有漏洞,可以通過特殊手段繞過簽名機制。所以在這個版本之前,開發者很容易利用這個漏洞發布非官方app。當然現在也許也有其他方法~

就說這麼多,如果有知識性錯誤,評論留言 。


WebViewGoogle(net.typeblog.webview)_1.0.1_Android應用


樓上說了,系統是認package name的,所以你沒辦法用一個WebView取代另一個。我猜你的問題也不是WebView引起的。系統自帶的登錄檢測(學名叫captive portal detection),其原理是嘗試訪問一個特殊的谷歌URL,如果連不通就認為wifi需要登錄。如果該URL受到某不科學的影響導致連不通,就會出現你所說的登錄很慢問題。海豚瀏覽器因為不用這一套方法所以沒有問題。

解決辦法:如果你手機root了,可以通過修改系統文件,將那個谷歌URL替換成一個國內的網址。詳情請搜索「Nexus wifi感嘆號問題」


自己平時沒事倒騰手機以及軟體,怎麼開發軟體不知道,但是這個還是明白點。

首先apk文件名,那個名字都知道,是什麼並不影響安裝的軟體。就是一個文件名。其次,安裝後的軟體有個名字,比如qq,微信,這個名字,包含在安裝包最後一個文件裡面,下面以看這些內容的apk編輯器為例,

用apk編輯器打開apk編輯器的安裝包會出現兩個文件夾三個文件。(自己可以試試其他安裝包,也可以把其他安裝包改成zip格式解壓,也能得到這些,用軟體就是方便編輯,並且還有其他功能)

第二張圖片那裡可是寫上自己想更換的名字,比如xx專屬軟體,什麼的,安裝後軟體的名字就是這個。

其次,還有一個是版本號

第一張圖片倒數第三個文件打開,上面顯示版本號1.7。這裡也可以修改。平時去升級提示也是修改這裡的。

然後

還有一個是簽名,這個並不能看到,可以讓你看看apk編輯器有這個功能。剛才軟體編輯後退出是會自己打包簽名的。

好了,這些說完了,開始解釋軟體安裝了。

首先,你的軟體市場沒事幹掃描吧,比如qq,他看到手機上有qq這個軟體,然後在看最新發布的qq版本號是多少,如果版本號低的話,他會提醒你更新,這裡核對了軟體名和版本號。然後還有一個就是核對簽名,平時大家不常遇到這種情況,如果你經常在論壇裡面轉悠,下載一些漢化,去廣告之類的軟體,你會發現他提示你軟體簽名不一致,這樣你就不能正常升級了,依應用市場而變吧,有的直接裝了,有的非要等你卸了再裝。或者他自己幫你卸了。

看到上面最後一個圖片,製作共存嗎,這個就是把一個安裝包重新簽名一個,這樣兩個軟體就可以同時安裝了。

製作共存應該不僅僅改了簽名,一個軟體安裝後,在系統data目錄裡面有各自文件夾,裡面有安裝包提取出來的文件,如果安裝包不經過其他處理,兩個不同簽名相同軟體所產生運行文件目錄是一個,也是不能正常運行的。ps,系統軟體的相關文件也在data目錄。

這是相同軟體不同簽名的情況。版本號就不用說了,可以覆蓋,降級,升級(貌似以前有的安卓版本不讓降級)

然後就是,兩個安裝包名字不一樣簽名一樣怎麼辦。簽名方式我並不知道,一般不會發生這種情況,但是很偶爾還是會發生的,只是你不知道罷了,你是否遇到過這種情況,安裝一個軟體,然後最後顯示的應用程序未安裝(也可能是配置不夠)。這種情況多數就是因為手機某個軟體簽名和現在安裝的有衝突。因為應用名字不一樣,不存在升級什麼的,就不能安裝了。解決辦法最直接就是找到這個軟體卸載,那麼多軟體,想知道那個總不能一個一個試吧。好吧,上面製作共存的方法來了,重新簽名讓你(製作共存)就是了。重新簽名可以安裝兩個相同軟體,也可以解決不同簽名衝突問題。

對於題主的問題,你可以試著卸載原來的系統軟體,然後把新版本的轉為系統文件。或者直接製作共存版,貌似有其他軟體可以的,你可以搜索一下。其次就是你說的秒登錄問題,下次直接把登錄界面保存書籤就可以了,我們學校可以的,想必你們也可以。

以上是本人根據日常經驗所得,如有專業人員知道錯誤之處,歡迎指出。手機編輯不容易,就別在乎排版了。還有這裡出了幾個名詞往管理員別說我打廣告,上次被刪除回答,不是故意的。


聽說谷歌play不允許有包名和系統應用一樣的,


通過簽名來判斷的,如果安裝時存在包名相同但是數字簽名不同的應用,Package Installer會提示「存在簽名衝突的同名包」


認包名+簽名


包名+vertioncode+vertionname


通過包名判斷包。通過簽名認證包。


簽名


系統級應用一般認簽名,系統簽名應用後將有系統許可權。簽名在廠家手裡,

Google親兒子有公開的簽名,也可以用源碼編譯自己的系統燒到手機上用。


把自帶的刪了, 再把play的換進去, 注意許可權一致


推薦閱讀:

如何清除 Apk 中無用的資源文件?
如何判斷 Android 應用的 Apk 簽名是否一致?

TAG:Android應用 | Android手機 | Android | Apk |