Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Ant打包安卓apk(3)-ANT打包自动档(基本版)

Ant打包安卓apk(3)-ANT打包自动档(基本版)

作者头像
acc8226
发布于 2022-05-17 12:08:50
发布于 2022-05-17 12:08:50
46500
代码可运行
举报
文章被收录于专栏:叽叽西叽叽西
运行总次数:0
代码可运行
  1. ANT支持
  2. 配置环境变量(android和ANT都需要)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export ANDROID_HOME=/Users/Stay/Desktop/develop/android-sdk-mac_x86/
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:${ANDROID_HOME}/tools
export ANT_HOME=/Users/Stay/Desktop/develop/ant/apache-ant-1.8.4
export PATH=${PATH}:${ANT_HOME}/bin
  1. 生成一个简单的build.xml,本身sdk/tool/ant 下有个完整的build.xml,我们只要基于它创建一个简单的build.xml即可.

首先切换到项目根目录, android update project --path . --name XXX --path更新的是local.properties, --name更新的是build.xml 否则会(must already have an AndroidManifest.xml)

最好需要存在project.properties的情况下, 否则会 Error: The project either has no target set or the target is invalid.

project.properties格式如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Project target.
target=android-22

这样会更新两个文件 Updated local.properties sdk.dir标签指向路径, 此文件不应该包含在vcs中 Updated build.xml ant文件支持, 我觉得该文件可选是否包含在vcs中

build.xml实例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<project name="TestAnt" default="help">

    <!-- The local.properties file is created and updated by the 'android' tool.
         It contains the path to the SDK. It should *NOT* be checked into
         Version Control Systems. -->
    <property file="local.properties" />

    <!-- The ant.properties file can be created by you. It is only edited by the
         'android' tool to add properties to it.
         This is the place to change some Ant specific build properties.
         Here are some properties you may want to change/update:

         source.dir
             The name of the source directory. Default is 'src'.
         out.dir
             The name of the output directory. Default is 'bin'.

         For other overridable properties, look at the beginning of the rules
         files in the SDK, at tools/ant/build.xml

         Properties related to the SDK location or the project target should
         be updated using the 'android' tool with the 'update' action.

         This file is an integral part of the build system for your
         application and should be checked into Version Control Systems.

         -->
    <property file="ant.properties" />

    <!-- if sdk.dir was not set from one of the property file, then
         get it from the ANDROID_HOME env var.
         This must be done before we load project.properties since
         the proguard config can use sdk.dir -->
    <property environment="env" />
    <condition property="sdk.dir" value="${env.ANDROID_HOME}">
        <isset property="env.ANDROID_HOME" />
    </condition>

    <!-- The project.properties file is created and updated by the 'android'
         tool, as well as ADT.

         This contains project specific properties such as project target, and library
         dependencies. Lower level build properties are stored in ant.properties
         (or in .classpath for Eclipse projects).

         This file is an integral part of the build system for your
         application and should be checked into Version Control Systems. -->
    <loadproperties srcFile="project.properties" />

    <!-- quick check on sdk.dir -->
    <fail
            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
            unless="sdk.dir"
    />

    <!--
        Import per project custom build rules if present at the root of the project.
        This is the place to put custom intermediary targets such as:
            -pre-build
            -pre-compile
            -post-compile (This is typically used for code obfuscation.
                           Compiled code location: ${out.classes.absolute.dir}
                           If this is not done in place, override ${out.dex.input.absolute.dir})
            -post-package
            -post-build
            -pre-clean
    -->
    <import file="custom_rules.xml" optional="true" />

    <!-- Import the actual build file.

         To customize existing targets, there are two options:
         - Customize only one target:
             - copy/paste the target into this file, *before* the
               <import> task.
             - customize it to your needs.
         - Customize the whole content of build.xml
             - copy/paste the content of the rules files (minus the top node)
               into this file, replacing the <import> task.
             - customize to your needs.

         ***********************
         ****** IMPORTANT ******
         ***********************
         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
         in order to avoid having your file be overridden by tools such as "android update project"
    -->
    <!-- version-tag: 1 -->
    <import file="${sdk.dir}/tools/ant/build.xml" />

</project>
  1. 你可以使用ant -p检测是否输出日志正常, 如果没问题说明你已经可以ant debug或者ant release 进行打包了 ant release需要密钥支持, 并在ant.properties里对key进行声明
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# keystore路径, 绝对/相对路径
key.store=android.keystore
key.store.password=android
key.alias=androiddebugkey
key.alias.password=android

一些常见命令

jarsigner验证apk是否签名和完整性(不推荐)

jarsigner -verify xxx.apk 验证apk

  • 验证失败(因为我多渠道打包更改了清单文件) jarsigner: java.lang.SecurityException: SHA1 digest error for AndroidManifest.xml
  • 验证成功 jar 已验证。

使用apksigner.jar进行验证(推荐)

使用ant格式, 也可改写为java -jar格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <target name="verifyApk" description="checking whether signatures of APK files will verify on Android devices.">
    <!-- execute a jar in non-forked mode. set fork='true'. -->
    <java jar="${apksigner.jar}" fork="true">
      <arg value="verify" />
      <arg value="--verbose" />
      <arg value="${appName.apk}" />
    </java>
  </target>

android.bat下的常用命令

D:\Android\android-sdk\tools\android.bat -h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       Usage:
       android [global options] action [action options]
       Global options:
  -s --silent     : Silent mode, shows errors only.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -h --help       : Help on a specific command.

                                                                    Valid
                                                                    actions
                                                                    are
                                                                    composed
                                                                    of a verb
                                                                    and an
                                                                    optional
                                                                    direct
                                                                    object:
-    sdk              : Displays the SDK Manager window.
-    avd              : Displays the AVD Manager window.
-   list              : Lists existing targets or virtual devices.
-   list avd          : Lists existing Android Virtual Devices.
-   list target       : Lists existing targets.
-   list device       : Lists existing devices.
-   list sdk          : Lists remote SDK repository.
- create avd          : Creates a new Android Virtual Device.
-   move avd          : Moves or renames an Android Virtual Device.
- delete avd          : Deletes an Android Virtual Device.
- update avd          : Updates an Android Virtual Device to match the folders
                        of a new SDK.
- create project      : Creates a new Android project.
- update project      : Updates an Android project (must already have an
                        AndroidManifest.xml).
- create test-project : Creates a new Android project for a test package.
- update test-project : Updates the Android project for a test package (must
                        already have an AndroidManifest.xml).
- create lib-project  : Creates a new Android library project.
- update lib-project  : Updates an Android library project (must already have
                        an AndroidManifest.xml).
- create uitest-project: Creates a new UI test project.
- update adb          : Updates adb to support the USB devices declared in the
                        SDK add-ons.
- update sdk          : Updates the SDK by suggesting new platforms to install
                        if available.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
多渠道批量打包
多渠道就是按照不同的市场进行发布不同的包,由于要改版本名,所以有的时候要打10多个包,在测试部的人员打一次包久会感觉不好,
粲然忧生
2022/08/02
5540
Ant打包
Ant打包 使用步骤: 对于已经存在的工程需要利用Ant命令更新一下: android update project -n Test -p D:/workspace/Test -s -t 1   -n (name) 后面跟的是这个工程的名子   -p (path)后面跟的是这个工程的目录路径   -t (target)后面是当前共有的SDK版本。表明我们的目标版本(如果有了project.properties就不用再跟target这个参数了). android list target这样就能够列
xiangzhihong
2018/01/26
1.6K0
Gradle Plugin for Android Development User Guide 1
Gradle Plugin for Android Development User Guide (1)
宅男潇涧
2018/08/01
8680
Gradle Plugin for Android Development User Guide 1
Ant 打包安卓apk(2)-手写版
由于我的项目中用到了 BuildConfig.java 文件, 在第一个生成 R 文件后我手动拷贝到了R.java的同级目录, 否则接下来的操作会报错
acc8226
2022/06/27
4470
Ant打包安卓apk(5)-多渠道(配置)打包方案 ant脚本
不废话, 直接上货 <?xml version="1.0" encoding="UTF-8"?> <project name="MyProject" default="init" basedir=".
acc8226
2022/05/17
6440
Flutter开发-发布时注意事项
Flutter 应用在 Android 端上启动时会有一段很明显的白屏现象,白屏的时长由设备的性能决定,设备性能越差,白屏时间越长. 然后这个白屏是可以控制的,在Android代码中的style.xml中有这样一段代码:
码客说
2020/06/02
1.2K0
Ant 打包安卓apk(1)-手动档
1. 根据资源文件和 AndroidManifest.xml 生成 R.java 文件  2. 处理 aidl,生成对应的 java文件,如果没有 aidl,则跳过  3. 编译工程源码(主项目,库)src 目录下所有的源码,同时上边生成的R.java和aidl生成的java文件也会被编译生成相应的 class 文件  4. 将第3步生成的class文件打包生成 .dex 文件  5. 将资源文件打包,生成初始的apk  6. 将第 4 步生成的 .dex 文件加入到apk中生成未签名的包  7. apk 签名
acc8226
2022/06/27
5290
Ant 打包安卓apk(1)-手动档
使用Jenkins搭建Android自动打包环境
概述 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目;监控外部调用执行的工作。 对于我们开发工程师来说,我们只管写代码,至于怎么打包,测试,我们是不需要过多关注的。而现在比较流行的方案是:使用Jenkins搭建Android自动打包。 Jenkins环境搭建 软件环境: windows7 64bit; jdk1.8 android sdk gradle2.10 配置Tomcat环境变量 找到path加上;%CATALIN
xiangzhihong
2018/02/06
2.7K0
使用Jenkins搭建Android自动打包环境
gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)
       最近一直在做android自动打包,之前已经完成了用纯命令行的形式打包、原生态ant脚本打包,和基于android的SDK的打包,并且实现了多渠道打包,后来同事推荐了gradle,网上的资料说gradle各种好,自己也感兴趣是实现一下,其实一般来说由于android对eclipse的支持减弱,大部分的人都是用gradle与android studio融合,这样面的例子也会比较多,但笔者所在的项目还是在eclipse的比较多,由于开发人员在移植过程中发现报错比较多所以一直没有完全移植(好吧,其实早晚会移植),所以笔者是用eclipse的IDE做的实验,下面先贴几个基础知识
粲然忧生
2022/08/02
7560
Android 编译工具 Ant
Ant,是一种基于Java的build工具,类似于(Unix)C中的make ,与基于shell命令的扩展模式不同,Ant用Java的类来扩展,用户不必编写shell命令。Ant本身是一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于Java是平台无关的外,脚本的格式是基于XML(默认为build.xml),比make脚本来说还要好维护一些。
阳光岛主
2019/02/19
1.6K0
Android 编译工具 Ant
Eclipse与Android源码中ProGuard工具的使用
由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解。 什么是ProGuard工具? ProGuard是android提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类、字段和函数等,达到压缩、优化和混淆代码的功能。具体来说,使用ProGuard工具,可以达到下面两个目的: 删除了源文件中没有调用的那部分代码,最大化的精简了字节码
欢醉
2018/01/22
1.4K0
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业
章节内容【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例
卓伊凡
2025/01/17
4520
Android 开发必备知识:我和 Gradle 有个约会
0、讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究一下 ant 脚本吧。 那个时候连 HashMap 都不知道是啥,可想开发经验几乎为零,一个小小的 ant 脚本看得我真是深深地感受到了这个世界充满的恶意。好在后来硬着头皮搞明白了什么 target 之类的鬼东西,不然就没有然后了。 0.2 Maven,你们真的会读这个单词么 Maven /`meivn/ 接触 Maven,完全是因为读陈雄华
腾讯Bugly
2018/03/22
9220
Android 开发必备知识:我和 Gradle 有个约会
gradle构建android项目详解
1、用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了。 根目录下面的settings.gradle当中主要是用来include子模块的,比如我
xiangzhihong
2018/02/01
2.3K0
gradle构建android项目详解
Android使用Ant进行apk多渠道打包
Android使用Ant进行apk多渠道打包 前言: Ant 是什么? 详细介绍请看http://ant.apache.org/ 总之一句话:Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。 准备工作: android sdk中默认支持使用ant来执行编译动作。但是要想使用ant来进行编译,还需要ant的执行环境。 为了能顺利使用ant来编译,我们需要如下准备: 1,android sdk,最简单的是下载一个adt bundle即可; 2,ant包,下载链接:htt
用户1289394
2018/02/26
9150
Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
最近有个需求一次要打包9个类型的App,而且常量和String.xml都有变量。虽然之前也是一直存在变量,但是每次也仅仅只打包一个。这让我每次改变量,打包9个。要是以后每次都打包9次,我得疯了。 根据之前的了解,gradle 应该是可以解决这个问题的。所以就仔细研究了一番。
用户2802329
2018/08/07
1.8K0
Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
web项目ant打包完整案例
前两周做的web项目要部署到服务器上去,为了后续升级部署方便,决定采用Ant进行(开发用的myeclipse 8.5),ant打包测试也是在myeclipse上进行,build.xml测试完成后地通过
小小科
2018/05/02
2K0
web项目ant打包完整案例
ant的安装和使用
  1.1 添加环境变量:ANT_HOME=D:\software\ant\apache-ant-1.10.1
全栈程序员站长
2022/09/07
5150
ant的安装和使用
1,什么是ant「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。1,什么是ant ant是构建工具 2,什么是构建 概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个 3,ant的好处 跨平台 –因为ant是使用java实现的,所以它跨平台 使用简单–与ant的兄弟make比起来 语法清晰–同样是和make相比 功能强大–ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当你自己开发一些ant插件的时候,你会发现它更多的功能。 4
全栈程序员站长
2022/07/25
1.1K0
Ant学习
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
1K0
相关推荐
多渠道批量打包
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验