由于某些限制,会有这样的需求:拿不到apk源码的情况下要对其中的一些资源进行修改,在Android签名的限制下,直接解压修改会导致签名不一致,这样的apk文件在手机上是无法被安装的,这样就只能对apk进行重新签名来生成新的apk包。从另外一个角度上来说,这也是从系统的级别来保证安全:一个被特定私钥签名的apk是无法被篡改且无法抵赖的。
要对apk进行重新签名,首先要生成自己的公私钥对,然后删除apk中原有的签名信息再对apk进行重新签名。通过解压可知,apk的签名信息全都存在于META-INF中,删除这个文件,原apk就变成了一个未签名的apk。
后面的做法摘自http://blog.csdn.net/zengyangtech/article/details/5801708,感谢原作者的探索。
C:/Program Files/Java/jdk1.6.0_10/bin>keytool -genkey -alias android123.keystore
-keyalg RSA -validity 20000 -keystore android123.keystore
输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
[Unknown]: android123
您的组织单位名称是什么?
[Unknown]: www.android123.com.cn
您的组织名称是什么?
[Unknown]: www.android123.com.cn
您的组织名称是什么?
[Unknown]: www.android123.com.cn
您所在的城市或区域名称是什么?
[Unknown]: New York
您所在的州或省份名称是什么?
[Unknown]: New York
该单位的两字母国家代码是什么
[Unknown]: CN
CN=android123, OU=www.android123.com.cn, O=www.android123.com.cn, L=New York, ST
=New York, C=CN 正确吗?
[否]: Y
输入<android123.keystore>的主密码[img][/img]
(如果和 keystore 密码相同,按回车):
通过以上步骤可以获得一个keystore,里面存储的是公私密钥信息。
接下来就可以签名了。
执行下面这句jarsigner -verbose -keystore test.keystore -signedjar test_signed.apk test.apk test.keystore 就可以生辰签名的apk文件,这里输入文件android123.apk,最终生成android123_signed.apk为Android签名后的APK执行文件。下面提示输入的密码和keytool输入的一样就行了
这里-keystore 里是刚才生成的密钥
-signedjar 第一个参数test_signed.apk是输出apk,test.apk是原apk,testkeystore是刚才生成的密钥对的别名
执行完毕之后就可以得到重新签名的apk了。
更加详细的参数解释可以在原作者博客里找到。
分享到:
相关推荐
在Android系统中,APK签名是一个至关重要的过程,它确保了应用的完整性和开发者身份的验证。在Android 10中,这个过程没有本质的变化,但随着系统的更新,签名文件的作用和安全要求更加严格。本篇文章将深入探讨...
这个工具可以帮助开发者对他们的APK进行签名,以确保其能够在用户的设备上正常安装和运行。由于微信官方的下载链接已经失效,这款工具可能成为一个备用资源。 首先,我们来了解一下Android应用签名的重要性。在...
接下来,我们将深入探讨APK签名的概念、作用,以及如何进行重新签名。 首先,我们来了解**APK签名**的基本概念。在APK开发完成后,为了确保其来源可信和防止篡改,开发者会使用一个私钥对APK进行数字签名。这个签名...
Windows版本的Android Apk签名工具是Android SDK工具包的一部分,它允许开发者使用密钥对APK进行签名。这个工具通常包括`jarsigner`命令行工具和`zipalign`优化工具,它们对于发布高质量的Android应用至关重要。 三...
这通常涉及到对APK进行系统签名的过程。本教程将详细解释如何使用提供的"android开发apk进行系统签名工具"来为你的应用程序赋予这些权限。 首先,理解系统签名的概念至关重要。在Android系统中,签名是验证应用来源...
APK签名的过程主要包括以下几个步骤: 1. **生成密钥对**:首先,开发者需要使用密钥生成工具(如Java的keytool)创建一个包含公钥和私钥的密钥对。私钥用于签名,而公钥则用于验证签名。 2. **构建APK**:开发...
在Android应用开发中,APK签名是一个至关重要的步骤,它确保了应用的完整性和来源的可信性。在Windows环境下,开发者通常使用特定的工具来对APK进行签名,以使其能够在Android设备上顺利安装和运行。本文将详细介绍...
本文将详细讲解Android APK的打包和签名过程,以及如何使用Eclipse、IntelliJ IDEA等工具进行签名操作。 首先,理解签名的意义至关重要。Android应用的签名主要用于确认应用的来源和确保其完整性。每个开发者的签名...
在Android开发过程中,有时需要对已有的APK文件进行重新签名。例如,在某些情况下,原始的签名密钥可能丢失或出于安全考虑需更换签名密钥;又或者是在进行二次打包时,需要确保应用的完整性和安全性。本文将详细介绍...
在Android系统中,APK签名是一项至关重要的过程,它确保了应用的安全性和完整性。APK是Android应用程序的打包格式,包含了所有的代码、资源文件以及元数据。本文将深入探讨APK签名的概念、目的、流程以及相关工具的...
在Android开发过程中,Apk签名是一项至关重要的步骤,它确保了应用的完整性和开发者身份的认证。Android系统使用SHA1-RSA算法进行签名,保证了应用程序的不可篡改性。本文将详细介绍三种Android Apk签名的方法。 1....
一、APK签名的重要性 1. **验证身份**:签名是证明应用来源合法性和开发者身份的方式,确保用户下载的是来自可信源的软件,而非恶意篡改的版本。 2. **权限控制**:只有经过签名的APK才能安装到Android设备上,并且...
7. **APK签名** 使用JDK的jarsigner工具对未签名的APK进行签名: ``` jarsigner -keystore key.keystore -storepass keystore.password -signedjar signed.apk unsigned.apk keyalias ``` 参数说明: - `-...
首先,理解APK签名的重要性。Android系统要求所有安装的APK必须经过签名,签名的过程是对APK的内容使用私钥进行加密,验证应用的完整性和开发者身份。默认情况下,每个开发者都会有自己的签名,用于发布应用。然而,...
Android Apk签名工具是开发者用来对Apk进行签名的软件工具,它可以简化这一过程。这个工具通常包含以下功能: 1. 生成密钥:开发者可以使用工具创建一个密钥对,包括私钥和公钥。私钥由开发者保管,用于签名Apk;...
我们同样可以将Eclipse生成的apk按照场景一的方法进行重新签名,再安装到我们的设备上。但是,有时可能我们会经常修改apk源码进行调试验证,如果每次都把apk拿出来进行重新签名,再安装,这样确实麻烦了一些。...
这个过程涉及到了签名工具,正如标题所示,“Android APK签名工具”正是用于这个目的。当APK的数字签名过期或者在反编译修改了APK内部文件后,就需要用到这样的工具来重新签名。 签名的过程主要包括以下几个关键...
本文将详细介绍如何使用Java JDK自带的`jarsigner`工具对Android APK进行签名。 #### 二、签名工具介绍 **jarsigner** 是Java Development Kit (JDK) 自带的一个工具,主要用于数字签名JAR文件,包括Android APK...
在Android应用开发中,APK签名是一个至关重要的步骤,它确保了应用的完整性和开发者身份。当遇到"android.keystore 拒绝访问"的问题时,通常是因为权限问题或者keystore文件损坏。针对这种情况,我们可以借助第三方...