1. 生成Android APK包签名证书
1). 在doc中切换到jdk的bin目录
cd C:\Program Files\Java\jdk1.6.0_18\bin
2). 运行下面的命令
keytool –genkey –alias android123.keystore –keyalg RSA –validity 20000 –keystore android123.keystore
/*解释:keytool工具是Java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias mine.keystore表示证书别名为:mine
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 20000表示有效时间20000天( K3
-keystore mine123.keystore表示要生成的证书名称为mine123
*/
输入完回车后屏幕显示:
输入keystore密码:[密码不回显](一般建议使用20位,最好记下来后面还要用)
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
[Unknown]:lili
您的组织单位名称是什么?
[Unknown]:snoopy
您的组织名称是什么?
[Unknown]:snoopy team
您所在的城市或区域名称是什么?
[Unknown]:beijing
您所在的州或省份名称是什么?
[Unknown]:beijing
该单位的两字母国家代码是什么
[Unknown]:CN
CN=lili, U=snoopy, O=snoopy team, L=beijing, ST=beijing, C=CN正确吗?
[否]:Y
输入< mine.keystore>的主密码
(如果和keystore密码相同,按回车):
查看C:\Program Files\Java\jdk1.6.0_18\bin,生成了以后签名用的证书Key:mine123.keystore
这里,大家如果试过在eclipse中生成一个签名文件时,它的大小也是2kb,同时生成过程中,还是会让填写别名的。
2. 删除之前的签名文件
1). 用解压工具解压缩apk文件(如:解压到D:\Sign\PhoneBook)
压缩包内容解析:
- AndroidManifest.xml
该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息[ , ],如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具[ , ]解开,具体命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml
- META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
- res目录
res目录存放资源文件。包括图片,字符串等等。
- lib目录
lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了,呵呵呵!
- assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个com.example..android.apis.content 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java中。同理,asset也可以放置其他文件。
- classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。
- resources.arsc
编译后的二进制资源文件 ”
2). 找到下面的目录META-INF,删除目录META-INF
3). 将PhoneBook整个文件夹用zip工具,重新打包成zip压缩包,然后更改后缀为apk (注意:产生的PhoneBook.zip中没有二级根目录)
3. 重新签名APK文件
1). 将证书复制到与需要重新签名的apk文件相同的目录下(如:复制到D:\Sign)
2). 在doc中切换到需要重新前面的apk文件的目录下
cd D:\Sign
3). 运行下面的命令
jarsigner –verbose –keystore mine123.keystore –signedjar PhoneBook_signed.apk PhoneBook.apk mine.keystore
/*解释:hjarsigner是Java的签名工具
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的mine123.keystore签名证书文件。
-signedjar PhoneBook_signed.apk表示签名后生成的APK名称,PhoneBook.apk表示未签名的APK Android软件, mine.keystore表示别名
*/
输入完回车后屏幕如下图显示:
查看D:\Sign目录,已生成重新签名后的PhoneBook_signed.apk文件
另外,有时候会发现这种方式打出的APK包在某些地方用不了,文章《简单修改APK和重新签名》提供了一个更为便捷的方案。
参考资料:
相关推荐
在Android开发中,有时我们需要对APK文件进行反编译和重新打包,这通常是出于调试、学习或二次开发的目的。本文将详细介绍如何使用dex2jar和jd-gui工具来反编译APK中的.dex文件,然后用apktool进行资源解析,最后...
有时候,我们需要对已经签名的APK进行重签名,例如在进行二次打包、插件化开发或者分发时。在这样的情况下,手动操作不仅耗时且容易出错,因此使用shell脚本自动化这个过程可以提高效率和准确性。 首先,让我们理解...
在APK签名过程中,jar文件扮演着重要角色。`.jar`文件是Java类库的容器,包含可执行的字节码。在Android开发中,`.dex`文件(Dalvik Executable)是最终运行在Android设备上的格式,由`.jar`或`.class`文件转换而来...
签名工具有JDK自带的keytool和 jarsigner,或者使用专门的APK签名工具如APKSigner。生成签名文件(Keystore)后,使用jarsigner命令对APK进行签名。 4. **APK的美化工作**:APK的美化不仅仅是视觉上的优化,也包括...
在“Android-世界上最小的Android APK”中,开发者必须对这些部分进行极致压缩和优化。这可能包括: 1. **代码优化**:使用最简洁的代码实现功能,甚至可能利用Java字节码级别的优化。 2. **资源压缩**:去除不必要...
"Android APK反编译"是一个针对APK文件进行逆向工程的过程,旨在揭示其内部工作原理,理解代码逻辑,或者进行二次开发。这个过程通常用于安全分析、漏洞挖掘、学习和调试。下面我们将深入探讨APK反编译的相关知识点...
工具集通常会包含签名和打包的选项,以便对修改后的APK进行打包和签名。 4. **动态代码分析**:对于一些使用了动态加载技术的应用,可能还需要配合动态调试工具,如 Frida 或 Xposed,来观察运行时的行为。 5. **...
8. **修改与重打包**:完成分析后,可能需要对APK进行修改,如替换资源、修复漏洞、添加调试信息等。使用apktool、signapk等工具可实现重新打包和签名。 9. **逆向工程技巧**:理解和利用Android系统API,结合调试...
13. **Android App发布流程**:签名证书的创建、APK打包、版本控制和Play Store的上线流程。 这些书籍通过深入浅出的方式,帮助开发者提升Android应用开发的专业技能,对于想要在Android领域进一步发展的程序员来说...
本篇文章将详细介绍如何在Android中对APK包中的XML文件进行解密,以及这一过程涉及的相关技术。 首先,我们需要理解APK的结构。APK本质上是一个ZIP文件,包含以下关键部分: 1. **AndroidManifest.xml**:这是应用...
5. 签名和优化APK:由于重新打包的APK丢失了原有的签名,所以需要使用JDK的 jarsigner 工具进行签名。之后,使用`zipalign`工具进行优化,以确保APK符合Google Play的发布要求。 6. 安装APK:最后,你可以通过在...
2. **APK签名**:使用`jarsigner`工具对每个APK进行签名,指定keystore路径、别名和密码。 3. **ZIPALIGN优化**:签名后的APK需通过ZIPALIGN工具进行对齐处理,提高加载速度。 自动化工具: 1. **批量签名工具mac版...
3. **获取apk签名信息**:APK的签名用于验证应用的身份,确保未被篡改。获取签名信息通常需要用到`aapt`(Android Asset Packaging Tool),也是Android SDK的一部分。在Python中,我们可以调用`subprocess`模块执行...
11. **发布与应用商店优化**:指导如何打包APK,进行签名、版本控制,以及在Google Play Store上发布应用,同时关注应用的ASO(App Store Optimization)策略。 12. **最新特性与最佳实践**:涉及最新的Android版本...
5. **集成系统签名证书**:在一些情况下,可能需要使用系统的签名证书对应用进行签名,例如系统应用。这通常涉及读取系统证书路径并将其用于签名过程。在`build.gradle`中,可以使用类似上面签名配置的方法,只是...
9. **应用程序发布和调试**:涵盖APK的打包、签名和发布流程,以及使用ADB和Android Studio进行调试的技巧。 10. **性能优化**:讨论如何提高应用程序的性能,包括内存管理、CPU使用率优化、图形渲染等方面。 通过...
- **反编译与逆向工程**:对APK进行反编译可以揭示其内部结构,有助于学习开发技巧,但同时也可能导致隐私泄露和知识产权侵犯,因此应谨慎操作。 总之,APK提取器是Android用户和开发者不可或缺的工具之一,它使得...