• Android 自动编译、打包生成apk文件 3


    《Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式》 (当前文章)


        之前第一篇和第二篇分别是都是完全自己手写代码,自己测试并执行所有命令行命令,并且把所有命令都用翻译成ant标签,现在可以使用ant自动打包了。
        但是还存在问题,首先前两步骤没有加混淆(proguard)支持,而且复用也要检查下修改哪些内容,或者跨平台需要修改.bat文件引用等。
        现在Android SDK中提供了包含之前写过的操作的封装,只需要使用一条命令android update project生成build.xml ,之后再修改配置文件支持不同特性即可,完全不用写ant代码,这些都由Android SDK自动生成。

    一、生成SDK 命令生成build.xml文件
    1. 执行命令创建
    [plain]  view plain copy print ?
     
    1. D:ProjectDemo>android update project --name ProjectDemo --target 8 --path ./  
    2. Updated project.properties  
    3. Updated local.properties  
    4. Added file D:ProjectDemouild.xml  
    5. Updated file D:ProjectDemoproguard.cfg  

    2. 结果
    执行此命令会生成4个文件:
    project.properties
    local.properties
    build.xml
    proguard.cfg


    3. 参数解释
    --name ProjectDemo  项目名称
    --target 8          指定项目Android版本
    --path ./           指定项目路径

    如果不知道target后面使用哪个版本,可以使用如下命令查看本地支持Android版本号:
    列出不同版本平台的对应id编号
    android list targets



    4. 相关资料
    如果想了解android update project命令更多使用介绍,可以查看Android官方网站:
    《Managing Projects from the Command Line》
    http://developer.android.com/tools/projects/projects-cmdline.html
    如果想了解andorid 命令参及含义,可以查看:
    http://developer.android.com/tools/help/android.html


    二、手动配置一些属性
    1. 设置SDK路径
    修改local.properties文件以下属性值,指定到本地SDK目录
    sdk.dir=
    例如:
    sdk.dir=D:\android-sdk-windows

    2. 设置签名属性
    把创建的密匙release.keystore放到当前目录下,并在此目录下创建ant.properties空文件,填入以下内容
    key.store=release.keystore
    key.store.password=antPassword
    key.alias.password=antPassword
    key.alias=release
    proguard.config=proguard.cfg


    三、使用ant运行项目
    [plain]  view plain copy print ?
     
    1. ant release  

    可选:
    debug:带调试用签名的构建
    release:构建应用程序,生成的apk必须签名才可以发布
    install:安装调试构建的包到运行着的模拟器或者设备;


    通常ant项目只需要执行ant命令即可,但是Android提供了扩展参数,更多参数可以查看以下网址Ant Command Reference部分:
    《Building and Running from the Command Line》
    http://developer.android.com/tools/building/building-cmdline.html



    四、异常记录
    异常一、
    BUILD FAILED
    D:ProjectDemouild.xml:83: Cannot find D:ProjectDemoandroid-sdk-windows oolsantuild.xml imported from D:ProjectDemouild.xml
    修改local.projects,必须是双斜杠
    sdk.dir=D:\android-sdk-windows


    异常二:
         [aapt] D:ProjectDemo eslayoutactivity_main.xml:2: error: Error: String types not allowed (at 'layout_width' with value 'match_parent').
         [aapt] D:ProjectDemo eslayoutactivity_main.xml:2: error: Error: String types not allowed (at 'layout_height' with value 'match_parent').

    BUILD FAILED
    D:android-sdk-windows oolsantuild.xml:650: The following error occurred while executing this line:
    D:android-sdk-windows oolsantuild.xml:691: null returned: 1

    Total time: 1 second

    当前Andorid版本不支持match_parent属性值,match_parent是Android 8以后开始支持的属性值,修改AndroidManifest中<uses-sdk android:minSdkVersion="8" />最少也要大于8。不过也可以把match_parent改为FILL_PARENT

    转载请注明出处:http://blog.csdn.net/androiddevelop/article/details/11553215



  • 相关阅读:
    【1093 Ghajini 线段树】
    【ECJTU_ACM 11级队员2012年暑假训练赛(8) K A short problem】
    【ECJTU_ACM 11级队员2012年暑假训练赛(8) C Asteroids】
    【ECJTU_ACM 11级队员2012年暑假训练赛(7) E Little Elephant and Sorting】
    【ECJTU_ACM 11级队员2012年暑假训练赛(8) F A Mame】
    【hdu 1022 (简单栈题目),,狂敲代码】
    【ECJTU_ACM 11级队员2012年暑假训练赛(8) B Modular Inverse】
    【hdu 1069 Monkey and Banana(动态规划,被坑死。一遍AC)】
    【ECJTU_ACM 11级队员2012年暑假训练赛(7) D Little Elephant and Rozdil】
    【ECJTU_ACM 11级队员2012年暑假训练赛(8) H Petya and Strings】
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3315239.html
Copyright © 2020-2023  润新知