Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >android 应用的证书签名跟系统签名

android 应用的证书签名跟系统签名

作者头像
全栈程序员站长
发布于 2022-06-27 12:39:57
发布于 2022-06-27 12:39:57
2K0
举报

大家好,又见面了,我是你们的朋友全栈君。

作为软件行业的从业者都知道,一款软件的开发过程中肯定会诞生两种版本,即debug版本和release版本,debug版本包含有调试信息,一般来说都要比release版本大,android应用当然也不例外

1.证书签名

并不是所有的apk文件都能成功安装到安卓设备上,android系统要求只有签名后的apk文件才可以安装,因此我们还要对生成的apk文件进行签名才行

在android studio中直接运行项目生成的都是测试版debug安装文件且android studio使用了一个默认的keystore文件进行了自动签名,该签名的位置可在android studio右侧的工具栏的gradle ->项目名->app->task->android->signingReport文件查看

方法一

程序的正式发布版release版本需要使用一个正式的keystore文件来进行签名,使用android studio生成签名文件的方式有两种,一种是使用android studio导航栏上的Build->Generate Signed Bundle/APK

上图的Android App Bundle文件用于上架Google Play商店的,使用这种类型的文件,Google Play可以根据用户的手机,只下发它需要的那部分资源.比如一个高分辨率的手机,是没有必要下载低分辨率目录下的图片的,一个arm架构的手机,也没有必要下载x86架构下的so文件,因此Android App Bundle文件可以显著的减少App的下载体积,但缺点是它不能直接安装到android设备上,也不能用于上架除Google Play之外的其他应用商店

不管选择创建的是Android App Bundle 文件还是APK文件,后面的流程都是一样的

既然你看到这篇博客了那就说明你还没有一个正式的keystore文件,所以还是点击Create new按钮,如果你已经有一个正式的文件,就选择Choose existing按钮

因为这里ljl.jks文件我已经创建过了,这里新建另一个文件Gerecoc.jks,点击ok

勾选记住密码,省的以后需要输入keystore密码

点击finish等一会就会生成apk文件

点击locate可以立即查看生成的apk文件

该文件名被我设置为固定文件名,如果未设置生成文件名则是app-release.apk

如果前面选择创建Android App Bundle文件则这里会得到一个.aab后缀的签名文件

方法二

使用Gradle生成

编辑app/build.gradle文件

然后点击右侧的工具栏Gradle->项目名称->app->Tasks->build

双击assemble会同时生成debug和release两个版本的文件

以上就是生成证书签名的方式

assemble就是用于生成APK文件的,他会同时生成debug和release版本,apk文件自动生成在app/build/outputs/apk目录下,release目录下的apk文件就是带有正式签名的apk文件,如果没有设置签名文件可能也会生成release目录apk,但是这个apk无法安装,如果强行安装会失败并提示没有没有证书

如图:

注意:证书签名可以生成release版本的apk,相比于使用默认证书生成的debug版本apk,release版本更小,运行速度更快,当然也可以直接发布debug版本的apk

2.系统签名

要实现apk静默安装,修改系统声音之类的功能,需要对apk进行系统签名,系统签名跟证书签名是不同的两个概念

系统签名需要系统证书,该系统证书是编译安卓版本的时候产生的文件,用于证明你的apk准许操作系统层级的指令,如果你想获得该证书则需要找为你提供安卓系统的厂家

如上图中的划线文件就是系统证书

如果要使用系统证书签名,则需要在AndroidManifest.xml中添加红线部分

注意:如果添加了上述红线部分的sharedUserId则一定要进行系统签名,否则编译出来的apk无法安装,如安装则会出现以下问题

安装失败,共享用户不兼容

所以一定要注意,一旦使用了sharedUserId标签则一定要进行系统签名

下面演示下系统签名的命令

java -jar signapk.jar platform.x509.pem platform.pk8 app-debug.apk app_signed.apk

该指令对应上图的文件目录结构,应该很轻易看懂

如上,执行指令后进行系统签名,生成了app_signed.apk

下面安装该系统签名apk

可以看到本次系统签名后的apk安装成功,且该apk可以控制系统层级的指令,如调整亮度,调整声音

系统签名的文件系统压缩包分享到百度网盘上了

