安卓是个开放平台,许多源代码都是开放的,这也注定了这个系统必定是会千姿百态的,对于喜欢个性化系统的童鞋来说,修改完后的apk文件(除系统apk外)一般都是要重新签名才能正常安装使用的,电脑端的就不说了,这里讲下手机端的签名方法,快捷方便,不用装java和配置环境变量哈。
请点击输入图片描述

当我们有需求对原apk更改签名时,可采用如下方式
有key的可跳到第2步,没有的在androidstudio中新建key
用rar等软件打开apk文件,然后删除“META-INF”文件夹即可。
其中-keystore后面是自己的key名称;
-storepass和-keypass对应上面新建key的两个密码;
-signedjar第一个参数是添加签名后的apk名称,后面是原apk名称;
key0是上面新建key的Alias名称;
-tsa是为了添加时间戳,添加该选项需要联网。
正常连接上数据线可直接安装
更改格式为.bat,批处理格式。
然后将要重签名的apk包(可以是多个)复制到APK_Folder文件夹,删除apk的签名文件,META-INF。
将证书(debug.keystore)复制到APK_Folder文件夹。
下载完后,点击安装。然后设置运行环境参数:
用鼠标右击“我的电脑”-属性-高级-环境变量
系统变量-新建-变量名:JAVA_HOME变量值:D:\ProgramFiles\Java\jdk1.7.0(这是我的安装
路径这个不是固定的,比如你安装到C:\ProgramFiles,就填C:\ProgramFiles\Java\jdk1.7.0)
项,无须另外新建,直接在后面加,但需用;与前面已有的项分隔开)
系统变量-新建-变量名:CLASSPATH变量值:
最后测试下环境变量是否设置成功
点开始菜单-运行-在这里输入cmd-回车-输入javac
如果出现如下信息:
其中,可能的选项包括:
-g生成所有调试信息
-g:none不生成任何调试信息
-g:{lines,vars,source}只生成某些调试信息
-verbose输出有关编译器正在执行的操作的消息
-deprecation输出使用已过时的API的源位置
-classpath路径指定查找用户类文件的位置
-cp路径指定查找用户类文件的位置
-sourcepath路径指定查找输入源文件的位置
-bootclasspath路径覆盖引导类文件的位置
-extdirs目录覆盖安装的扩展目录的位置
-endorseddirs目录覆盖签名的标准路径的位置
-d目录指定存放生成的类文件的位置
-encoding编码指定源文件使用的字符编码
-source版本提供与指定版本的源兼容性
-target版本生成特定VM版本的类文件
-help输出标准选项的提要
-X输出非标准选项的提要
-J标志直接将标志传递给运行时系统
恭喜,你的Java环境变量配置成功了!
'javac'不是内部或外部命令,也不是可运行的程序
说明这Java环境变量配置出错了,仔细检查下吧!
对apk签名的步骤(适用于找回apk,对空包进行签名)
1.复制java的jdk,bin目录的绝对路径(如果是默认安装应该和我的路径差不多)C:\ProgramFiles\Java\jdk1.8.0_111\bin
2.进入cmd窗口,进入bin目录(如果是新手,输入cdC:\ProgramFiles\Java\jdk1.8.0_111\bin)
将签名修改成自己签名的路径,生成的apk文件的名字路径修改一下,再输入需要签名的apk文件路径,最后输入自己签名的别名就可以
在某些特殊情况下,需要对已经生成的apk进行重新签名,或者对已经生成的apk更换签名版本(v1/v2/v3/v4)。如何实现呢?可以通过命令行对已生成的apk进行处理。
apksigner.jar通常包含在AndroidSDK中可。路径一般是在AndroidSDK/build-tools/{SDK版本}/lib/apksigner.jar
不同的SDK版本中均有一个,取最新版本的就好了。
使用压缩软件打开apk,删除包内/META-INF/文件夹及文件夹内所有文件,并重新压缩文件。
准备好签名证书及相关密码和需要刚处理过得apk文件
接着输入证书保护密码及别名密码。
可以从此命令的输出中看出当前生成的apk签名情况。
可以通过如下命令行参数进行控制
使用的签名版本还跟apk编译时使用的最低SDK版本有关,即min-sdk-version的值。如果设置的值大于等于26,即使添加--v1-signing-enabledtrue也无法通过上述步骤签V1版本的签名--仅有V2签名(AndroidStudio也是)。
可以对最后生成的apk通过执行如下命令尝试: