把下面内容保存为 apksign.bat 文件:

@echo off
setlocal enabledelayedexpansion

:: 设置 build-tools 路径
set "BUILD_TOOLS_DIR=.\33.0.2"
:: 检查是否传入了参数
if "%~1" equ "" (
    echo.
    echo 错误:请提供一个文件名作为参数,可以不输入扩展名,处理时自动添加.apk。
    echo.
    echo 示例: %~n0 appname 或 %~n0 appname.apk
    goto :end
)

:: 获取原始文件名(不含路径)
set "original_filename=%~nx1"

:: 获取文件扩展名
set "file_ext=%~x1"

:: 判断文件扩展名是否为空,如果为空,则添加.apk
if "%file_ext%" equ "" (
    set "original_filename=%original_filename%.apk"
)

:: 获取文件名(不包含路径和后缀)
for %%f in ("%original_filename%") do set "input_file=%%~nf"

:: 定义处理过程中的临时和最终文件名称
set "v1_signed_apk=%input_file%_v1.apk"
set "v1_signed_v2_aligned_apk=%input_file%_align.apk"
set "final_signed_apk=%input_file%_signed.apk"
del "%v1_signed_apk%"
del "%v1_signed_v2_aligned_apk%"

echo.
echo =========================================================
echo 开始对文件 "%original_filename%" 进行 APK 签名和对齐
echo =========================================================
echo.

:: 步骤1:V1 签名
:: 将原始APK进行V1签名,并输出到v1_signed_apk文件
echo 正在执行 V1 签名...
jarsigner -verbose -keystore key.keystore -storepass 123456 -signedjar "%v1_signed_apk%" "%original_filename%" key >nul
if errorlevel 1 goto :error_handler

echo.
echo V1 签名完成。生成文件: "%v1_signed_apk%"
echo.

:: 步骤2:zipalign 对齐
:: 对V1签名后的文件进行对齐操作,并输出到v1_signed_v2_aligned_apk文件
echo 正在执行 zipalign 对齐...
zipalign 4 "%v1_signed_apk%" "%v1_signed_v2_aligned_apk%"
if errorlevel 1 goto :error_handler

echo.
echo 对齐完成。生成文件: "%v1_signed_v2_aligned_apk%"
echo.

:: 步骤3:V2 签名
:: 对齐后的文件进行V2签名,并输出到final_signed_apk文件
echo  正在执行 V2 签名...
call "%BUILD_TOOLS_DIR%\apksigner.bat"  sign --ks key.keystore --ks-key-alias key --ks-pass pass:123456 --out "%final_signed_apk%" "%v1_signed_v2_aligned_apk%"
if errorlevel 1 goto :error_handler

echo.
echo V2 签名完成。最终文件: "%final_signed_apk%"
echo.

:: 步骤4:验证最终文件的 zipalign 对齐
echo 正在验证最终文件的对齐...
zipalign -c -v 4 "%final_signed_apk%" >nul
call "%BUILD_TOOLS_DIR%\apksigner.bat"  verify -v --print-certs "%final_signed_apk%"
echo.
echo 签名和对齐流程全部完成!
echo 最终文件: "%final_signed_apk%"

:: 清理中间文件
echo 正在清理中间文件...
del "%v1_signed_apk%"
del "%v1_signed_v2_aligned_apk%"

goto :end

:error_handler
echo.
echo 错误:签名或对齐过程中出现问题。请检查命令和文件。
echo.

:end
endlocal
软件 | 评论(0) | 引用(0) | 阅读(6)
 
发表评论
   
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]