链接:https://pan.baidu.com/s/16mcMb04M2ZpK2lq99MjLuQ 提取码:2duw

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133140.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android 系统签名实现的三种方式
在项目开发时,如果需要使应用具有系统权限,例如可以支持静默安装和卸载APK,此时就需要使用系统签名。 常用的系统签名方式包括在ubuntu环境下、手动签名和在AndroidStudio环境配置,三种方式中,实现最简单的是通过AndroidStudo方式,该方式的签名实现与正常的APK签名相同,唯一不同的就是签名文件是通过系统生成的。 注意,无论采用何种签名方式,如果想实现具有系统权限的应用,在APK生成时,都需要在AndroidManifest.xml中配置android:sharedUserId=“android.uid.system”,如下所示
全栈程序员站长
2022/06/24
2.7K0
Android 系统签名实现的三种方式
最详细的AS百度地图(BaiduMap)开发教程
依旧喜欢eson. 来首背景音乐。另外星战8,1月6号首映,筒子们赶快带上女票提前买票吧!
开发者技术前线
2020/11/23
1.2K0
最详细的AS百度地图(BaiduMap)开发教程
android apk 签名(平台和普通签名)
因为做了太多的终端项目,客户总会有自己的apk提供,这时候各种签名问题就来了,最近整理了一下相关知识,分享给大家。
全栈程序员站长
2022/09/06
5.4K0
android apk 签名(平台和普通签名)
Android系统签名以及生成keystore秘钥
Android系统中,所有的APP都需要签名,来保证报名在设备上是唯一的,避免相同包名应用被覆盖;系统签名意味着对于将这个APP视为系统APP,具有更高的权限,比如可以开机自启动,从后台启动activity等。
全栈程序员站长
2022/08/31
2.9K0
Android Studio中使用Gradle打包
首先要注意一点,Android Studio中把proguard.txt已经命名为proguard-rules.pro,由此可见,採用Gradle打包,混淆规则文件的名称是不重要的。能够自己随便命名。
全栈程序员站长
2022/07/10
1.4K0
Android Studio中使用Gradle打包
Android进阶-apk系统签名
除了直接使用signapk.jar签名外,还可以将签名文件生成keystore文件,然后给apk进行签名。 定位到签名文件和apk目录,然后输入如下命令: 1.
全栈程序员站长
2022/08/31
1.5K0
Android进阶-apk系统签名
把Android系统签名弄成jks
假设我们得到了系统签名文件:platform.pk8、platform.x509.pem,还需要一个用于签名的文件:signapk.jar,这里提供了一份下载连接,可供练习使用:链接:https://pan.baidu.com/s/1OiBcVyhZVqTulb6HXwcqHA 提取码:7g81
全栈程序员站长
2022/08/31
2.1K0
把Android系统签名弄成jks
Android 对apk进行重签名和查看签名(window 和mac)及生成签名
生成签名文件:其实是有很多工具可以做到,这里不过是想用命令来生成 其命令如下:生成的签名默认在c盘根目录下 keytool -genkey -alias aaaa.keystore -keyalg RSA -validity 2000 -keystore newandroid.keystore 备注说明:-alias后面跟着的是别名(android.keystore) -keystore后面跟着的是具体的签名文件(及签名文件的命名–newandroid.keystore) 当使用这个命令生成后,会有个警告,不符合pkcs12标准,需要消除掉(也可以不消除),使用如下命名: keytool -importkeystore -srckeystore android.keystore -destkeystore newandroid.keystore -deststoretype pkcs12 将上面的android.keystore签名迁移到newandroid.keystore中,其各种参数不变。 截图如下
全栈程序员站长
2022/08/10
6.4K0
Android 对apk进行重签名和查看签名(window 和mac)及生成签名
Android studio生成签名导打包的方法
如果你已经有了签名文件.jsk那么就选择③导入文件,这时①中就是文件路径,④是keystore的密码,⑤是别名,⑥是文件的密码。
程思扬
2022/01/10
1.4K0
Android studio生成签名导打包的方法
Ionic3 Android签名
app签名,相当于是app在Anndroid系统上的一个认证,Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。应用市场上APP签名不允许相同,也不会相同,但允许有相同的包名,相同签名的APP高版本可以覆盖低版本。
spilledyear
2018/08/21
1.3K0
Ionic3 Android签名
React Native之打包
用React Native开发好APP之后,如何将APP发布到市场以供用户使用呢?不管是Android还是ios等原生app走的都是:签名打包—>发布到各store这两大步骤。本文将对Android和ios两大平台打包过程做一个简单的介绍。 Android平台打包 在Android原生的app开发打包过程中,主要有两种发布方式:一种是借助于命令行操作,另外一种是借助于Android Studio进行发布。 Android Studio打包 借助Android studio进行打包的,一次点击build->g
xiangzhihong
2018/02/06
2.1K0
React Native之打包
Android应用签名、反编译与防止二次签名
我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份即keystore。小编所在项目,遇到应用被恶意篡改的情况。新版本客户端加入了在线签名逻辑以及防止二次签名逻辑。小编对相关知识加深了理解,并运用在项目测试中,分享给大家。
用户5521279
2019/06/02
5.5K0
Android系统签名生成[通俗易懂]
生成系统签名,首先需要下面的两个系统签名文件: platform.pk8 platform.x509.pem 这两个文件可以从Android源码中获取,具体路径为: build/target/product/security/ 将上面的两个文件放到同一个文件夹,同时也将自己生成的签名文件放置在这个文件夹下,从gitHub上下载工具keytool-importkeypair 执行下面的命令就可以生成系统签名文件了。
全栈程序员站长
2022/08/31
3.5K0
android apk获取系统签名[通俗易懂]
一 准备材料 1 signapk包 1)通常在源码环境的build\tools\signapk目录下,包含如下文件:
全栈程序员站长
2022/06/24
2.9K0
android apk获取系统签名[通俗易懂]
Android Studio2.3打包apk
话说从Eclipse转化到Android Studio后,一直都没打个包,发个版本,今天想提交测试打个版本,丫的一看,和Eclipse不一样了。在此记录下,顺便拓展下其他小知识点,方便你我他。
贺biubiu
2019/06/10
9720
安卓系统签名方法2则
最近一个安卓的项目,本来是使用安卓板4.2的;但由于生产需求将原来的单板集成到整体(显示触屏+安卓)。由于其提供的样板是6.0。整个程序的主功能运行还可以,就是无法写日志和播放本地视频。于是研究一下,发现原来是他们提供的安卓未root导致的。于是跟供应商联系给root文件,谁知这丫的不给,就给了个安卓的系统签名。。好吧,给系统签名就重新编译吧。但过程不是太顺利,花了差不多一天时间进行处理;总算搞掂,现在分享一下成果吧。
谭广健
2020/01/16
2K0
八、从华为HMS Core集成过程看密码学知识
  会让你输入包名,每个包名对应一个应用,在这个应用下会有相应的配置,不同的应用会有不同的配置,所以这里才让你输入包名。而且运行apk的时候,hms的sdk会根据你的包名去匹配后台该包名底下的配置,然后进行验证。
砖业洋__
2023/05/06
6880
八、从华为HMS Core集成过程看密码学知识
相关推荐
Android 系统签名实现的三种方式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档