android 打包和签名 大致流程

首先是解包

注意 这里必须将cmd 的当前位置改到apktool 目录下, 不然就会报错说找不到 aapt.exe  , 当然也可以加入到系统path中

apktool d .apk folder 

这步之后就是修改smali 代码或者是.so文件了

改好之后使用

apktool b folder   

然后folder 文件里就会出现一个apk

之后就是签名问题了

签名有3条路走, 一条是使用jdk , 一条是使用android的signapk ,还有就是集成工具

1  创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入

D:\>keytool
-genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

/*说明:-genkey
产生密钥

       -alias
demo.keystore 别名 demo.keystore

       -keyalg
RSA 使用RSA算法对签名加密

       -validity
40000 有效期限4000天

       -keystore
demo.keystore */

D:\>jarsigner
-verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore

/*说明:-verbose
输出签名的详细信息

       -keystore 
demo.keystore 密钥库位置

       -signedjar
demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/

  注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。

引用  http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html

另外自己在操作过程中遇到一个问题,还有解决方法 :

keytool 错误: java.io.FileNotFoundException: android.keystore (拒绝访问。)

主要原因是JDK安装在C盘,没有写权限,所以报错

可以更改目录解决 改为如下

C:\Program Files\Java\jdk1.7.0_65\bin>keytool -genkey -alias andro

eyalg RSA -validity 30000 -keystore D:/keyStore/android.keystore

放在D盘,完美解决

2  android 源码自带的signapk工具  需要用到证书

1.进入<Android_Source_Path>/build/target/product/security,找到【platform.pk8】和【platform.x509.pem】系统密钥。

2.进入<Android_Source_Path>/build/tools/signapk找到SignApk.java,运行javac编译成SignApk.class

3.执行命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk

来源: <http://www.jb51.net/article/50847.htm>

3就是使用自动签名工具了, 比如androidresedit , 原理其实就是上述的第二条,只是自动化了一下。 当然签名目录中证书什么是可以换的

最终这3中方法都是可以生成签过名的apk的 ,当然 大牛看看就行,不要吐槽我们这些菜逼。。。

END

时间: 2024-09-29 14:07:22

android 打包和签名 大致流程的相关文章

android开发之应用打包签名混淆流程

项目做的差不多了,要签名,然后混淆防治被反编译,记录下流程 默认各种环境都是配置好了的. 主要分以下几步 1.生成ant打包所需的配置文件 2.生成应用签名的keystore,对apk签名 3.编写混淆文件,混淆代码,防止反编译 第一步,生成ant打包的配置文件 在项目根目录下执行指令:android update project -path . 会自动生成三个目录: build.xml,local.properties,proguard-project.txt 还有一个要自己建的ant.pro

Android进阶:十四、熟悉Android打包编译的流程

Android进阶系列性文章最后一篇,之后我会更新其他系列性文章,欢迎关注 从事Android高级研发,怎能不知道Android的打包流程呢?今天就为大家讲解Android打包的流程: Android 构建系统编译应用资源和源代码,然后将它们打包成可测试.部署.签署和分发的 APK.一般使用 Android Studio开发的时候使用Gradle构建工具包来自动执行和管理构建流程,同时也可以灵活地自定义构建配置.Gradle 和 Android 插件独立于 Android Studio 运行.所

Eclipse下配置Ant脚本 自己主动打包带签名的Android apk

尽管eclipse非常少用了,可是在古老的项目上还是会用到.一个麻烦事是打带签名包的时候.非常不方便.下边纪录下配置ant,自己主动打包带签名apk的过程,作为备忘.(PC环境为MAC) 1,第一步得安ant,下载相应安装包,解压后配置环境变量: export ANT_HOME="/Users/yanzi/work/apache-ant-1.9.4" export PATH=${PATH}:${ANT_HOME}/bin 通过which ant检查是否成功安装. 2,在项目文件夹下执行

Eclipse下配置Ant脚本 自动打包带签名的Android apk

虽然eclipse很少用了,但是在古老的项目上还是会用到.一个麻烦事是打带签名包的时候,非常不方便.下边纪录下配置ant,自动打包带签名apk的过程,作为备忘.(PC环境为MAC) 1,第一步得安ant,下载对应安装包,解压后配置环境变量: export ANT_HOME="/Users/yanzi/work/apache-ant-1.9.4" export PATH=${PATH}:${ANT_HOME}/bin 通过which ant检查是否安装成功. 2,在项目目录下运行:and

Windows系统下Ant自动编译打包并签名Android应用——实践篇

1.背景 项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从eclipse中导出签名APK,很是麻烦.于是想起了之前探索过的Ant自动签名打包.查看自己之前写的博客Windows系统下Ant自动编译打包并签名Android应用--探索篇,边动手边复习.但是后面遇到了一大串的问题... 2.问题解决过程 1).libs库中的第三方包 如果项目只是引用了第三方jar包,只要将jar包放入项目libs目录下就可以了,ant编译的时候会自动把第三方jar包加入进去的,没有任何问题. 2).

android 打包签名

1.Eclipse工程中右键工程,弹出选项中选择 android工具 → 生成签名应用包 2.选择需要打包的android项目工程 3.如果已有私钥文件,选择私钥文件 输入密码,如果没有私钥文件见第6和7步创建私钥文件 4.输入私钥别名和密码 5.选择APK包存储的位置,并完成设置,开始生成APK签名包 6.没有私钥文件的情况,创建私钥文件 7.输入私钥文件所需信息,并创建 其他精彩文章文章 在 android dialog中使用Autocompletetext大型网站架构设计-Solrmysq

android studio学习---签名打包的两种方式

注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行.签名就代表着自己的身份(即keystore),多个app可以使用同一个签名. 如果不知道签名是啥意思,请自行百度哦.在eclipse中签名的方法是:选中工程,邮件选择"export-android-export android application", 1.方式1:通过Android Studio进行签名: 选中app这个module,选择菜单栏"Build-Generate

Android应用程序签名过程和解析过程分析

在正式解释Android应用程序签名过程之前,作为铺垫,还得先讲讲最基本的一些概念. 非对称加密算法 非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥).公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密:如果用私钥对数据进行加密,那么只有用对应的公钥才能解密.因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法. 非对称加密算法是数字签名和数字证书的基础,大家非常熟悉的RSA就是非对称加密算法的一种实现. 消息摘要算法 消息摘要算法(Mes

【No.2 Ionic】Android打包

项目做完之后 接下来就是打包操作了,接下来直接说Android 打包操作 生成签名证书 keytool -genkey -alias vincentguo -keyalg RSA -validity 20000 -keystore vincentguo.keystore #说明: #    -genkey 产生密钥 #    -alias vincentguo 别名vincentguo #    -keyalg RSA 使用RSA算法对签名加密 #    -validity 20000 有效期限