zoukankan      html  css  js  c++  java
  • Android打包之bat脚本打包

    Android打包可以使用eclipse直接打包,而eclipse打包其实是对一系打包命令的执行。既然是执行命令,那么命令行也同样可以胜任,所以有了bat脚本打包。对于打包,其过程大致如下:

    1、生成R.java

    2、编译*.java

    3、生成classes.dex

    4、将assets、res打包

    5、生成未签名的apk

    6、将apk签名

    基于这些步骤,我们使用bat来一步一步完成,下面是一个脚本文件截图。


    1、生成R.java

    新建一个AntDemo工程,然后在该工程的根目录下编写第一步的bat脚本1_genR.bat,代码如下。

    aapt package -f -m -J gen -S res -I D:/android-sdk-windows/platforms/android-16/android.jar -M AndroidManifest.xml 

    注:执行后生成R.java文件。用eclipse直接新建一个AntDemo工程后,gen目录下已经有R.java文件,如果再执行这个脚本会看到修改时间会改变。如果不确定的,可以将R.java删除,然后再执行脚本以便观看效果。

    下面是脚本执行后的图。

    2、编译*.java

    编译时调用的是JDK下的javac命令,所以需要安装JDK,建议使用jdk1.6(1.7有可能出问题)。安装完成后将JDK所在目录下的bin目录设置成环境变量,然后编译脚本2_compile.bat.

    mkdir bin
    
    javac -target 1.6 -bootclasspath D:/android-sdk-windows/platforms/android-17/android.jar -d bin gencomexample
    
    antdemo*.java srccomexampleantdemo*.java
    注:

    (1)、mkdir bin是创建bin目录。

    (2)、javac中的target指定的是jdk的版本。

    (3)、android.jar需要对应到相应的版本,这里选的是android-17。

    (4)、gencomexample指定java文件所在的目录。

    执行该脚本后,会在bin目录下生成一系列的class文件,如下图。


    3、生成classes.dex

    dx命令是一个dx.bat的脚本,位于android-sdk/plaform-tools下。为了能直接执行dx命令,需要将dx.bat所在的目录设置到环境变量中。下面是编写的脚本3_dex.bat.

    dx --dex --output=G:CodeAndroidWorkspaceAntDemoinclasses.dex G:CodeAndroidWorkspaceAntDemoin

    注:

    (1)、output指定的是输出dex的位置。

    (2)、G:CodeAndroidWorkspaceAntDemoin指定的是class文件的目录。

    执行脚本后生成的文件见下图。



    4、将assets、res打包

    编写4_package.bat,内容如下。

    aapt package -f -A assets -S res -I D:/android-sdk-windows/platforms/android-17/android.jar -M AndroidManifest.xml -F bin/AntDemo

    注:将assets和res中的文件打包,生成AntDemo文件。见下图。



    5、生成未签名的apk

    编写5_unsigned.bat,内容如下。

    apkbuilder G:CodeAndroidWorkspaceAntDemoinAntDemo_unsigned.apk -v -u -z G:CodeAndroidWorkspaceAntDemoinAntDemo -f G:CodeAndroidWorkspaceAntDemoinclasses.dex -rf G:CodeAndroidWorkspaceAntDemosrc 

    注:

    (1)、需要调用apkbuilder命令,该命令是一脚本,在android-sdk/tools下,所以需要将该目录设置成环境变……

    (2)、需要将之前生成的AntDemo、classes.dex和src下的文件一起构建出apk。

    下面是生成的结果图。


    6、将apk签名

    签名apk前,需要先生成一个签名文件*.keystore。该签名文件可以通过JDK下的bin目录下的keytool.exe来生成。可以使用如下脚本:

    keytool -genkey -alias ant_test -keyalg RSA -validity 20000 -keystore my.keystore
    执行该脚本后,按提示输出即可。这里的测试版本使用的密码是123456,其他的直接回车(即使用默认的unknown)。具体的可以参看此文Android之apk文件签名

    有了keystore之后,就可以进行apk签名了,编写脚本6_signed.bat,内容如下:

    jarsigner -keystore G:CodeAndroidWorkspaceAntDemouildmy.keystore -storepass 123456 -keypass 123456 -signedjar G:CodeAndroidWorkspaceAntDemoinAntDemo_signed.apk G:CodeAndroidWorkspaceAntDemoinAntDemo_unsigned.apk ant_test
    注:

    (1)、jarsigner在JDK的bin目录下,该目录如果没有设置成环境变量的,需要设置成环境变量。

    (2)、输入生成my.keystore中所使用的密码和别名(生成签名文件时alias所指定的参数即是)。

    下面是执行脚本后的图。



    上面的过程是一步一步分开的,如果需要一起执行,可以将脚本合并成一个脚本,或者再建一个脚本build.bat来调用各个脚本,下面是build.bat的脚本代码。

    call 1_genR
    call 2_compile
    call 3_dex
    call 4_package
    call 5_unsigned
    call 6_signed
    

    这样,使用bat脚本打包就完毕了。bat脚本的执行就是对一系列任务的执行,而ant也是对一系列任务的执行,所以可以将这些脚本转换成ant的脚本,具体请参见《Android打包之将bat脚本转换成ant脚本》。

    转载请注明出处:Android打包之将bat脚本转换成ant脚本

    源码下载

  • 相关阅读:
    正则匹配整数或小数
    文本超出点点点
    订单页面布局
    数据库连接池 maxActive,maxIdle,maxWait参数
    dll静态调用和动态调用
    Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnection
    sql server调优
    AdPlus
    010 Editor
    WinDBG相关
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7605021.html
Copyright © 2011-2022 走看看