Android ant 脚本打包 关联library project的项目

以下是build.xml
Android ant 脚本打包 关联library project的项目,java源文件编译成class文件时 找不到R 打包cardview的library时 总是不能成功,其他library生成的都是包。但是cardview就是不行·················································

<?xml version="1.0" encoding="UTF-8"?>

<!-- 指定配置文件 -->



<!-- 定义工具目录 -->



<property name="android.tools.absolute.dir" location="${android.tools.dir}" />
<property name="android.platformtools.absolute.dir" location="${android.platformtools.dir}" />
<property name="android.platforms.absolute.dir" location="${android.platforms.dir}" />

<!--        定义工具        
<property name="verbose" value="false" />-->
<condition property="exe" value=".exe" else="">
    <os family="windows" />
</condition>
<property name="jar.proguard" value="${proguard}" />
<property name="android-jar" value="${android.platforms.absolute.dir}/android.jar" />
<property name="android-dx" value="${android.platformtools.absolute.dir}/dx.bat" />
<property name="android-apkbuilder" value="${android.tools.absolute.dir}/apkbuilder.bat" />
<property name="android-adb" value="${android.platformtools.absolute.dir}/adb${exe}" />
<property name="android.zipalign" value="${android.tools.absolute.dir}/zipalign${exe}" />
<property name="android-aapt" value="${android.platformtools.absolute.dir}/aapt${exe}" />
<property name="android-jarsigner" value="${JAVA_HOME}/bin/jarsigner${exe}" />


<!-- ANT环境变量 -->
<property environment="env" />

<!-- 生成R文件的相对目录 -->
<property name="outdir-gen" value="${project.home}/gen" />
<!-- 编译后的文件放置目录 -->
<property name="outdir-bin" value="${project.home}/bin" />
<!-- 输出目录 -->
<property name="outdir" value="${project.outdir}" />
<!-- 清单文件 -->
<property name="manifest-xml" value="${project.home}/AndroidManifest.xml" />
<!-- 源文件目录 -->
<property name="resource-dir" value="res" />
<property name="asset-dir" value="assets" />
<!-- 资源文件目录 -->
<property name="drawable-dir" value="${resource-dir}/drawable" />
<property name="drawable-hdpi-dir" value="${resource-dir}/drawable-hdpi"/>
<property name="drawable-ldpi-dir" value="${resource-dir}/drawable-ldpi"/>
<property name="drawable-mdpi-dir" value="${resource-dir}/drawable-mdpi"/>
<property name="drawable-zh-rCN-dir" value="${resource-dir}/drawable-zh-rCN"/>
<!-- java源文件目录 -->
<property name="srcdir" value="src" />
<property name="srcdir-ospath" value="${project.home}/${srcdir}" />
<!-- 动态库so文件目录 -->
<property name="library" value="${project.home}/libs" />
<!-- 第三方library -->  
<property name="library-dir1" value="${library1}" />  
<property name="library-dir3" value="${library3}" />  
<!-- 外部类库所在目录 -->
<property name="external-lib" value="lib" />
<property name="external-lib-ospath" value="${project.home}/${external-lib}" />
<!-- 生成class目录 -->
<property name="outdir-classes" value="${outdir-bin}/classes" />
<property name="outdir-classes-ospath" value="${outdir-classes}" />
<!-- classes.dex相关变量 -->
<property name="dex-file" value="classes.dex" />
<property name="dex-path" value="${outdir-bin}/${dex-file}" />
<property name="dex-ospath" value="${dex-path}" />
<!-- 经过aapt生成的资源包文件 -->
<property name="resources-package" value="${outdir-bin}/resources.ap_" />
<property name="resources-package-ospath" value="${resources-package}" />
<!-- 未认证apk包 -->
<property name="out-unsigned-package" value="${outdir-bin}/${appName}-unsigned.apk" />
<property name="out-unsigned-package-ospath" value="${out-unsigned-package}" />
<!-- 证书文件 -->
<property name="keystore-file" value="${keystore}" />
<!-- 已认证apk包 -->
<property name="out-signed-package" value="${outdir-bin}/${appName}.apk" />
<property name="out-signed-package-ospath" value="${out-signed-package}" />
<!-- 已优化apk包 -->
<property name="zipalign-signed-package" value="${outdir-bin}/${appName}${version}_release.apk" />
<!-- 输出路径的apk包 -->
<property name="outdir-package" value="${project.outdir}/${appName}.apk" />
<!-- 初始化工作 -->
<target name="init">
    <echo>Initializing all output directories...</echo>
    <delete dir="${outdir-bin}" />
    <delete dir="${outdir-gen}" />
     <delete dir="${library-dir1}/bin" />  
    <delete dir="${library-dir3}/bin" />  
    <delete dir="${library-dir1}/gen" />  
    <delete dir="${library-dir3}/gen" />  
    <mkdir dir="${outdir-gen}" />
    <mkdir dir="${outdir-bin}" />
     <delete dir="${library-dir1}/bin" />  
    <delete dir="${library-dir3}/bin" />  
    <delete dir="${library-dir1}/gen" />  
    <delete dir="${library-dir3}/gen" />  
    <mkdir dir="${outdir-classes}" />
