热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gradle+shell实现自动系统签名

这篇文章主要介绍了gradle+shell实现自动系统签名的相关资料,需要的朋友可以参考下

 前言

有时候我们的应用需要系统级的权限来实现一些功能(如静默安装),这时候需要给应用打上系统签名,常规操作打包apk,解压apk,删除META-INF中CERT.RSA和
CERT.SF,然后压缩,用系统签名工具签名,一顿操作后可能十分钟过去了,实在太过繁琐,因此我们做了一些简化,用gradle+shell帮我们实现自动化。

准备

1.android studio

2.系统签名文件(signapk.jar、platform.x509.pem、platform.pk8)

3.如果是mac系统,还需要libconscrypt_openjdk_jni.dylib这个文件

4.platform.x509.pem和platform.pk8是对应系统的签名,不同厂家可能有不同的

 签名文件,我这里的是Google原生的签名文件。

5.文件在百度网盘

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

6.本文以mac系统为例,windows的按着这思路,也差不多

编写系统签名脚本

#解压
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 ..
#系统签名
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/目录下

编写打包和调用系统签名脚本

#需注意配置一下路径
#home 本shell放置绝对路径
#debugDir assembleDebug 输出路径
#releaseDir assembleRelease 输出路径
#signDir 系统签名文件路径
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
#创建签名后的输出目录$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包移动到系统签名目录
mv -f $releaseDir/app-release.apk $signDir/app-release.apk
echo "system sign apk..."
#进入系统签名目录,执行系统签名
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"
}

这样,我们只要执行下这个task,就可以获得系统签名的apk了。

总结

以上所述是小编给大家介绍的gradle+shell实现自动系统签名,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!


推荐阅读
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 缤果串口网络蓝牙调试助手的特点和下载链接
    本文介绍了缤果串口网络蓝牙调试助手的主要特点,包括支持常用的波特率、校验、数据位和停止位设置,以及以ASCII码或十六进制接收或发送数据或字符的功能。该助手还能任意设定自动发送周期,并能将接收数据保存成文本文件。同时,该软件支持网络UDP/TCP和蓝牙功能。最后,提供了腾讯微云和百度网盘的下载链接。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
  • 使用J2SE模拟MVC模式开发桌面应用程序的工程包的介绍
    以我开发过的一个娱乐管理系统为例:下图为我系统的业务逻辑的MVC流程:下图为以Eclipse开发中各包的说明:转载于:https:blog ... [详细]
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
author-avatar
Yatmiiml
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有