zoukankan      html  css  js  c++  java
  • 乐固加固后windows下实现给apk签名

             遇到了这样一个问题:我们已经在centos下签名生成好的apk,拿到腾讯乐固上加固以后,签名没有了,就需要重新签名,我乐滋滋的想,既然原来是在centos下签名的,那再去centos上签名一次就好了,可以并没有那么简单,一直报错jarsigner不能打开我的apk,如下:

    jarsigner: unable to open jar file: my.apk

             后面想了下,我之前的签名是先使用apktool.jar反编译apk,删除里面的META-INF文件夹,然后再编译生成新的apk,然后才签名的,我也尝试了这种方式,发现报错,反编译失败,查了资料,发现腾讯乐固加固有一项就是为了防止apk反编译的,所以我反编译失败是解释的通的。

       觉得centos不行,那我再windows下试试,同样的签名命令,windows下在git bash下可以!!!   目前不清楚为啥,不知道是不是不同系统的jdk不一样。

     

     在ftp上我们指定了路径给签名apk使用,比如是\192.168.1.3ftpsign_apk

    用到了两个脚本,一个bat,一个shell,所以需要在windows上安装下git bash,话不多说,直接看下脚本,

    bat脚本:sign_apk.bat

    @echo on
    setlocal ENABLEDELAYEDEXPANSION
    set apk_path="\192.168.1.3ftpsign_apk"
    set local_sign_path=C:uild_batsign_apk
    ::当前路径
    set cur_path=%cd%
    ::复制key文件
    echo cur_path=%cur_path% and ftp_path=%apk_path%
    copy %local_sign_path%mirror_aw.key .
    xcopy %apk_path%* .
    md target
    ::查找当前目录下的所有apk文件,并调用shell脚本签名
    for /F %%h in ( 'dir /B %cur_path% ^|findstr ".apk" ' ) do (

    set apk_name=%%h
    echo apk_name=!apk_name!
    call %local_sign_path%sign_tool.sh !apk_name!
    )
    ::等shell执行结束后,将签名后的apk回收到ftp上
    ping 127.0.0.1
    xcopy target* %apk_path%

    shell脚本:sign_tool.sh

    #!/bin/bash
    echo ==========sign $apk_name=====================
    time_now=`date "+%Y%m%d%H%M"`
    jarsigner -verbose -digestalg SHA1 -sigalg SHA1withRSA -keystore mirror.key -signedjar target/"$time_now"_signed_"$apk_name" $apk_name $key_alise -storepass $passwd

    两个脚本放在同一个目录下,同级目录下还有个key文件,加密时使用

    最后直接执行bat脚本就可以了,执行结束后,会在你的ftp路径下看到以“时间_signed”标志开始的apk,就是已经签名了的apk

  • 相关阅读:
    SharedPreferences(转)
    android操作XML的几种方式(转)
    adb 卸载APP命令和杀死APP命令
    Android判断App是否在前台运行(转)
    Java中的Timer和TimerTask在Android中的用法(转)
    Android: 启动另外的APP及传递参数(转)
    BroadcastReceiver应用详解(转)
    Android---让你的APK程序开机自动运行(转)
    adb shell 命令详解(转)
    C#串口介绍以及简单串口通信程序设计实现
  • 原文地址:https://www.cnblogs.com/zndxall/p/9512881.html
Copyright © 2011-2022 走看看