濮阳杆衣贸易有限公司

主頁 > 知識庫 > gradle+shell實現(xiàn)自動系統(tǒng)簽名

gradle+shell實現(xiàn)自動系統(tǒng)簽名

熱門標簽:地圖標注資源分享注冊 高德地圖標注公司位置需要錢嗎 北京外呼系統(tǒng)咨詢電話 襄陽外呼增值業(yè)務線路解決方案 廊坊地圖標注申請入口 合肥阿里辦理400電話號 慶陽外呼系統(tǒng)定制開發(fā) 怎么去掉地圖標注文字 海南人工外呼系統(tǒng)哪家好

 前言

有時候我們的應用需要系統(tǒng)級的權限來實現(xiàn)一些功能(如靜默安裝),這時候需要給應用打上系統(tǒng)簽名,常規(guī)操作打包apk,解壓apk,刪除META-INF中CERT.RSA和
CERT.SF,然后壓縮,用系統(tǒng)簽名工具簽名,一頓操作后可能十分鐘過去了,實在太過繁瑣,因此我們做了一些簡化,用gradle+shell幫我們實現(xiàn)自動化。

準備

1.android studio

2.系統(tǒng)簽名文件(signapk.jar、platform.x509.pem、platform.pk8)

3.如果是mac系統(tǒng),還需要libconscrypt_openjdk_jni.dylib這個文件

4.platform.x509.pem和platform.pk8是對應系統(tǒng)的簽名,不同廠家可能有不同的

 簽名文件,我這里的是Google原生的簽名文件。

5.文件在百度網盤

鏈接: https://pan.baidu.com/s/1_wGxfZcpmfmvCGPLSU-XWw 提取碼: d46k

6.本文以mac系統(tǒng)為例,windows的按著這思路,也差不多

編寫系統(tǒng)簽名腳本

#解壓
unzip -q app-release.apk -d ./release
#刪除cert
rm -f ./release/META-INF/CERT.RSA
rm -f ./release/META-INF/CERT.SF
#壓縮
cd ./release
for file in $(ls)
do
zip -r -q app-release-tmp.apk -xi $file;
done
mv app-release-tmp.apk ../
cd ..
#系統(tǒng)簽名
java -jar signapk.jar platform.x509.pem platform.pk8 app-release-tmp.apk app-sign.apk
#清理臨時文件
rm -f app-release-tmp.apk
rm -rf ./release

保存為sign.sh,與signapk.jar、platform.x509.pem、platform.pk8、libconscrypt_openjdk_jni.dylib放在同一目錄下,我這里是放在項目的

app/release/sign/目錄下

編寫打包和調用系統(tǒng)簽名腳本

#需注意配置一下路徑
#home 本shell放置絕對路徑
#debugDir assembleDebug 輸出路徑
#releaseDir assembleRelease 輸出路徑
#signDir 系統(tǒng)簽名文件路徑
home=/Volumes/Samsung_T5/android/Demo/
debugDir=$home/app/build/outputs/apk/debug/
releaseDir=$home/app/build/outputs/apk/release/
signDir=$home/app/release/sign/
#進入工作目錄
cd $home
#創(chuàng)建簽名后的輸出目錄$home/out
if [ ! -d out ];then
    echo "create directory out..."
    mkdir out
    echo "create directory out success"
fi
#打release包
echo "assembleRelease..."
./gradlew assembleRelease
echo "assembleRelease success"
#把release包移動到系統(tǒng)簽名目錄
mv -f $releaseDir/app-release.apk $signDir/app-release.apk
echo "system sign apk..."
#進入系統(tǒng)簽名目錄,執(zhí)行系統(tǒng)簽名
cd $signDir
./sign.sh
#把簽名好的包移動到$home/out中,并用時間重命名
cd $home
mv $quanyuyueSignDir/app-sign.apk ./out/app-sign-`date +%Y%m%d%H%M`.apk
echo "sign success"

保存上面代碼為package.sh,并放在工程目錄下,我的是$home目錄下。

ps:要打release包還需要配置下app/build.gradle

android {
    ...
    //配置簽名文件
    signingConfigs {
      release {
        storeFile file("你的簽名文件")
        storePassword "你的密碼"
        keyAlias "你的keyAlias"
        keyPassword "你的keyPassword"
      }
    }
    buildTypes {
      release {
        signingConfigs.release
        ...
      }
    }

編寫task調用package.sh腳本

在app/build.gradle中輸入

task getPackage(type: Exec) {
    executable "sh"
    args "-c", "../packge.sh"
}

這樣,我們只要執(zhí)行下這個task,就可以獲得系統(tǒng)簽名的apk了。

總結

以上所述是小編給大家介紹的gradle+shell實現(xiàn)自動系統(tǒng)簽名,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • Android Gradle依賴管理、去除重復依賴、忽略的方式
  • android studio更新gradle錯誤構建項目失敗的解決方法
  • Android Studio和Gradle使用不同位置JDK的問題解決
  • Jenkins使用Gradle編譯Android項目詳解
  • Gradle環(huán)境下導出Swagger為PDF的步驟詳解
  • Android Studio Gradle依賴沖突解決方法
  • 關于gradle你應該知道的一些小事
  • 基于Java Gradle復制項目模塊過程圖解

標簽:商丘 臺州 平頂山 鶴崗 鎮(zhèn)江 哈密 綿陽 株洲

巨人網絡通訊聲明:本文標題《gradle+shell實現(xiàn)自動系統(tǒng)簽名》,本文關鍵詞  gradle+shell,實現(xiàn),自動,系統(tǒng),;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《gradle+shell實現(xiàn)自動系統(tǒng)簽名》相關的同類信息!
  • 本頁收集關于gradle+shell實現(xiàn)自動系統(tǒng)簽名的相關信息資訊供網民參考!
  • 推薦文章
    百色市| 兴安盟| 福海县| 泽普县| 卓尼县| 泾源县| 常德市| 巨野县| 介休市| 岳普湖县| 贵阳市| 宜兴市| 论坛| 铜陵市| 荃湾区| 定州市| 原阳县| 玉树县| 塔城市| 新安县| 井研县| 股票| 寻甸| 额敏县| 六盘水市| 仁布县| 东莞市| 嘉荫县| 罗甸县| 八宿县| 东平县| 观塘区| 云安县| 五常市| 边坝县| 肇东市| 阿勒泰市| 津南区| 丰台区| 玛曲县| 昌宁县|