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

问题描述

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"" /><!--mJgen表示创建包名的目录和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=""dexpackage-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>

解决方案

Android通过ant脚本打包带Library project的方法
Android通过ant脚本打包带Library project的方法
Android ant 脚本打包(一)

解决方案二:
我就参考的这些文章,然后出的问题··························

时间: 2024-10-12 05:49:07

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

Ubuntu服务器ant批量打包apk环境搭建

最近在做一个电子书生成的项目,需要根据电子书的内容资源在线添加后自动打包成不同的包名的APK,同时自动添加各个市场渠道等内容信息,由于需要与后端联动,一键生成,所以必须在服务器上进行Android项目的打包生成,因为服务器是UbuntuServer,没有图像界面,所有只能搭建一个命令行环境,直接执行ant脚本打包,找了一下资料,根据自己的环境配置搭建过程与大家分享 Ant环境准备 最简单的就是使用:  代码如下 复制代码 sudo apt-get install ant   或者是手动安装: 一

java利用Ant脚本生成war包全过程_java

使用ant脚本前的准备 1.下载一个ant安装包.如:apache-ant-1.8.4-bin.zip.解压到E盘. 2.配置环境变量.新增ANT_HOME:E:\apache-ant-1.8.4:PATH增加:E:\apache-ant-1.8.4\bin. 3.检查ant是否配置完成.运行->cmd输入:ant -version.查看是否打印ant的版本号. 打包的实质生成jar包的实质 1.编译工程src文件夹下的java文件,生成相应的class文件. 2.将所有的class文件集合成j

warnings-android ant 混淆 打包问题

问题描述 android ant 混淆 打包问题 请问大神们这可能是什么原因导致的呢?在线等... 解决方案 proguard-project.txt 文件已加了以下相关配置 -ignorewarnings -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -verbose -optimizations !

Eclipse下配置Ant脚本并自动打包带签名的Android apk_Android

eclipse虽然用的比较少,但是在一些古老的项目上还会用到滴,其中最麻烦的事情就是打带签名包的问题,不太方便,下面通过本文给大家记录下配置ant,自动打包带签名apk的过程,作为备份.(PC环境为MAC) 1,第一步得安ant,下载对应安装包,解压后配置环境变量: export ANT_HOME="/Users/yanzi/work/apache-ant-1.9.4" export PATH=${PATH}:${ANT_HOME}/bin 通过which ant检查是否安装成功. 2

Eclipse下配置Ant脚本并自动打包带签名的Android apk

eclipse虽然用的比较少,但是在一些古老的项目上还会用到滴,其中最麻烦的事情就是打带签名包的问题,不太方便,下面通过本文给大家记录下配置ant,自动打包带签名apk的过程,作为备份.(PC环境为MAC) 1,第一步得安ant,下载对应安装包,解压后配置环境变量: export ANT_HOME="/Users/yanzi/work/apache-ant-1.9.4" export PATH=${PATH}:${ANT_HOME}/bin 通过which ant检查是否安装成功. 2

Android使用Ant技术打包详解

Ant使用 在ant的官网http://ant.apache.org进行下载后apache-ant-1.8.2包 解压(存放的路径不要有中文字符) 把ant里的lib设置到环境变量:E:\Android\apache-ant-1.8.2\lib 这样在命令行里就可以直接使用ant 学习资料: 1. ant使用指南.rar 2. 文档:apache-ant-1.8.2/docs/manual/index.html下的Ant Tasks à List of Tasks Ant的For循环 在ant的

android ant最简单的打包签名及混淆方法

使用ant打包,如果脚本都是我们自己一步一步来写的话,是一个比较麻烦的东西. 关于ant,我们详细看下: ant支持 ant debug,ant release等命令,我们需要签名混淆,那么就需要ant release这个命令. 首先:ant环境搭建,这我就不多说了,很多博客都有介绍,包括一些环境配置 然后:ant环境可以之后,我们需要一个 build.xml文件,这个是ant编译去找的一个东西 <?xml version="1.0" encoding="UTF-8&q

android使用ant自动打包(包括更改文件中的内容)

在ant打包过程中的一些学习所得以及用于这个项目的build文件的大体思路如下: 首先配置好整个系统所需的ant编译环境,在build.properties中配置好相关的参数.(build.properties文件主要包涵了一些在编译中需要用到工具的路径,以及一些需要配置的参数,如应用包名,项目名,以及一些需要传入的参数.写在build.properties中主要是为了方便配置文件的集中管理)在这次ant打包的需求中,需要修改一个java文件中的两个常量属性.根据这样的需求,首先需要拿到普通an

android library-Android library project 包含第三方 jar 档案

问题描述 Android library project 包含第三方 jar 档案 请问,要如何在Android library project中打包第三方的jar? 假设有 2 个 library project (A, B) 和 1 个 application project (C) 我把 Abina.jar copy to Blibs ,再将 Bbinb.jar copy to Clibs sample code如下: public class A { public void run()