安卓重签名脚本——简单将谷歌的签名命令做成了一个脚本(此为V2签名,V1签名可参考第三个链接),适用于回编译的apk,有需要的同学自取(中文乱码问题请将编码改为ANSI)
参考资料:https://developer.android.com/studio/command-line/apksigner
https://developer.android.com/studio/command-line/zipalign
https://blog.csdn.net/lxlmycsdnfree/article/details/80801719
================================================================================================
更新20190720
================================================================================================
更新可选v1,v2签名,加入adb工具等其他东西。
注:如果不想每次都输入sdk路径,请注释24-35行,反注释38行并手动输入sdk位置保存
rem -By ShenJie 20180920
@echo off
set sdkUrl=
set apksigner=
:apkTool
cls
echo #################################
echo # #
echo # Android小工具 #
echo # #
echo # 重签名请输入1 #
echo # #
echo # 查看签名信息请输入2 #
echo # #
echo # adb工具请输入3 #
echo # #
echo # 退出请输入4 #
echo # #
echo #################################
echo.
if not exist %sdkUrl%\platform-tools (
echo 请输入Android SDK路径
echo.
set /p sdkUrl=
goto apkTool
)
if not exist %sdkUrl%\build-tools (
echo 请输入Android SDK路径
echo.
set /p sdkUrl=
goto apkTool
)
REM 不想每次都输入SDK路径,请如下手动指定SDK路径
REM set sdkUrl=D:\Android\android-sdk
set /p userInput=请输入对应的数字:
if %userInput% equ 1 goto apkResign
if %userInput% equ 2 goto keyInfoOptions
if %userInput% equ 3 goto adbTool
if %userInput% equ 4 exit
goto apkTool
REM ----------------------------Android重签名----------------------------------------
REM ----------------------------Android重签名----------------------------------------
REM ----------------------------Android重签名----------------------------------------
:apkResign
cls
echo #################################
echo # #
echo # Zipalign对齐资源请输入1 #
echo # #
echo # 重签名请输入2 #
echo # #
echo # 检测是否签名请输入3 #
echo # #
echo # 返回上一级请输入4 #
echo # #
echo #################################
echo.
if not defined apksigner (
for /d %%i in (%sdkUrl%\build-tools\??.?.?) do (
if %%i GEQ %sdkUrl%\build-tools\24.0.3 (
set apksigner=%%i\apksigner.bat
set zipalign=%%i\zipalign
goto apkResign
)
)
echo 请确认您的Android SDK目录下有版本大于等于24.0.3的build-tools
echo.
pause
goto apkTool
)
set /p userInput=请输入对应的数字:
if %userInput% equ 1 goto zipalign
if %userInput% equ 2 goto reSignOption
if %userInput% equ 3 goto checkSgin
if %userInput% equ 4 goto apkTool
goto apkResign
:zipalign
cls
echo #################################
echo # #
echo # Zipalign对齐资源 #
echo # #
echo #################################
echo.
set /p sourceApkPath=请输入源Apk路径:
echo.
echo 请输入对齐后的存放的apk路径及名称
set /p targetApkPath=
%zipalign% -f -v 4 %sourceApkPath% %targetApkPath%
echo.
pause
goto apkResign
:reSignOption
cls
echo #################################
echo # #
echo # 重签名 #
echo # #
echo # 使用V1签名请输入1 #
REM echo # #
REM echo # 使用V2签名请输入2 #
echo # #
echo # 使用V1、V2双签名请输入2 #
echo # #
echo # 返回请输入3 #
echo # #
echo #################################
echo.
set /p userInput=请输入对应的数字:
set "mOption="
if %userInput% equ 1 (
set "mOption=--v2-signing-enabled false"
goto reSign
)
REM if %userInput% equ 2 (
REM set "mOption=--v1-signing-enabled false"
REM goto reSign
REM )
if %userInput% equ 2 goto reSign
if %userInput% equ 3 goto apkResign
goto reSignOption
:reSign
cls
echo #################################
echo # #
echo # 重签名 #
echo # #
echo # 单签名文件签名请输入1 #
echo # #
echo # 双签名文件签名请输入2 #
echo # #
echo # 私钥和证书签名请输入3 #
echo # #
echo # 返回请输入4 #
echo # #
echo #################################
echo.
set /p userInput=请输入对应的数字:
if %userInput% equ 1 goto signOneKey
if %userInput% equ 2 goto signTwoKey
if %userInput% equ 3 goto signKeyAndCertificate
if %userInput% equ 4 goto reSignOption
goto reSign
:signOneKey
echo.
set /p sourceApkPath=请输入Apk路径:
echo.
set /p keystorePath=请输入签名文件路径(.jks或.keystore):
echo.
call %apksigner% sign %mOption% --ks %keystorePath% %sourceApkPath%
echo.
pause
goto reSign
:signTwoKey
echo.
set /p sourceApkPath=请输入Apk路径:
echo.
set /p keystoreOnePath=请输入签名文件一的路径(.jks或.keystore):
echo.
set /p keystoreTwoPath=请输入签名文件二的路径(.jks或.keystore):
echo.
call %apksigner% sign %mOption% --ks %keystoreOnePath% --next-signer %mOption% --ks %keystoreTwoPath% %sourceApkPath%
echo.
pause
goto reSign
:signKeyAndCertificate
echo.
set /p sourceApkPath=请输入Apk路径:
echo.
set /p keystorePath=请输入签名文件路径(.pk8):
echo.
set /p certificatePath=请输入签名文件路径(.pem):
echo.
call %apksigner% sign %mOption% --key %keystorePath% --cert %certificatePath% %sourceApkPath%
echo.
pause
goto reSign
:checkSgin
cls
echo #################################
echo # #
echo # 校验签名 #
echo # #
echo #################################
echo.
set /p sourceApkPath=请输入Apk路径:
call %apksigner% verify -v %sourceApkPath%
echo.
pause
goto apkResign
REM ----------------------------查看签名信息----------------------------------------
REM ----------------------------查看签名信息----------------------------------------
REM ----------------------------查看签名信息----------------------------------------
:keyInfoOptions
cls
echo #################################
echo # #
echo # 查看证书信息请输入1 #
echo # #
echo # 查看HashKey信息请输入2 #
echo # #
echo # 返回上一级请输入3 #
echo # #
echo #################################
echo.
set /p userInput=请输入对应的数字:
if %userInput% equ 1 goto apkKeyInfo
if %userInput% equ 2 goto hashKeyInfo
if %userInput% equ 3 goto apkTool
goto keyInfoOptions
:apkKeyInfo
echo.
set /p userInput=请输入签名文件的路径:
keytool -list -v -keystore %userInput%
echo.
pause
cls
goto keyInfoOptions
:hashKeyInfo
echo.
set /p userInput=请输入签名文件的路径:
echo.
set /p alias=请输入别名:
echo.
rem echo 请输入openssl路径
rem set /p opensslUrl=
set opensslUrl=E:\sdk\openssl.exe
if not exist %opensslUrl% (
echo.
echo openssl.exe路径错误,请重新输入
goto hashKeyInfo
)
keytool -exportcert -alias %alias% -keystore %userInput% | %opensslUrl% sha1 -binary | %opensslUrl% base64
echo.
pause
cls
goto keyInfoOptions
REM ----------------------------adb工具----------------------------------------
REM ----------------------------adb工具----------------------------------------
REM ----------------------------adb工具----------------------------------------
:adbTool
cls
echo #################################
echo # #
echo # 查看已连接设备请输入1 #
echo # #
echo # 安装app请输入2 #
echo # #
echo # 卸载app请输入3 #
echo # #
echo # 截图请输入4 #
echo # #
echo # 录屏请输入5 #
echo # #
echo # 查看日志请输入6 #
echo # #
echo # 返回上一级请输入7 #
echo # #
echo #################################
echo.
set adbUrl=%sdkUrl%\platform-tools\adb
set /p userInput=请输入对应的数字:
if %userInput% equ 1 (
%adbUrl% devices
pause
)
if %userInput% equ 2 goto installApp
if %userInput% equ 3 goto uninstallApp
if %userInput% equ 4 goto screenshot
if %userInput% equ 5 goto recording
if %userInput% equ 6 goto logcat
if %userInput% equ 7 goto apkTool
goto adbTool
:installApp
echo.
set /p userInput=请输入app所在位置:
%adbUrl% install -r %userInput%
pause
goto adbTool
:uninstallApp
echo.
set /p userInput=请输入app包名:
%adbUrl% uninstall %userInput%
pause
goto adbTool
:screenshot
echo.
echo ================
echo 正在截图,请稍候
echo ================
echo.
%adbUrl% shell screencap -p /sdcard/screenshotByADB.png
%adbUrl% pull /sdcard/screenshotByADB.png %USERPROFILE%\desktop
echo.
echo ========================
echo 截图完毕并成功复制到桌面
echo ========================
echo.
%adbUrl% shell rm /sdcard/screenshotByADB.png
pause
goto adbTool
:recording
echo.
echo =====================================
echo 正在录屏,请使用Ctrl+C并输入N结束录制
echo =====================================
echo.
%adbUrl% shell screenrecord /sdcard/recordingByADB.mp4
%adbUrl% pull /sdcard/recordingByADB.mp4 %USERPROFILE%\desktop
echo.
echo ========================
echo 录制完毕并成功复制到桌面
echo ========================
echo.
%adbUrl% shell rm /sdcard/recordingByADB.mp4
pause
goto adbTool
:logcat
cls
echo #################################
echo # #
echo # 查看lylx日志请输入1 #
echo # #
echo # 查看Unity日志请输入2 #
echo # #
echo # 自定义tag请输入3 #
echo # #
echo # 查看Error日志请输入4 #
echo # #
echo # 返回上一级请输入5 #
echo # #
echo #################################
echo.
set /p userInput=请输入对应的数字:
if %userInput% equ 1 (
start %adbUrl% logcat lylx:V *:S
)
if %userInput% equ 2 (
start %adbUrl% logcat Unity:V *:S
)
if %userInput% equ 3 goto setTag
if %userInput% equ 4 (
start %adbUrl% logcat *:E
)
if %userInput% equ 5 goto adbTool
goto logcat
:setTag
echo.
set /p tag=请输入tag:
cls
start %adbUrl% logcat %tag%:V *:S
goto logcat