⑴ android 微信開放平台,如何獲取應用簽名
在微信開放平台申請app應用的時候,遇到要填寫 應用簽名 一欄。
找到簽名文件
keytool -list -v -keystore xxx.keystore
證書指紋節點下的MD5值轉成小寫,去掉冒號。
首先跟隨 生成keystore和應用簽名 ,生成 .jks 簽名文件,
然後跟隨 微信開放平台Android應用簽名的本質及如何獲取 的第三、四步,生成帶簽名的apk,並用專門的工具查看應用簽名。
最後用工具查看到應用簽名後,我們發現,其實它就是keystore文件的MD5值。
這樣,我們就能夠 查看應用簽名了
如果你在 修改簽名 後,進入微信授權頁面失敗,且提示"應用簽名與微信開放平台上的簽名不一致",有可能是 微信緩存 的緣故。
根據 android之微信開放平台修改簽名 ,只要清理微信緩存,或重裝微信即可。
接下來還有一個問題沒解決:
解決方法參考 Android Studio直接運行調試簽名包
但這樣的做法會顯示暴露keystore信息,所以跟隨 Android Studio的兩種模式及簽名配置 的後半部分,可以讓項目間接引入keystore信息。
⑵ androidstudio項目簽名打包生成apk出錯整理
本人由於一些誤操作接觸到打包文件的問題,故作此文避免再次踩坑。
1.入口:build->generate signed bundle/APK,打開後如下圖1.1:
2.選中apk打包,進入next:
3.選擇打包類型:
4.箭頭所指即為生成的混淆+簽名後的打包apk文件。(*簽名文件不可以隨便更改,如果有申請第三方的功能,都需要這個簽名文件去檢驗的,比如說集成了微信支付,我們汪判換簽名文件的話,微信那邊就會檢驗不通過)
5.本文重點並非上述步驟,而是我自己重新生成了一個密鑰後,打包文件變成了.aab後綴文件。於是我想研究下它的打包過程和原理:
5.1在我們的build.gradle中可以更新打包文件版本號名稱(自己配一下):
5.2簽名文件會在此處進行對應生成信息:
5.3當然,你的項目文件也會對應生成相應的簽名文件,例如我此處的文件為yoocarjks.jks:
5.4自己配一下打包生成文件的命名:
以上over
6.*問題點:
6.1.簽名文件生成的亂碼是些啥?
6.2.由於我當時把項目扔垃圾桶了,還有些文件並沒有搞清楚是幹嘛的,如下圖:
buildoutputcleanuo.lock/executionhistory.bin/executionhistory.lock/filehashes.bin/filehashes.lock/outputfiles.bin/xxx.app.iml這些文件分別幹嘛的,從包名看像是打包生成的文件。
作此文激勵下自己空了去學習查閱彎桐下,若有知道的小夥伴歡迎留言分埋陵坦享~此文會繼續追更~
7.1關於xxx.app.iml看到一篇不錯的出錯解決方案:
https://blog.csdn.net/qq_38998213/article/details/81907253
設計原理如下:
這個文件,後續遇到問題我再深入了解下
⑶ Android Studio 之簽名
通過簽名可以確保數據來源的可靠性和數據的不可篡改性
對 Apk 進行簽名,也就是在 Apk 中寫入一個指紋,寫入指紋後,Apk 中有任何修改,都會導致這個指紋無效,Android 系統在安裝 Apk 進行簽名校驗時就會不通過,進而無法安裝該 Apk
如上圖:
通常的簽名驗簽過程中,接收方收到消息後,會先向 CA 機構驗證證書的合法性,再進行簽名校驗。但 Apk 的證書通常由開發者自己製作,沒有向 CA 機構申請,Android 系統在安裝 Apk 時也並沒有校驗證書本身的合法性,只是從證書中提取公鑰和加密演算法,因此,如果對第三方 Apk 重新簽名,也能安裝到沒有安裝過這個 Apk 的系統中
keystore 文件包含私鑰、公鑰和數字證書,分為很多種,Android 使用的是 Java 標准 keystore 格式 JKS(Java Key Storage)
Android App Bundle:用於通過 Google Play 發布的應用,需要升級到AS 3.2 以上版本才支持App Bundle 格式;
APK:用於創建可部署到設備上的簽名 APK
點擊 Finish 就會生成簽名文件與簽名後的 Apk
當我們需要升級 Apk 版本的時候,需要再次對 Apk 文件進行簽名,可以通過配置 build.gradle 讓其自動生成簽名後的 Apk
如果你的項目是開源的,需要把你的簽名信息寫在 local.properties 中,然後在 .gitignore 配置文件中加入 local.properties ,這樣 local.properties 就不會提交到開源項目中,簽名信息也就不會被人獲取
local.properties:
app/build.gradle:
有時候我們的 apk 中某些功能需要系統簽名,例如靜默安裝。測試系統簽名的 apk,需要 root 許可權,而帶 Google APIs 的模擬器不能 root,因此要注意不能選擇帶 Google APIs 的模擬器
下面執行的操作都是在 linux 中,如果 apk 是 window 中生成的,需要拷貝到 linux 操作,再將生成的系統簽名過得 apk 再拷貝到 window,比較麻煩,可以考慮後面的自動系統簽名,還是需要在 linux 操作一次,不過之後就可以只在 window 操作了
這兩個文件在目錄 aosp/build/target/proct/security 下,如下圖
在目錄 aosp/prebuilts/sdk/tools/lib 下,如下圖
將前面獲取的 platform.pk8 、 platform.x509.pem 和 signapk.jar 文件放到需要簽名的 apk 同一個目錄,執行以下命令
如果出現上面的錯誤:Failed to load any of the given libraries: [conscrypt_openjdk_jni-linux-x86_64, conscrypt_openjdk_jni-linux-x86_64-fedora, conscrypt_openjdk_jni]
解決方法:
到目錄 aosp/prebuilts/sdk/tools/linux/lib64 下,復制 libconscrypt_openjdk_jni.so 文件到需要簽名 apk 的同一個目錄,並將命令改為
自動進行系統簽名的原理是:先生成一個 system.jks 文件,使用 keytool-importkeypair 對 system.jks 文件進行系統簽名,再 build.gradle 和 local.properties 進行配置,直接使用帶有系統簽名的 system.jks 對 apk 進行簽名,這樣編譯生成的apk文件就自帶系統簽名了
按照前面的方法,生成一個 system.jks 文件,此時是在 window 系統中操作的
進入 keytool-importkeypair 目錄,將 system.jks、platform.pk8、platform.x509.pem 文件拷貝進來,拷貝之後的目錄結構為
使用 linux 中修改過的帶有系統簽名的 system.jks 文件將 window 中最開始生成的 system.jks 覆蓋掉,再像前面的自動簽名部分一樣,修改 build.gradle 和 local.properties 的配置,之後生成的 apk 就是系統簽名過的了
測試方法是,在 AndroidManifest.xml 中添加 android:sharedUserId="android.uid.system" 後安裝到 非 Google APIs 的模擬器上 , Google APIs 的模擬器不能 root,無法安裝
會發現只有使用 system.jks 文件簽名後才能安裝,否則安裝失敗,會報以下的錯誤:
⑷ android studio怎麼查看apk 簽名
1、查看自己的應用簽名
可以通過兩種方式查看
(1) debug的apk通過Eclipse查看,
eclipse-view-signatures
(2) 某個keystore簽名的應用,通過
Java
keytool -list -keystore E:\Trinea\keystore\appsearch.keystore
1
keytool -list -keystore E:\Trinea\keystore\appsearch.keystore
查看,會要求輸入簽名密碼,默認為android,
keytool-list-view-signatures
2、查看三方應用或是系統應用簽名
用winrar打開待查看的apk,將其中META-INF文件夾解壓出來,得到其中的CERT.RSA文件,通過
Java
keytool -printcert -file META-INF/CERT.RSA
keytool -printcert -file META-INF/CERT.RSA
命令列印證書信息,如微信證書信息
keytool-printcert-view-signatures
可以查看簽名的MD5、SHA1、SHA256值及簽名演算法
PS:網路地圖API需要簽名做為安全碼一部分實在有點不能理解,太麻煩了。
⑸ 獲取APK/簽名文件的SHA1證書,MD5
在發布應用的時候,需要通過keystore文件對apk包進行簽名,才能發布到市場上。
在使用微信平台服務時或者其他需要提供MD5值的時候,該如何獲取APK/簽名文件的SHA1證書,MD5呢?
提供三種種方式:
1.通過Android Studio的命令輸入來獲取:
keytool -list -v -keystore xxx.jks
keytool -list -v -keystore xxx.keystore
2.通過解壓apk來獲取:
1) 將apk修改後綴為 .rar文件後解壓;
2) 進入解壓後的META-INF目錄,該目錄下會存在文件CERT.RSA
3) 在該目錄下打開cmd,輸入命令 :keytool -printcert -file CERT.RSA
3.通過Eclipse獲取
依次在 Eclipse 中打開 Window -> Preferances -> Android -> Build。
Well done!