欢迎来到皮皮网网首页

【蓝梦源码】【streamcql源码分析】【websocket c源码】apk签名源码

来源:低层源码 时间:2024-11-24 11:08:43

1.如何对Android的APP进行签名
2.Android系统签名
3.apk签名工具
4.安卓apk反编译、名源码修改、名源码重新打包、名源码签名全过程
5.使用apksigner 对APK进行签名

apk签名源码

如何对Android的APP进行签名

       1.签名的步骤

       ã€€ã€€a.创建key

       ã€€ã€€b.使用步骤a中产生的key对apk签名

2.具体操作

  方法一: 命令行下对apk签名(原理)

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

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

       /*说明:-genkey 产生密钥

              -alias demo.keystore 别名 demo.keystore

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

              -validity 有效期限天

              -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采用上述步骤签名。

  方法二:使用Eclipse导出带签名的apk

       ã€€ã€€Eclipse直接能导出带签名的最终apk,非常方便,推荐使用,步骤如下:

       ã€€ã€€ç¬¬ä¸€æ­¥ï¼šå¯¼å‡ºã€‚

       ã€€ã€€ç¬¬äºŒæ­¥ï¼šåˆ›å»ºå¯†é’¥åº“keystore,名源码蓝梦源码输入密钥库导出位置和密码,记住密码,下次Use existing keystore会用到。

       ã€€ã€€ç¬¬ä¸‰æ­¥ï¼šå¡«å†™å¯†é’¥åº“信息,填写一些apk文件的密码,使用期限和组织单位的信息。

       ã€€ã€€ç¬¬å››æ­¥ï¼šç”Ÿæˆå¸¦ç­¾åçš„apk文件,到此就结束了。

       ã€€ã€€ç¬¬äº”步:如果下次发布版本的时候,使用前面生成的keystore再签名。

       ã€€ã€€ç¬¬å…­æ­¥ï¼šNext,Next,结束!

  方法三:使用IntelliJ IDEA导出带签名的apk 

       ã€€ã€€æ–¹æ³•æ­¥éª¤åŸºæœ¬å’ŒEclipse相同,大概操作路径是:菜单Tools->Andrdoid->Export signed apk。

Android系统签名

       æœ‰æ—¶å€™ï¼Œæˆ‘们开发的apk需要用到系统权限,需要在AndroidManifest.xml中添加共享系统进程属性:

        这时候apk的签名就需要是系统签名(platform、shared或media)才能正常使用。

        常用系统签名方式

        这种方式比较麻烦,你需要有编译过的源码环境,并按如下步骤:

        1、拷贝App源码到Android源码的packages/apps/目录下,且App源码是普通(Eclipse)格式的

        2、配置Android.mk,在其中添加

        3、使用mm编译App,生成的apk即系统签名

        这种方式比在源码环境下签名简单,App可以在Eclipse或Android Studio下编译,然后给apk重新签名即可。

        但这种方式在频繁调试的时候比较痛苦,即使写成脚本,也需要重复一样的操作。

        相关文件

        platform.x.pem、platform.pk8、signapk.jar

        文件位置

        platform.x.pem、platform.pk8:

        signapk.jar:

        signapk源码路径:

        签名命令

        步骤

        1、将相关文件及源apk文件置于同一路径下

        2、检查源apk包,去掉META-INF/CERT.SF 和 META-INF/CERT.RSA 文件

        3、执行签名命令即可

        让Android Studio集成系统签名,需要用到一个工具 keytool-importkeypair ,详见下文。

        这个工具的作用是将系统签名的相关信息导入到已有的签名文件里。

        工具的使用方法可以通过–help或README.textile来寻求帮助

        platform.x.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

        我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。

        步骤

        1、生成demo.jks签名文件

        2、编写签名脚本signature.sh,内容如下:

        为脚本文件添加可执行权限:

        执行脚本:

        3、配置builde.gradle

        在android区域下(与defaultConfig同级)添加配置:

        这样debug或release apk就带有系统签名了。

        如果想直接Run app就是release版且带系统签名的apk,还需修改:

        这样直接Run app就是带系统签名的release版apk了。

apk签名工具

        对apk进行反编译并修改后,需要对重新打包的apk进行签名。

        秘钥生成工具——keytool

        路径:jdk/bin/keytool.exe

        生成秘钥: keytool -genkeypair -keystore test.keystore -alias test -validity -keyalg RSA

        其中-validity指定有效期天数,-keyalg指定算法

        查看秘钥信息: keytool -list -v -keystore test.keystore

        JDK签名工具——jarsigner

        仅支持V1签名

        路径:jdk/bin/jarsigner.exe

        命令: jarsigner -keystore test.keystore test.apk testkey

        apk签名工具——apksigner

        默认开启V1和V2签名

        路径:AndroidSDK/build-tools/.0.0/apksigner.bat

        命令: apksigner sign --ks xx.keystore --ks-key-alias testkey test.apk

安卓apk反编译、修改、名源码重新打包、名源码签名全过程

       在处理安卓apk时,名源码尽管代码混淆是名源码保护开发者权益的重要手段,但出于学习目的名源码,我们探讨如何在特定情况下反编译apk。名源码主要工具包括apktool用于编译和反编译,名源码streamcql源码分析以及dex2jar和jd-gui进行源码查看。名源码

       首先,名源码确保你的名源码系统安装了Java,并下载apktool.bat脚本和apktool.jar。名源码将它们放在同一目录,websocket c源码通过命令行操作。命令行中的反编译命令如:apktool.bat d [-s] -f -o,其中[-s]表示选择文件夹,-f表示强制反编译,-o指定输出目录。eclipse ide 源码若不指定,将默认在C:\Users\Administrator目录生成。

       在反编译过程中,需要配合dex2jar工具将classes.dex转换为源码文件,然后jd-gui用于查看。npm 源码安装如果apk经过混淆,可能需要在线研究以理解混淆后的代码。

       对于修改apk资源,只需替换res文件夹中的相应文件。但修改代码则相对复杂,因为反编译后的结果是smali语言,类似于汇编,需要对照smali文件和源码进行操作。

       签名apk则涉及keytool和jarsigner工具。首先,通过keytool生成keystore文件,然后在同一目录下使用jarsigner对apk进行签名。签署过程中,需要输入keystore信息并指定证书的有效天数。注意,签名后的apk需要先卸载原版才能安装。

使用apksigner 对APK进行签名

       // apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)

        apksigner sign --ks D:\futureGainKeyStore.keystore --ks-key-alias key_future_gain --out D:\HWNS_Signed.apk D:\HWNS.apk

        apksigner verify -v --print-certs D:\HWNS_Signed.apk

        apksigner verify -v --print-certs D:\HWNS_Zipalign_Signed.apk