<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[孤城浪子的地盘]]></title> 
<link>https://www.gclz.cn/index.php</link> 
<description><![CDATA[]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[孤城浪子的地盘]]></copyright>
<item>
<link>https://www.gclz.cn/post//</link>
<title><![CDATA[安卓apk签名批处理，自动添加V1 V2 V3签名]]></title> 
<author>孤城浪子 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[软件]]></category>
<pubDate>Fri, 19 Sep 2025 03:05:54 +0000</pubDate> 
<guid>https://www.gclz.cn/post//</guid> 
<description>
<![CDATA[ 
	<div>把下面内容保存为 apksign.bat 文件：<br /></div><div><br /></div><div>@echo off</div>setlocal enabledelayedexpansion<br /><br />:: 设置 build-tools 路径<br />set &quot;BUILD_TOOLS_DIR=.&#92;33.0.2&quot;<br />:: 检查是否传入了参数<br />if &quot;%~1&quot; equ &quot;&quot; (<br />&nbsp;&nbsp;&nbsp;&nbsp;echo.<br />&nbsp;&nbsp;&nbsp;&nbsp;echo 错误：请提供一个文件名作为参数,可以不输入扩展名，处理时自动添加.apk。<br />&nbsp;&nbsp;&nbsp;&nbsp;echo.<br />&nbsp;&nbsp;&nbsp;&nbsp;echo 示例: %~n0 appname 或 %~n0 appname.apk<br />&nbsp;&nbsp;&nbsp;&nbsp;goto :end<br />)<br /><br />:: 获取原始文件名（不含路径）<br />set &quot;original_filename=%~nx1&quot;<br /><br />:: 获取文件扩展名<br />set &quot;file_ext=%~x1&quot;<br /><br />:: 判断文件扩展名是否为空，如果为空，则添加.apk<br />if &quot;%file_ext%&quot; equ &quot;&quot; (<br />&nbsp;&nbsp;&nbsp;&nbsp;set &quot;original_filename=%original_filename%.apk&quot;<br />)<br /><br />:: 获取文件名（不包含路径和后缀）<br />for %%f in (&quot;%original_filename%&quot;) do set &quot;input_file=%%~nf&quot;<br /><br />:: 定义处理过程中的临时和最终文件名称<br />set &quot;v1_signed_apk=%input_file%_v1.apk&quot;<br />set &quot;v1_signed_v2_aligned_apk=%input_file%_align.apk&quot;<br />set &quot;final_signed_apk=%input_file%_signed.apk&quot;<br />del &quot;%v1_signed_apk%&quot;<br />del &quot;%v1_signed_v2_aligned_apk%&quot;<br /><br />echo.<br />echo =========================================================<br />echo 开始对文件 &quot;%original_filename%&quot; 进行 APK 签名和对齐<br />echo =========================================================<br />echo.<br /><br />:: 步骤1：V1 签名<br />:: 将原始APK进行V1签名，并输出到v1_signed_apk文件<br />echo 正在执行 V1 签名...<br />jarsigner -verbose -keystore key.keystore -storepass 123456 -signedjar &quot;%v1_signed_apk%&quot; &quot;%original_filename%&quot; key &gt;nul<br />if errorlevel 1 goto :error_handler<br /><br />echo.<br />echo V1 签名完成。生成文件: &quot;%v1_signed_apk%&quot;<br />echo.<br /><br />:: 步骤2：zipalign 对齐<br />:: 对V1签名后的文件进行对齐操作，并输出到v1_signed_v2_aligned_apk文件<br />echo 正在执行 zipalign 对齐...<br />zipalign 4 &quot;%v1_signed_apk%&quot; &quot;%v1_signed_v2_aligned_apk%&quot;<br />if errorlevel 1 goto :error_handler<br /><br />echo.<br />echo 对齐完成。生成文件: &quot;%v1_signed_v2_aligned_apk%&quot;<br />echo.<br /><br />:: 步骤3：V2 签名<br />:: 对齐后的文件进行V2签名，并输出到final_signed_apk文件<br />echo&nbsp;&nbsp;正在执行 V2 签名...<br />call &quot;%BUILD_TOOLS_DIR%&#92;apksigner.bat&quot;&nbsp;&nbsp;sign --ks key.keystore --ks-key-alias key --ks-pass pass:123456 --out &quot;%final_signed_apk%&quot; &quot;%v1_signed_v2_aligned_apk%&quot;<br />if errorlevel 1 goto :error_handler<br /><br />echo.<br />echo V2 签名完成。最终文件: &quot;%final_signed_apk%&quot;<br />echo.<br /><br />:: 步骤4：验证最终文件的 zipalign 对齐<br />echo 正在验证最终文件的对齐...<br />zipalign -c -v 4 &quot;%final_signed_apk%&quot; &gt;nul<br />call &quot;%BUILD_TOOLS_DIR%&#92;apksigner.bat&quot;&nbsp;&nbsp;verify -v --print-certs &quot;%final_signed_apk%&quot; <br />echo.<br />echo 签名和对齐流程全部完成！ <br />echo 最终文件: &quot;%final_signed_apk%&quot;<br /><br />:: 清理中间文件<br />echo 正在清理中间文件...<br />del &quot;%v1_signed_apk%&quot;<br />del &quot;%v1_signed_v2_aligned_apk%&quot;<br /><br />goto :end<br /><br />:error_handler<br />echo.<br />echo 错误：签名或对齐过程中出现问题。请检查命令和文件。<br />echo.<br /><br />:end<br />endlocal<br />
]]>
</description>
</item><item>
<link>https://www.gclz.cn/post//#blogcomment</link>
<title><![CDATA[[评论] 安卓apk签名批处理，自动添加V1 V2 V3签名]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.gclz.cn/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>