Android項目配置系統簽名

簡述

公司開發一款產品,需要在應用內打開谷歌瀏覽器,並向瀏覽器網頁中編輯框提交文本並執行回車事件,這時候我們想到了Instrumentation。

Instrumentation接口原本是用來對軟件進行測試而留出來的,但是可以模擬按鍵,前提是應用處於前臺,當應用處於後臺時,會提示

Injecting to another application requires INJECT_EVENTS permission

提示沒有 INJECT_EVENTS這個權限。沒則加之,在AndroidManifest.xml文件裏面添加該權限,再運行,問題還是沒有解決。

網上各種google各種百度,最後在stackoverflow
解決的方案有一種是需要將我們的應用userId修改成系統級別,即在manifest添加:

android:sharedUserId="android.uid.system"

配置系統簽名

1. 準備

  • 下載keytool-importkeypair工具
  • Android證書文件
    文件路徑:Android/build/target/product/security,包括platform.pk8和platform.x509.pem

2. 生成keystore文件

將keytool-importkeypair、platform.pk8和platform.x509.pem文件放在同一個目錄下,執行如下命令,會生成platform.keystore文件:

sh keytool-importkeypair -k android.keystore -p wangyy2019 -pk8 platform.pk8 -cert platform.x509.pem -alias wangyy
  • -k 表示生成keystore文件名
  • -p 表示新生成的keystore的密碼是什麼,這裏爲wangyy2019
  • -pk8 表示要導入的pk8文件的名稱,可以包括路徑,pk8文件用來保存private key的,是個私鑰文件。
  • -cert 表示要導入的證書文件,和pk8文件在同一個目錄,pem這種文件就是一個X.509的數字證書,裏面有用戶的公鑰等信息,是用來解密的,這種文件格式裏面不僅可以存儲數字證書,還能存各種key。
  • -alias 表示給生成的android.keystore取一個別名,這個名字只有我們在簽名的時候才用的到,這裏我們生成的文件名是platform。

這裏演示mac電腦操作流程,我把下載的keytool-importkeypair與platform.pk8和platform.x509.pem放到Downloads/keytok目錄下

android系統簽名.png

此時,keytool目錄下已自動生成android.keystore文件

3. AndroidManifest.xml修改

在項目的AndroidManifest.xml添加android:sharedUserId="android.uid.system"

4. Android Studio配置keystore

① 拷貝剛生成的android.keystore文件到項目工程目錄下(和app目錄同一級)

② 在項目工程的app/build.gradle 的android層級下添加:

    signingConfigs {
        Sign {
            keyPassword 'wangyy2019'
            storePassword 'wangyy2019'
            keyAlias 'wangyy'
            storeFile file('../android.keystore')
        }
    }

然後是

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // 添加release版本簽名
            signingConfig signingConfigs.Sign
                }
            }
        }
        // 添加debug版本簽名
        debug {
            signingConfig signingConfigs.Sign
        }
    }

至此,我們的打包的應用已經是系統簽名下的應用了。

今年年初我花一個月的時間收錄整理了一套知識體系,如果有想法深入的系統化的去學習的,可以私信我【安卓】,我會把我收錄整理的資料都送給大家,幫助大家更快的進階。

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