<!-- 把缺少的BuildConfig复制进去,暂时不知道如何生成 -->
   </target>
<!-- 根据工程中的资源文件生成R.java文件 ,多个合并为一个-->
<target name="GenRJAVA" depends="init">
    <echo>Generating R.java / Manifest.java from the resources...</echo>
    <exec executable="${android-aapt}" failonerror="true">
        <arg value="package" /><!-- package表示打包-->
        <arg value="-m" /><!--m,J,gen表示创建包名的目录和R.java到gen目录下 -->
        <arg value="-J" />
        <arg value="${outdir-gen}" />
        <arg value="-M" /><!-- M指定AndroidManifest.xml文件-->
        <arg value="${manifest-xml}" />
        <arg value="-S" /><!-- S指定res目录,生成对应的ID,可多个-->
        <arg value="${resource-dir}" />
        <arg value="-S" />
         <arg value="${library-dir1}/res" /> <!--  注意点:同时需要调用Library的res-->  
        <arg value="-S" />  
        <arg value="${library-dir3}/res" />  
         <arg value="--extra-packages" />  
        <arg value="slidingmenu_library:SMSSDK" />                   
        <arg value="-I" /><!-- I指定android包的位置-->
        <arg value="${android-jar}" />
        <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错-->
    </exec>       
</target>


<!-- 将工程及库应用中的java源文件编译成class文件 -->
<target name="compile" depends="GenRJAVA">
    <echo>Compiling java source code...</echo>
    <javac encoding="UTF-8"target="1.6"  destdir="${outdir-classes}" bootclasspath="${android-jar}" includeantruntime="on">
        <src path="${library-dir1}/src" /><!-- 库应用源码 -->
        <src path="${outdir-gen}" /><!-- 生成的class文件全部保存到bin/classes目录下 -->
        <classpath>
            <fileset dir="${library-dir1}/libs" includes="*.jar" /><!-- 第三方jar包需要引用,用于辅助编译 -->
        </classpath>
    </javac>

    <javac encoding="UTF-8" destdir="${outdir-classes}" bootclasspath="${android-jar41}" includeantruntime="on">  
        <src path="${library-dir3}/src" />  
        <src path="${outdir-gen}" />  
        <classpath>  
            <fileset dir="${library-dir3}/libs" includes="*.jar" />   
        </classpath>  
    </javac>  
    <javac encoding="UTF-8" destdir="${outdir-classes}" bootclasspath="${android-jar}">
        <src path="${project.home}/src" /><!-- 工程源码-->
        <src path="${outdir-gen}" /><!-- 生成的class文件全部保存到bin/classes目录下 -->
        <classpath>
            <fileset dir="${library}" includes="*.jar" /><!-- 第三方jar包需要引用,用于辅助编译 -->
        </classpath>
    </javac>
