AndroidStudio打包apk,安裝出現簽名沖突--解決辦法


Android UiAutomator2項目部署到jenkins上,實現自動打包,並自動push&安裝到設備上

遇到問題:

可成功實現自動打包並push到設備上后,install -r 的時候報錯:

INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

顯示簽名不一致,本打算手動先卸載原有的包,再重新安裝,但同樣無法卸載,卸載過程中報錯:

Failure [DELETE_FAILED_INTERNAL_ERROR]

在網上找了很多解決這兩個錯誤的方法,但都無法解決問題。因為項目代碼里並沒有任何地方配置了簽名信息,怎么在本機上構建的apk和在jenkins上構建的apk會出現簽名沖突呢?百思不得解。

后在這篇文章http://blog.csdn.net/penglijiang/article/details/8626108看到這段話:

 Android系統要求所有的程序經過數字簽名才能安裝,如果沒有可用的數字簽名,系統將不許安裝運行此程序,不管是模擬器還是真實手機。因此,在設備或者是模擬器上運行調試程序之前,必須為應用程序設置數字簽名。Android系統僅僅會在安裝的時候測試簽名證書的有效期,如果應用程序的簽名是在安裝之后才到期,那么應用程序仍然可以正常啟用。         

   Android通過數字簽名來 標識應用程序的作者和在應用程序之間建立信任關系,不是用來決定用戶可不可以安裝該應用程序。android的這個簽名由應用程序的作者完成,並不需要權 威的數字證書簽名機構認證,他只是用來讓應用程序包自我認證的。Android系統默認自動給應用程序簽名,ADT會自動使用debug密鑰為應用程序簽名,debug密鑰是一個名為debug.keystore的文件。

才發現原來不配置簽名信息 就是最大的問題 ~

 

查詢本機  $ sudo find / -name debug.keystore

找到位置位於電腦的:~/.android/debug.keystore,AndroidStudio打包時默認用的是此處的keystore簽名。

可想而知:每個機器都使用自己本地的keystore,那么install到設備時必然會出現簽名沖突的問題,解決辦法就是配置一個共同使用的keystore。

 

回到app下的build.gradle,在里面增加這段代碼

android {
    signingConfigs {
        debug {
            storeFile file('keystores/debug.keystore')
        }
        release {
            keyAlias 'androiddebugkey'
            keyPassword 'android'
            storeFile file('keystores/debug.keystore')
            storePassword 'android'
        }
    }

在app下新建keystores目錄,將debug.keystore文件放置在該目錄下,這樣共享代碼庫的其他人都能共享此簽名key。問題解決。。。

ps : debug.keystore文件具體怎么生成可在網上查詢,資料很多。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM