Android中使用Ant编译打包

本文参照自: http://blog.csdn.net/xyz_lmn/article/details/7268582?reload
一、环境配置
1 .1、配置ant
首先 从ant 官网 下载ant 接着 解压 ant的包到本地目录, 接着 在环境变量中设置 ANT_HOME 为你的ant所在目录, 然后 把%ANT_HOME%/bin加到你系统环境的path, 最后 在命令行执行 ant命令 测试其是否已经添加到了系统path中。
二、基本使用
2.1、使用android create 创建项目
参数说明:
- k  /-- package 为命名空间(包名)
- a  /-- name 工程名 
- p  /-- path 项目
 - 为目标平台的版本编号
实例1
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="pln">C</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\Users\hubin5\Desktop\temp\0</span><span class="lit" style="color: rgb(0, 102, 102);">503</span><span class="pun" style="color: rgb(102, 102, 0);">></span><span class="pln">android create project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">k com</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">android</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="typ" style="color: rgb(102, 0, 102);">Tank</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">a </span><span class="typ" style="color: rgb(102, 0, 102);">Tank</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t </span><span class="lit" style="color: rgb(0, 102, 102);">4</span><span class="pln">  </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank</span>
<span class="typ" style="color: rgb(102, 0, 102);">Error</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln"> </span><span class="typ" style="color: rgb(102, 0, 102);">Project</span><span class="pln"> folder </span><span class="str" style="color: rgb(0, 136, 0);">'G:\projects\tank'</span><span class="pln"> </span><span class="kwd" style="color: rgb(0, 0, 136);">is</span><span class="pln"> </span><span class="kwd" style="color: rgb(0, 0, 136);">not</span><span class="pln"> empty</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln"> </span><span class="typ" style="color: rgb(102, 0, 102);">Please</span><span class="pln"> consider </span><span class="kwd" style="color: rgb(0, 0, 136);">using</span><span class="pln"> </span><span class="str" style="color: rgb(0, 136, 0);">'android.bat update'</span><span class="pln"> instead</span><span class="pun" style="color: rgb(102, 102, 0);">.</span>
<span class="typ" style="color: rgb(102, 0, 102);">Updated</span><span class="pln"> file G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank\src\com\android\Tank\Tank</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">java</span>
<span class="typ" style="color: rgb(102, 0, 102);">Updated</span><span class="pln"> file G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank\res\values\strings</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span>
<span class="typ" style="color: rgb(102, 0, 102);">Updated</span><span class="pln"> file G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank\res\layout\main</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span>
<span class="typ" style="color: rgb(102, 0, 102);">Updated</span><span class="pln"> file G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank\AndroidManifest</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span>
<span class="typ" style="color: rgb(102, 0, 102);">Updated</span><span class="pln"> file G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span>
<span class="typ" style="color: rgb(102, 0, 102);">Updated</span><span class="pln"> file G</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\projects\tank\proguard</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">project</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">txt</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
可以通过android-sdk\tools下的android.bat列出不同版本平台的对应id编号 
命令1::android.bat list targets
命令2android list
2.2、android update  更新现有项目
对已经存在的android工程,我们可以update下(修改平台的版本),这样会自动添加build.xml 等ant 的配置文件
示例1
C:\Documents and Settings\Administrator>android update project --name Tank -t 11   -p F:\tank
示例2
G:\temp>android update project --name Test -t 15  -p D:\workspace\test
Updated project.properties
Updated local.properties
Updated file D:\workspace\test\build.xml
2.3、打包
在Android工程中,我们可以使用 ant releaseant debug来打包apk。
实例2
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="pln">D</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\workspace\test</span><span class="pun" style="color: rgb(102, 102, 0);">></span><span class="pln">ant release</span></div><div><span class="pln">Buildfile</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln"> D</span><span class="pun" style="color: rgb(102, 102, 0);">:</span><span class="pln">\workspace\test\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
使用ant releaseant debug打apk包时,默认使用当前目录的build.xml配置来进行打包。
当然我们可以使用-buildfile选项来制定 build.xml配置文件。
实例3
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"><span class="pln">call ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile test\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></p>
实例4
文件1
config.bat
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="kwd" style="color: rgb(0, 0, 136);">set</span><span class="pln"> out_dir</span><span class="pun" style="color: rgb(102, 102, 0);">=.</span><span class="pln">\out</span></div><div><span class="pln">set out_file_name</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Phone</span></div><div><span class="typ" style="color: rgb(102, 0, 102);">set</span><span class="pln"> NO</span><span class="pun" style="color: rgb(102, 102, 0);">=%</span><span class="typ" style="color: rgb(102, 0, 102);">Date</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">4</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="typ" style="color: rgb(102, 0, 102);">Date</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">5</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="typ" style="color: rgb(102, 0, 102);">Date</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">8</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%</span></div><div><span class="kwd" style="color: rgb(0, 0, 136);">set</span><span class="pln"> t</span><span class="pun" style="color: rgb(102, 102, 0);">=%</span><span class="typ" style="color: rgb(102, 0, 102);">Time</span><span class="pun" style="color: rgb(102, 102, 0);">%</span></div><div><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pln"> </span><span class="str" style="color: rgb(0, 136, 0);">"%t:~0,1%"</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">==</span><span class="str" style="color: rgb(0, 136, 0);">" "</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span></div><div><span class="pln">	</span><span class="kwd" style="color: rgb(0, 0, 136);">set</span><span class="pln"> t</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">t</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">%</span></div><div><span class="pun" style="color: rgb(102, 102, 0);">)</span></div><div><span class="kwd" style="color: rgb(0, 0, 136);">set</span><span class="pln"> NO</span><span class="pun" style="color: rgb(102, 102, 0);">=%</span><span class="typ" style="color: rgb(102, 0, 102);">Date</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">4</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="typ" style="color: rgb(102, 0, 102);">Date</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">5</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="typ" style="color: rgb(102, 0, 102);">Date</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">8</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="pln">t</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="pln">t</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">3</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%%</span><span class="pln">t</span><span class="pun" style="color: rgb(102, 102, 0);">:~</span><span class="lit" style="color: rgb(0, 102, 102);">6</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">%</span></div><div><span class="kwd" style="color: rgb(0, 0, 136);">set</span><span class="pln"> out_file_name</span><span class="pun" style="color: rgb(102, 102, 0);">=%</span><span class="pln">out_file_name</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">_</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">NO</span><span class="pun" style="color: rgb(102, 102, 0);">%.</span><span class="pln">apk</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
文件2
build.bat
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="pln">call config</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">bat</span></div><div><span class="pln">pushd dependency</span></div><div><span class="pln">call build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">bat</span></div><div><span class="pln">popd</span></div><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Utils</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">8</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Utils</span><span class="pln">\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><div>
</div><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Download_Install</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">8</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Download_Install</span><span class="pln">\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><div>
</div><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Common</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">8</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Common</span><span class="pln">\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><div>
</div><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Phone</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">9</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Phone</span><span class="pln">\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><div>
</div><div><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pln"> </span><span class="kwd" style="color: rgb(0, 0, 136);">not</span><span class="pln"> exist </span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">out_dir</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">\  mkdir </span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">out_dir</span><span class="pun" style="color: rgb(102, 102, 0);">%</span>
<span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pln"> exist </span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">out_dir</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">\%out_file_name</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">  </span><span class="kwd" style="color: rgb(0, 0, 136);">del</span><span class="pln"> </span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">out_dir</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">\%out_file_name</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln"> </span><span class="str" style="color: rgb(0, 136, 0);">/q</span>
<span class="str" style="color: rgb(0, 136, 0);">copy /</span><span class="pln">y </span><span class="typ" style="color: rgb(102, 0, 102);">Appstore5_Phone</span><span class="pln">\b</span><span class="kwd" style="color: rgb(0, 0, 136);">in</span><span class="pln">\Loft</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">release</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">apk </span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">out_dir</span><span class="pun" style="color: rgb(102, 102, 0);">%</span><span class="pln">\%out_file_name</span><span class="pun" style="color: rgb(102, 102, 0);">%</span>
<span class="pln">pause</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
文件3
dependency\build.bat
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p lepay_Res </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">8</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile lepay_Res\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><div>
</div><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p lepush_Res </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">8</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile lepush_Res\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><div>
</div><div><span class="pln">call android update project </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">p leuser_Res </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">t android</span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="lit" style="color: rgb(0, 102, 102);">8</span></div><div><span class="lit" style="color: rgb(0, 102, 102);">call</span><span class="pln"> ant release </span><span class="pun" style="color: rgb(102, 102, 0);">-</span><span class="pln">buildfile leuser_Res\build</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">xml</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
三、签名
只要在Android工程的project.properties进行 示例3类似的配置,在使用Ant打包时,Ant就会对生成的apk文件进行签名.
示例3
文件project.properties中
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p><div><span class="pln">has</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">keystore</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln">true</span></div><div><span class="pln">has</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">password</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln">true</span></div><div><span class="pln">key</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">store</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln">debug</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">keystore</span></div><div><span class="pln">key</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">alias</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln">androiddebugkey</span></div><div><span class="pln">key</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">store</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">password</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln">android</span></div><div><span class="pln">key</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="kwd" style="color: rgb(0, 0, 136);">alias</span><span class="pun" style="color: rgb(102, 102, 0);">.</span><span class="pln">password</span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln">android</span></div><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;"></p>
这里的数字签名文件 debug.keystore和project.properties处于同一目录。
关于请签名参考《 Android应用程序签名简介
四、混淆打包
关于使用Ant混淆打包的知识请参考《 Android的代码混淆
五、其他
    * install:安装调试构建的包到运行着的模拟器或者设备;
    * reinstall
    * uninstall
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值