</target>

<!--执行代码混淆和优化 必须在java文件编译以后-->

<target name="optimize" depends="compile">
    <echo>optimize classes are put to "${out.absolute.dir}" .</echo>
    <jar basedir="${outdir-classes}" destfile="${outdir-bin}/temp.jar"/>
    <taskdef resource="proguard/ant/task.properties"  classpath="${jar.proguard}" />
    <proguard>  
        -injars                     ${outdir-bin}/temp.jar   
        -outjars                    ${outdir-bin}/optimized.jar
        -libraryjars                ${android-jar}   
        -optimizationpasses 5
        -dontskipnonpubliclibraryclasses
        -dontpreverify
        -verbose
        -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
        -include proguard-project.txt
      </proguard>
    <delete file="${outdir-bin}/temp.jar"/>
    <delete dir="${outdir-classes}" failonerror="false" />
    <mkdir dir="${outdir-classes}"/>
    <unzip src="${outdir-bin}/optimized.jar" dest="${outdir-classes}"/>
    <delete file="${outdir-bin}/optimized.jar"/>
</target>


<!-- 将.class文件转化成.dex文件 -->
<target name="dex" depends="compile">
    <echo>Converting compiled files and external libraries into ${outdir-dx}test.dex...</echo>
    <exec executable="${android-dx}" failonerror="true">
        <arg value="--dex" />
        <arg value="--output=${dex-ospath}" /><!-- 输出 -->
        <arg path="${outdir-classes}" /><!-- classes文件位置 -->
        <arg value="${library}" /> <!-- 把libs下所有jar打包 -->
    </exec>
</target>
<!-- 将资源文件放进输出目录 -->
<target name="package-res-and-assets">
    <echo>Packaging resources and assets...</echo>
    <exec executable="${android-aapt}" failonerror="true">
        <arg value="package" />
        <arg value="-f" /><!-- 资源覆盖重写 -->
        <arg value="-M" />
        <arg value="${manifest-xml}" />
        <arg value="-S" />
        <arg value="${resource-dir}" />
        <arg value="-S"/>
        <arg value="${library-dir1}/res"/>  
        <arg value="-S"/>  
        <arg value="${library-dir3}/res"/>  
        <arg value="-A" /><!-- asset目录也打包 -->
        <arg value="${asset-dir}" />
        <arg value="-I" />
        <arg value="${android-jar}" />
        <arg value="-F" /><!-- 输出资源压缩包 -->
        <arg value="${resources-package}" />
        <arg value="--auto-add-overlay" />
    </exec>
</target>
<!-- 打包成未签证的apk -->
<target name="package" depends="dex,package-res-and-assets">
    <echo>Packaging unsigned apk for release...</echo>     
    <exec executable="${android-apkbuilder}" >
        <arg value="${out-unsigned-package-ospath}" /><!-- 输出 -->
        <arg value="-u" /><!-- u指创建未签名的包-->
        <arg value="-z" /><!-- 资源压缩包 -->
        <arg value="${resources-package-ospath}" />
        <arg value="-f" /><!-- dex文件 -->
        <arg value="${dex-ospath}" />
        <arg value="-nf"/><!-- 把libs下的so库打包 -->
        <arg value="${library}" />
    </exec>
    <echo>It will need to be signed with jarsigner before being published.</echo>
</target>
<!-- 对apk进行签证 -->
<target name="jarsigner" depends="package">
    <echo>Packaging signed apk for release...</echo>
    <exec executable="${android-jarsigner}" failonerror="true">
        <arg value="-keystore" />
        <arg value="${keystore-file}" />
        <arg value="-storepass" />
        <arg value="111111" /><!-- 验证密钥完整性的口令,创建时建立的 -->
        <arg value="-keypass" />
        <arg value="111111" /> <!-- 专用密钥的口令,就是key密码 -->
        <arg value="-signedjar" />
        <arg value="${out-signed-package-ospath}" /><!-- 输出 -->
        <arg value="${out-unsigned-package-ospath}" /><!-- 未签名的apk -->
        <!-- 不要忘了证书的别名 -->
        <arg value="recyclersign" />
    </exec>
     <echo message="签名成功" />  
</target>
<!-- 优化 -->
<target name="optimize-app" depends="jarsigner">
  <echo> optimizing the application...</echo>
  <exec executable="${android-zipalign}">
    <arg value="-v" />
    <arg value="-f" />
    <arg value="4" />
    <arg value="${out-signed-package-ospath}" />
    <arg value="${zipalign-signed-package}" />
 </exec>
</target>
<!-- 发布 -->
<target name="release" depends="optimize-app">
    <!-- 删除未签证apk -->
    <delete file="${out-unsigned-package-ospath}" />
    <echo>APK is released. path:${out-signed-package-ospath}</echo>
    <copy file="${out-signed-package-ospath}" tofile="${outdir-package}"></copy>
    <echo>APK is copy to path:${outdir-package}</echo>
</target>


1个回答

我就参考的这些文章,然后出的问题··························

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ant 打包 java project 为ant
NULL 博文链接:https://ljhjay.iteye.com/blog/1279610
ant批量打包脚本
应用一发布,每到上市场的时候,大批量的市场包需要打,手动一个个打已满足不了需求了,所以ant脚本批量打包来了
ant脚本打包
NULL 博文链接:https://ambinly.iteye.com/blog/798265
ant 打包脚本示例
-
Ant脚本自动构建打包
...
ant 打包脚本
整理了一下编译JDK源码的Ant脚本。发现用新一点的JDK编译旧的版本更容易,比如用jdk1.6.0_25编译jdk1.6.0_21。如果直接用jdk1.6.0_21编译自身代码,不是缺这个就是没那个,颇为麻烦。切到jdk1.6.0_25后,一下就编译通过了。 ...
使用Ant脚本打包
MAC OS 下载并安装 ant 1.下载ant http://ant.apache.org/bindownload.cgi 选择zip进行下载。 2.将下载的zip包解压到一个目录下,如/usr/local。这时候需要你提供修改权限,输入密码。 Tip:什么?不会进入usr目录?打开Finder,选择菜单中的“前往”>“前往文件夹”,或者在打开Finder后用快捷键
Ant多渠道 多项目引用 打包Android项目
Ant多渠道 多项目引用 打包Android项目
Android项目利用Ant实现打包功能
在Android项目的开发中,项目完成后打包发布是必不可少的一个步骤,针对企业内部APP,一般不需要多渠道发布,因此只要使用Android自带的ADT来发布APK就可以了。但是每次发布的时候还要输入密码、选择生成文件的的存储路径,这个如果只做一两次还行,如果每次都是用这种方法,那么感觉就比较繁琐了,因此这里我们就介绍使用Ant实现指定位置的打包的介绍。 一、安装和配置ant 使用Ant打包,那
EJB打包和Ant脚本的疑问
为了便于使用ant:rn建以下目录:rnsrc目录下按package存放java源文件rnmypackage.ejb包存放bean类,remote接口,home接口,helper类等。-->将打包成ejb-jar文件。rnmypackage.web包存放调用Servlet类,-->打包成war文件。rnclasses目录下存放编译后的类文件。rnrn用ant写build脚本时,遇到一个问题:rn打包war时,由于Servlet中调用ejb时,要和ejb的remote和home接口打交道,因此需要将remote和home接口也打包进去。现两者位于不同的包,表现在不同的目录下,在写build脚本时,怎么实现只将war要用到的class文件拷到一个目录?rn如果用include=""指定每个class文件名,太多了。rn如果用通配符,那就要remote和home接口遵循一度的命名规则,比如统一加前缀或后缀,会搞得类名很怪。这个脚本怎么写好?rnrn或者怎么样组织包结构比较合理?
ant android 打包范例
这是我用ant打包android用的build文件,绝对可用
Android Ant 打包
Android Ant 打包
Ant脚本打包Android程序的demo(含打包第三方jar)
Ant脚本打包Android程序的demo(含打包第三方jar)。 build_with_bat是基于bat脚本实现的。 build是在build_with_bat的基础上实现的,主要是在compile和dex部分增加了第三jar的打包。
android 引用 library project报错
A工程引用appcompat_v7,设置为library project rnB工程引用A工程,运行时报如下错误(B中是否直接引用appcompat_v7都报错): rn[2014-11-20 20:58:12 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim; rn[2014-11-20 20:58:12 - xxx] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim; rnrnA工程: rnAndroid Private Libraries 中引用的是appcompat_v7\libs rnAndroid Dependencies 中引用的是appcompat_V7\bin (这个是空的只有1k) rnbin/dexedLibs下面两个appcompat_v7 jar,其中一个是空的。但是A工程独立运行没有问题。
引入library project打包混淆错误
我在工程中引入了一个library project,这个lib中也引入了第三方jar包,打包混淆的时候出现以下错误rnrn[img=https://img-bbs.csdn.net/upload/201308/19/1376909307_676113.jpg][/img]rnrn遮挡部分是我引入的library project 的libs目录下的一个第三方jar包rnrn在我的工程中proguard.cfg也加入了-keepnames class cn.cmgame.** *; 语句,不知道哪个地方不对,请高手指点
java project 使用ant工具打包
编写build.xml<?xml version="1.0" encoding="UTF-8"?> <!-- 定义一个工程,默认任务为warFile。 --> <project name="Portal_V4" default="warFile" basedir="."> <!-- 定义属性,打成war包的名称。 --> <property name="warFileNa
怎样用Ant 打包EJB项目
rn求解~~~~~~~~~~~~~rnrnrnrn让它自动生成ear 和 warrnrnrnrnrnrnrnrn
如何打包java project项目
涉及到一个JAVA项目的运行。通过某种方式获得一个JAVA的SDK,现在需要运行这个项目,并且在某种条件下通过POST将某些数据提交到我们C#的项目中。这是一个Java Project项目,那么久需要将他打包成为一个可执行文件,这样才能被被广泛使用在服务器上。因为不可能为每一个服务器都安装Eclipse,然后运行
ant编译android项目
如果是没有android library 项, 执行tools下面的android命令:android update projec android update project -p . -t android-21 如果有android library先到library下面执行android update lib-project -p ./  (注意是 lib-project) 再回到项
android工程中关联Library Project 后打包的问题(在线急等)
在eclipse下打包,但是却打包失败,除了给了失败的提示没有其他提示了
Android Ant更新项目
通过更新项目,让项目自动生成build.xml文件。 查看当前的已安装的sdk版本: android list target 更新本项目,自动增加build.xml文件: android update project -n HttpTestDowns -t 11 -p /Users/Ari/Desktop/LEE/HttpTestDown      -n  对应的是项目名称      -t...
android ant 混淆 打包问题
rnrn请问大神们这可能是什么原因导致的呢?在线等。。。rn
简单的android ant 批量打包
1,配置JDK(略),我用的是1.7版本。 2,下载ant,我用的是1.9.6版本,下载地址http://share.weiyun.com/b1b4fbc63ec3fb7008353866ec8ad596密码是RlAG。 3,配置ant环境变量,直接解压下载的ant压缩包,      点击我的电脑->属性->高级->环境变量,       新建系统变量ANT_HOME,变量值为
ant 打包android工程 的问题
通过ant打包android工程,别的问题都解决了,就是我的工程有JNI,标准的apk  在根目录有个libs文件夹,里面放的so文件,但是我现在不能将so打进去,也就是说我生成的apk压根没有libs目录,求解啊,ant怎么打包jni。求教啊!!
Ant批量打包Android应用
Ant批量打包Android 应用教程地址http://blog.csdn.net/zhaokaiqiang1992/article/details/38086747
Android创建Library Project(库项目)与引用操作
Android创建Library Project(库项目)与引用操作,演示案例与相关基本操作
Android采用Ant批量打包
Ant批量打包的目的是:Android应用市场繁杂,有时候可能需要统计你的app在各个渠道的下载量等信息,而统计各个渠道时是要做区分的,你需要在项目的配置文件中添加数据元,来标示我们的应用是在哪个渠道上发布的。 1、准备工作: 在正式开始Ant打包前,需要下载和配置Ant环境,下载地址:ant下载  下载后解压安装包,解压后的目录如下: 接下来就是配置Ant的环境变量:
ant 打包android工程 的问题
通过ant打包android工程,别的问题都解决了,就是我的工程有JNI,标准的apk 在根目录有个libs文件夹,里面放的so文件,但是我现在不能将so打进去,也就是说我生成的apk压根没有libs目录,求解啊,ant怎么打包jni。求教啊!![img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif][/img]
Ant批量打包android程序
该配置成功对android实现了多渠道批量打包,采用的是友盟的渠道号,其他的则需要修改,还有对library项目不能直接打包,可以采用将library资源拷贝到项目中的方式曲线救国。详见:http://blog.csdn.net/luoxiangyu001/article/details/8838608
ant 打包ant
ant 从创建文件到打包.jar打包zip到发布到ftp服务器等一系列的解决方法和源码(使用前请先下载MindManager )
android ant build脚本代码
ant build脚本代码,自动化多渠道打包,自定义任务打包 具体看一下这篇博客 http://blog.csdn.net/lsmfeixiang/article/details/49681583
ant脚本资料ant
ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料ant脚本资料
Ant脚本打包Android程序的demo 多渠道及第三方JAR打包
build_with_bat是基于bat脚本实现的。 build是在build_with_bat的基础上实现的,主要是在compile和dex部分增加了第三jar的打包。 build_mulity_channel是多渠道打包脚本。该脚本需要ant-contrib-1.0b3.jar的支持。包中已包含,需要将其放到ant的lib文件夹下。">build_with_bat是基于bat脚本实现的。 build是在build_with_bat的基础上实现的,主要是在compile和dex部分增加了第三jar的打包。 build_mulity_channel是多渠道打包脚本。该脚本需要ant-contrib-1.0b3.jar的支持。包中已包含,需要将其放到ant的lib? [更多]
ant脚本实现jenkins一键打包javaweb项目
1.在myeclipse中ant脚本打包成功后部署可以正常访问,在jenkins中打包后部署无法正常访问,一样的ant脚本,启动tomcat后报错缺少配置文件,对比两个war包发现jenkins打的war中classes文件夹下面没有src下的配置文件,手动增加ant脚本拷贝所有配置文件的文件夹到classes文件夹中问题解决,2.jenkins编译失败,开发eclipse可以编译通过将ant编译...
Powershell(脚本) Ant(编译)实现一键打包
Powershell(脚本) Ant(编译)实现一键打包
Ant 打包
配置ant环境变量 创建android项目 dos 下,进入到我们项目里 输入 android update project –path . 在我们项目下,会生成  build.xml ,local.project.txt ,proguard-project.txt 手动创建ant.properties文件,里面写入签名的作者,密码等 ant release 完成,我们的签名apk生成...
ant 打包
1安装ant ,添加ant环境 2运行cmd,进入安卓项目目录,执行命令:android update project --path .(此步骤生成三个文件,build.xml  local.properties  projuard-project.txt) 3手动创建文件ant.properties,一下是该文中的内容,主要用于给apk签名    key.store=my.
library与project的通信方式
一种使用接口  一种使用广播(这个最方便)
ant脚本
-
ANT脚本
ANT脚本,支持SVN check ,编译,发布,自启动
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview