美高梅娱乐4858.comandroid自动包方法(ant+proguard+签名)

 

 1、分布式对象中件:ICE
    
ICE是分布式对象中件领域里的新锐,可以大致地用那视为“改进版本”的CORBA。目前应用在一些大型项目当中,其中囊括波音公司牵头的晚辈陆军作战系统。
    
ICE的一个特别值是彼代码的范例意义。由于ICE的出现比较晚,开发者比较系统地利用了新的C++编程风格,所以变成了研读C++代码的精良目标。

 

xerces-c
:最强劲的XML解析库了,不是一味在开源库里,你尽管将商业的终究在内。当然,它的变体,被IBM拿去贩卖钱之万分本,多矣数百兆的东东来支持各编码转换,是又有力,但自身当有很小,开源的iconv在前边不就是足足了?

<!– 签名相关的密码 –>

优点:有用之社区;大量功力;定期开发;

                     Check whether obfuscation should happen, and put
the result in a property.

   我于喜欢OTL(用于连接数据库)。其他的尚未因此了

<property name=”java.source” value=”1.5″ />

C++以“商业利用”方面,曾经是典型的开支语言,但当下同样光已经被java抢活动多年。因为本买卖应用程序类型,已经从桌面应用迅速转换成
Web应
用。当Java横行天下之后,MS又出人意料发力,搞出C#语言,有大片的曾的C++程序员,以为C++要就是这个深陷,未料,这三年来,C++的肥力突然给
严重地增进了。主力原因就是是开源的软件、基础软件(比如并发原生支持,比如Android必定要产原生的SDK)、各种跨平台应用之面世。

 

可取:容易达成亲手;跨平台;自带XML解析器;大之社区;

<!– property only set in debug mode.

 

              the emulator. –>

  1. Panda3D http://www.panda3d.org/

<if condition=”${proguard.enabled}”>

图像引擎中最为好的一个。2000年及时的起。推荐以C++语言。需要特别熟悉编程才实施。初学者不宜。

于是开始找ant+proguard+签名的自包方,遗憾之是材料不是缺手就是断脚。

  • SlimXml: 22ms
  • TinyXml: 54ms
  • RapidXml: 4ms!

 

症结:不切合初哥;只有图像引擎

<taskdef name=”if” classname=”com.android.ant.IfElseTask”
classpathref=”android.antlibs” />

c的图形图像库较多,libjpeg、libpng、zlib、tiff、JBIG、最知名的开源形图像处理软件Cximage

<macrodef name=”package-helper”>

缺点:缺乏工具支持;极差的文档;

<!– Set the project jar files Path object into a single property.
It’ll be

   BCG Windows平台下界面设计之老三方库,可以为你的界面更美好,更具时 代感。

 

短:最近出慢下来了

<macrodef name=”dex-helper”>

  1. Irrlicht http://irrlicht.sourceforge.net/

<then>

 哥更倾向被TingyXml.小巧啊!

 

相同、通用标准类

<!– properties for signing in release mode –>

 

 

  OpenCV,因特尔自主的开源库。支持C/C++/Python接口。这个感兴趣之心上人可打一下。如果构成OpenCV,你可做一些外行人觉得怪特别的次第。比如说用它的人脸识别函数,来对您的摄像头进行拍卖,判断人之动作等

<!– Configurable macro, which allows to pass as parameters output
directory,

冲博友的如出一辙首博文http://www.cnblogs.com/wuqi924/archive/2010/11/18/1880950.html

 

十三、配置管理:Lua
    随着软件系统越来越复杂,对软件的只是配置型提出了尤其高之求。传统上如经命令执行参数来安排的系统,现在可能需要更进一步多之办法以及建制。目前愈加
受欢迎、并且获得越来越多证的做法,是以Lua嵌入到C/C++程序中,而因此Lua程序作为配置脚本。这种做法的优势是,Lua语言强大灵活,可以适应
复杂的配备要求。同时,Lua便于嵌入C/C++程序,而且编译执行进度杀急匆匆,可以说凡是时缓解C/C++程序配置管理问题的一个美妙方案。

</else>

开源C++库,称为POCO(POrtable COmponents –
可移栽元件),非常便利好用。

                    -verbose

五、网络开发类

<target name=”-set-debug-mode” depends=”-debug-obfuscation-check”>

开头为2003,次年尽管被评为最佳开源游戏引擎。官方支持C++和.Net,拓展语言绑定包含java,perl,ruby,python.跨平台支撑,使用D3D,OpenGL以及自带API.

 

六. 计算机视觉

<zipalign-helper in.package=”${out.unaligned.file}”
out.package=”${out.release.file}” />

tips:目前,我正研究delta开源引擎,并采取该付出一个袖珍游戏。

<if condition=”${proguard.enabled}”>

1997年批发,用C++编写的开源游戏引擎。推荐下C++

              keystore/key alias set –>

 可以运作的平台包括:

<property name=”out.debug.file”
location=”${out.absolute.dir}/${ant.project.name}-debug.apk” />

季、多媒体类

<zipalign-helper in.package=”${out.debug.unaligned.file}”
out.package=”${out.debug.file}” />

 

<property name=”resource.dir” value=”res” />

本着三单轻型xml解析开源库:SlimXml、TinyXml、RapidXml,对比如下:

 

十一、中间件

<echo>Creating output directories if needed…</echo>

 

</target>

开源C++库必须怀有以下特点:必须是成熟的成品、跨平台的制品、相对通用的库。

</apkbuilder>

C++的XML相关库不少,但是大部分实际都是C库,使用起来自然不那么便民。其中因DOM的有TinyXml,基于SAX的当然是Xerces。前者小巧快捷,便于使用,适合做数据交换。后者则是均职能的XML解析器。

<property name=”out.unaligned.file”
location=”${out.absolute.dir}/${out.unaligned.file.name}” />

  xsd (XML 与 C++数据结构的绑定工具)。(商业利用要钱)

<!– set the secondary dx input: the project (and library) jar files

   boost:C++准标准库,它是无往不胜地,江湖称的“千锤百炼”。

                 -obfuscate

七. 图形图像处理

<!– Compiles this project’s .java files into .class files. –>

六、GUI库

<condition property=”verbose.option” value=”–verbose” else=””>

 1)
消息网遭到,它基本上是最好精简的,只是单简单之API,有n多种语言的绑定,没有特别的服务器; 
 2) 性能大优惠,远远高于RabbitMQ、ActiveMQ、MSMQ等; 
 3) 适合做分布式和出现应用。

<pathelement path=”${sdk.dir}/tools/lib/sdklib.jar” />

   —摘录别处,自己,没因此过

</apply>

wxWidgets :使用wxWidgets ,开发者可以依据相同套代码,为Win32, Mac OS X,
GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库可以让C++, Python,
Perl, and
C#/.NET等开销语言应用。跟其他小同样支持逾平台GUI开发工具不同,基于wxWidgets的应用,拥有真正本地化的视觉及采取力量——因
为,wxWidgets使用(各)平台原生的控件,而休是大概通过贴图去学。wxWidgets是采取大规模的,自由的,开源的,成熟之。

<property name=”adb.device.arg” value=”” />

 1、gSOAP SOAP协议的C++支持库及代码生成工具。

<then>

3、有博友回复到POCO。我整如下:

</target>

而外ACE之外,还有好多网跟网络编程方面的程序库。比如在线程库方面,还有ZThread、boost::thread,如果加大至C/C++
领域,
还有APR,还有CII。在文件及目录操作方面,boost也生照应的机件,而在网编程方面发出socket++,还有boost::asio,未来的
C++0X中几乎肯定有一个网络编程和一个线程库。然而当下总的来说,ACE仍然是开展系统跟强性能网络编程的首选,其身份在一段时间内未会见为撼动动。它不但是
一个实用的程序库、框架集,还是一个样子的设计模式应用范例,非常值得学习。

 

三、数据库

</if>

 * Windows
* Mac OS X
* iPhone OS
* (embedded) Linux
* HP-UX
* Tru64
* Solaris
* QNX

<sequential>

亮点:适合各种3D游戏,仿真,很全面。一直于召开创新。

         proper rules.

 

前段时间做了一个android的网游项目,现在优化减少体积和防止别人反编译,需要拿编译后.class进行模糊,开始在网上看了部分有关
ProGuard的牵线,基本上都是采取ADT自带的由包方,那个包方式最慢了,还要手工输密码,一个字烦。

瑜:不错的社区支持;大量效能;

<property name=”android.platform.tools.dir”
location=”${sdk.dir}/platform-tools” />

QT————-界面(GUI)开发,支持C++/Java/Python/…多种语言。跨平台。最要害的补益是,API非常优
美!Qt本身也不仅仅只是做GUI编程,实际它多可以开OS-API可以开的另外事情。象网络/数据库/OpenGL/…还提供完善的支撑。

              declared in default.properties.

八、内存管理:boost::smart_ptr,Hans-Boehm GC
   
C/C++的内存管理是一个稳定的话题。一般的话,C++的开发者倾向被自己管理内存。然而,出乎很多C++开发者意料的是,近期C++的片段领袖人物已
经公开声称,如果未布置电动内存管理机制,用C++编写安全可靠的大型程序是挺不方便的。而Bjarne
Stroustrup也就针对华开发者建议,如果没有特别之理,应该以大型项目中运用自动内存管理工具。因此,今天的C++开发者应当积极地念与行使
自动内存管理设施。
   
说到机关内存管理,比较轻量级的做法是boost::smart_ptr,而激进的做法是引入完整的GC机制。目前开头源使又比可靠的GC中,Hans-
Boehm GC无疑是最为让信赖的。作为一个保守的GC,Hans-Boehm
GC在性及机能方面还算是出众。特别是,使用这GC,你仍然可以delete、free来自己管理内存,对于咱们编程习惯的冲击比粗。

                        –>

  传统上Qt被看是可移栽的GUI库,但实际上Qt现在早已是一个比较完好的而移栽应用程序框架了,其中富含了汪洋的家伙,比如正则表达式、
Web和
Socket类、2D同3D图形、XML解析、SQL类等,甚至还连了一个完完全全的器皿类库,不了该王牌还是GUI。在现阶段之跨平台GUI框架中,Qt成
熟度最高,已经于有些可怜商厦采取在重点产品中。由于Trolltech对Qt采用的dual
license模式,该产品既可以从开源社区获得支持,又能赚取足够的商业利润,因此其前景也让人较有信念。
   
Qt的重中之重技术特色是其元对象模型。Qt实际上采取的连无是正统的C++,而是规范C++的一个恢宏。它经过长对象模型扩展,实现了资深的signal/slot机制,而及时同样建制为变成Qt的极其要命特色及优势。
    与Qt类似的但是移栽GUI框架还有wxWidget、FOX等

</then>

由迪斯尼开发,卡耐基-梅隆娱娱乐科技骨干支持。Python是合法推荐语言。也支持C++。

</target>

iconv /iconvpp : (C形式的编码转换函数库,

<delete file=”${preobfuscate.jar.file}” />

 

<!–

解析是3.3万尽,1.5M轻重缓急的xml,三只仓库分别花了

<path id=”out.dex.jar.input.ref” />

九、密码及康宁:OpenSSL
   
安全是今天展开C/C++编程无法避开及必重视的题材。然而编写安全之应用程序,特别是同网络有关的C/C++应用程序,是如出一辙宗十分困难的政工。可以
说,整个业界目前在是进程上依然处在“初级阶段”。特别是关系到大方的安、密码学相关的算法、规范,如果让开发者自己找,其工作量及难度及了不现
实的水平。因此须依赖可靠的系程序库才有或增长程序的安全性。在马上方面,OpenSSL是眼前最好好之抉择,其情的全面可靠,已经化为业界标杆。然
而,由于安全编程固有的复杂性,即使采用penSSL,开发工作还是是老大麻烦的。因此我们也盼望能尽早看到重复简短、更易于用的C/C++安全程序库。

<mkdir dir=”${out.classes.absolute.dir}” />

2、消息中间件:ZeroMQ,总结的几栽特色如下:

<res path=”${resource.absolute.dir}” />

 

 

对应的c开源库有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒体播放器
TCPMP 天下闻名的跨平台、嵌入式手执设备视频播放器,

              -install-with-emma which do exactly the same but differ in
dependencies –>

——-若掌握,必横行世界。

<else>

  还有irrlicht(鬼火引擎)的irrXMl解析器。

<condition property=”has.keystore” value=”true”>

敲定是,RapidXml果然十分胆大,居然比SlimXml快5倍多。

<and>

2、ACE  网络编程研究首选。
ACE适合给研究,大型网络编程上效率不足,大型网游中几乎从未利用ACE的,很多之所以了ACE的种也被验证了频率不愈。

<!– Macros –>

 

<arg value=”–dex” />

Delta3D是均等慢由美国海军研究学院(Naval Postgraduate
School)开发的皆效游戏跟假引擎,得到美国军方巨大的支持与富有的投资。该发动机应用领域极为常见,如开发在培育、教育、娱乐行业以及科学计算可视化领域等方面建模与虚假的软件。

                    -libraryjars ${android.libraryjars}

 

<setup import=”false” />

十四、3D游戏引擎:

<!– 生成的混淆Class位置–>

 

<aidl executable=”${aidl}” framework=”${android.aidl}”
genFolder=”${gen.absolute.dir}”>

       

<!– The final package file to generate

  1. OGRE http://www.ogre3d.org/

<path refid=”jar.libs.ref” />

正如欣慰之是,在从来不非常关心效率的景下,SlimXml仍然比TinyXml快
2.5加倍。SlimXml走的凡粗略小巧路线,源代码只有
32k,而TinyXml和RapidXml的源码分别是147k暨141k,有这般的效率可以满意了。因为这库房重点还是针对几十及百行的粗文件,解析
特别坏的xml不在自家考虑的限定里边。

                    -dontpreverify

十二、正则表达式:boost::regex
    正则表达式是编程工作中最好劲的家伙之一。C++的正则表达式支持直接以来是一个软肋。大约在2001年左右,boost中起了regex库,初步解
决了是题材。但是早期的regex无论以效率上要可靠性方面还发出局部问题,后来经过同糟糕大规模的翻盖之后,达到了比较完善的程度。
    其他可以择的替代品还有C语言的pcre库,Qt中之QRegExp类等。

<extra-jars />

GDAL,处理非常图像。 要是GIS专业的丁自然会语言及特别非常的tif影像,动则几个GB的飞影像。GDAL对老图像的读写支持是格外强的(像多波段的图像都好搞定)。  支持C++/Java/Python…

<if condition=”${manifest.hasCode}”>

缺点:参考资料比较少。中文文档也较少。官方参考资料比较少。但是读源代码可以加速明,应用。

<nativefolder path=”${native.libs.absolute.dir}” />

十、矩阵计算:MTL
    自1995年吧,C++于科学计算领域中获得了赫赫的突破。这第一归功给template技术的尖端应用,使得C++在科学计算的习性方面得到了伟大
的腾飞,一好批判美之C++科学计算库涌现出。比如Blitz++、POOMA、MTL、Boost::uBLAS。而这间,MTL就功能丰富程度、
性能、开发支持及成熟程度来讲,是比较突出的一个,因此可以先考虑。值得一提的凡,2002年,MTL与后来为Intel收购的KAI
C++配合,曾经当性能测评中战败了FORTRAN。

<and>

二、XML解析库

<target name=”-package-resources”>

 特性:

 

5、Delta3d   http://www.delta3d.org/index.php

<java jar=”${proguard-jar}” fork=”true” failonerror=”true”>

优点:大量功效;优异的文档;大规模的社区;活跃的出

<property name=”out.release.file.name”
value=”${ant.project.name}-release.apk” />

 

 

国外开源之GIS软件QGIS就是用了gdal

<isset property=”key.store.password” />

 deelx
(轻量级的正则表达式解析类库,国产),boost里生强的正则表达式解析库,但如你唯有想如果一个表达式解析,不思要拖上硕大的boost库时……支持一下国货。

<!– Custom tasks –>

缺点:难学;

<property name=”filter.abi” value=”” />

   STL:C++标准模板库,呵呵,它吧是开源之嘛。

<else>

她的口径设计将一部分名开源软件及引擎如 Open Scene Graph(OSG),
OpenDynamicsEngine (ODE), Character Animation Library (CAL3D), 还有
OpenAL融为一体。Delta3D通过对这些底层模块进行隐藏封装,整合在一起从而形成了一个运更便利之尖端API
函数库,使得开发者在必要的当儿能利用底层函数进行二次开发。Delta3D在软件系列被,处于中间层(Middle
layer)的职及。

<!– java源文件编码,编译的靶子平台,为1.5 or 1.6且可以 –>

 SDL (Simple DirectMedia Layer/多媒体直接访问层,用于打编程)。

<!– signing mode: debug –>

 * 线程,程序并跟多线程编程高级抽象
* 流及文件系统访问
* 共享库将类似加载
* 功能强大的日记与错误报告
* 安全与加密
* 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3,
等)
* XML解析 (SAX2 和 DOM) 及生成
* 配置文件以及挑选处理
* SQL数据库访问(ODBC, MySQL, SQLite)

<target name=”-pre-build” />

  1. Crystal Space http://www.crystalspace3d.org/main/Main_Page

<!– 混淆相关参数 –>

 

</if>

 

                             tested project’s location –>

</then>

<arg value=”–output=${intermediate.dex.file}” />

              value.–>

<!– Emma configuration –>

<sequential>

</sequential>

<!– property only set in release mode.

<dex path=”${intermediate.dex.file}” />

<aapt executable=”${aapt}” command=”package” verbose=”${verbose}”
manifest=”AndroidManifest.xml” androidjar=”${android.jar}”
rfolder=”${gen.absolute.dir}”>

<!– proguard is never enabled in debug mode –>

 

                    -optimizationpasses 5

<!– whether the build is a debug build. always set. –>

             Override the following targets in your build.xml, before
the call to <setup>

<!– Puts the project’s resources into the output package file

<if>

</if>

<!– Packages the application and sign it with a debug key. –>

<!–这些是原来的Jar<delete file=”temp.jar”/>–>

<!– 签名密码 –>

<arg value=”-keep public class * extends android.view.View” />

<property name=”asset.dir” value=”assets” />

<taskdef name=”proguard” classname=”proguard.ant.ProGuardTask”
classpath=”${proguard.jar}” />

<target name=”clean” description=”Removes output files created by
other targets.”>

<property name=”out.classes.dir” value=”${out.absolute.dir}/classes”
/>

<target name=”-resource-src” depends=”-dirs, -pre-build”>

</else>

<if condition=”${manifest.hasCode}”>

                   set debuggable to true. default is false.

<!– Zip aligns the APK –>

                   Useful for if/unless attributes in target node

</if>

</condition>

</else>

<!– create a path with all the jar files, from the main project and
the

</target>

<!– Gets passwords –>

<arg value=”-f” />

<!– End of emma configuration –>

<input message=”Please enter keystore password (store:${key.store}):”
addproperty=”key.store.password” defaultvalue=”5201314..” />

</target>

<subant target=”compile”>

<fileset dir=”${extensible.libs.classpath}” includes=”*.jar” />

<jarfolder refid=”project.libraries.libs” />

</and>

<property name=”has.password” value=”true” />

 

<property name=”java.encoding” value=”UTF-8″ />

<if condition=”${manifest.hasCode}”>

<!– This is needed by emma as it uses multilevel verbosity instead
of simple ‘true’ or ‘false’

</sequential>

</then>

<!– proguard4的路径 –>

<arg value=”4″ />

<!– Verbosity –>

<isset property=”key.alias.password” />

<xpath input=”AndroidManifest.xml”
expression=”/manifest/application/@android:hasCode”
output=”manifest.hasCode” default=”true” />

<!– <nocompress /> forces no compression on any files in
assets or res/raw –>

 

<!–别人的<jar basedir=”${out-folder}”
destfile=”temp.jar”/>–>

         –>

<property name=”gen.dir” value=”gen” />

              <package-helper output.filepath=”/path/to/foo.apk”>

<!– Directory for the third party java libraries –>

<property name=”jar.libs.absolute.dir” location=”${jar.libs.dir}”
/>

<target name=”-release-obfuscation-check”>

</if>

</condition>

<!– This is needed to switch verbosity of zipalign. Depends
exclusively on ‘verbose’

 

<echo>and run zipalign from the Android SDK tools.</echo>

<!– Verbosity –>

<proguard>

<isset property=”key.store” />

<target name=”-release-prompt-for-password” if=”has.keystore”
unless=”has.password”>

<path refid=”jar.libs.ref” />

<length string=”${key.store}” when=”greater” length=”0″ />

<isset property=”proguard.config” />

<property name=”out.unsigned.file”
location=”${out.absolute.dir}/${out.unsigned.file.name}” />

</macrodef>

<isset property=”tested.project.absolute.dir” />

 

</exec>

<property name=”out.dex.input.absolute.dir”
value=”${out.classes.absolute.dir}” />

<target name=”-dex” depends=”compile, -post-compile, optimize”
unless=”do.not.compile”>

</condition>

<!– Rules –>

<property name=”out.debug.unaligned.file”
location=”${out.absolute.dir}/${ant.project.name}-debug-unaligned.apk”
/>

<!– This is macro that enable passing variable list of external jar
files to ApkBuilder

<arg line=”${v.option}” />

<project name=”xiyou_base_” default=”deployableAllDevice”>

<istrue value=”${verbose}” />

<!– Builds debug output package, provided all the necessary files
are already dexed –>

<echo>Generating R.java / Manifest.java from the
resources…</echo>

              Example of use:

<!– Value of the hasCode attribute (Application node) extracted from
manifest file –>

<apkbuilder outfolder=”${out.absolute.dir}”
resourcefile=”${resource.package.file.name}”
apkfilepath=”@{output.filepath}”
debugpackaging=”${build.packaging.debug}”
debugsigning=”${build.signing.debug}” abifilter=”${filter.abi}”
verbose=”${verbose}” hascode=”${manifest.hasCode}”>

 

<jarfolder path=”${jar.libs.absolute.dir}” />

<pathelement location=”${emma.dir}/emma_ant.jar” />

<!– Packages the application without signing it. –>

<property name=”adb”
location=”${android.platform.tools.dir}/adb${exe}” />

 

<echo>**** Android Manifest has debuggable=true
****</echo>

                    -keep public class * extends android.app.Service

<echo>Release Package: ${out.release.file}</echo>

<!– Generates the R.java file for this project’s resources. –>

<arg path=”@{in.package}” />

 

<target name=”optimize” depends=”compile,-obfuscate”>

<property name=”jar.libs.dir” value=”libs” />

<property name=”android.tools.dir” location=”${sdk.dir}/tools” />

<condition property=”proguard.enabled” value=”true” else=”false”>

<echo>hasCode = false. Skipping…</echo>

<!– This is needed to switch verbosity of dx. Depends exclusively on
‘verbose’ –>

<xpath input=”AndroidManifest.xml”
expression=”/manifest/application/@android:debuggable”
output=”build.packaging.debug” default=”false” />

</path>

default.properties 内容

 

<!– Tells adb which device to target. You can change this from the
command line

 

<target name=”-package-release” depends=”-dex,
-package-resources”>

<property name=”intermediate.dex.file”
location=”${out.absolute.dir}/${dex.file.name}” />

<!– signing mode: release –>

<property name=”zipalign”
location=”${android.tools.dir}/zipalign${exe}” />

                        –>

</condition>

</if>

<condition property=”has.password” value=”passwordxxxxx”>

 

<else>

 

<!– empty default pre-build target. Create a similar target in

                    -keep public class * extends android.app.Activity

<res path=”${resource.absolute.dir}” />

             This is only active in release builds when proguard.config
is defined

<path id=”out.dex.jar.input.ref”>

<!– input for dex will be proguard’s output –>

<istrue value=”${verbose}” />

<arg value=”-injars ${out.dir}/classes” />

<property name=”build.signing.debug” value=”false” />

<property name=”source.dir” value=”src” />

</target>

<target name=”-obfuscate” unless=”do.not.compile”>

                         Set property out.dex.input.absolute.dir to be
the output of the obfuscation

<echo>*************************************************</echo>

<arg value=”-dontwarn” />

<attribute name=”in.package” />

                    -keep public class
com.android.vending.licensing.ILicensingService

<property name=”build.mode.release” value=”true” />

              output dex filename and external libraries to dex
(optional) –>

<property name=”preobfuscate.jar.file”
value=”${obfuscate.absolute.dir}/original.jar” />

<!– empty default pre-compile target. Create a similar target in

 

<property name=”native.libs.absolute.dir”
location=”${native.libs.dir}” />

<target name=”compile” depends=”-resource-src, -aidl, -pre-compile”
description=”Compiles project’s .java files into .class files”>

<aapt executable=”${aapt}” command=”package”
versioncode=”${version.code}” debug=”${build.packaging.debug}”
manifest=”AndroidManifest.xml” assets=”${asset.absolute.dir}”
androidjar=”${android.jar}” apkfolder=”${out.absolute.dir}”
resourcefilename=”${resource.package.file.name}”
resourcefilter=”${aapt.resource.filter}”>

<exec executable=”${zipalign}” failonerror=”true”>

              different values –>

<echo>Debug Package: ${out.debug.file}</echo>

<!– empty default post-compile target. Create a similar target in

              before, then this will create them with empty values,
which are then ignored

<delete file=”${obfuscated.jar.file}” />

<property name=”aapt.resource.filter” value=”” />

<target name=”-dirs”>

<isreference refid=”out.dex.jar.input.ref” />

<echo>hasCode = false. Skipping…</echo>

              called by -release-no-sign)–>

<arg line=”${verbose.option}” />

                    -outjars ${obfuscated.jar.file}

<isset property=”key.alias” />

 

<arg path=”${out.dex.input.absolute.dir}” />

<fileset dir=”${tested.project.absolute.dir}” includes=”build.xml”
/>

<arg value=”-keep public class * extends android.app.Activity” />

<property name=”proguard.home”
value=”D:/software/j2me/proguard4.5.1/proguard4.5.1″/>

               <delete file=”optimized.jar”/>–>

</then>

<sequential>

<property name=”android.libraryjars” refid=”android.target.classpath”
/>

<echo>*************************************************</echo>

<!– sdk的路径 –>

</condition>

<path id=”jar.libs.ref”>

 

</target>

</if>

<apply executable=”${dx}” failonerror=”true” parallel=”true”>

<property name=”key.store.password” value=”xxxx” />

<echo>No key.store and key.alias properties found in
build.properties.</echo>

<mkdir dir=”${out.dir}/out/class” />

<target name=”deployableAllDevice” description=”build all device
packet”>

 

<target name=”-release-nosign” unless=”has.keystore”>

<then>

<pathelement location=”${preobfuscate.jar.file}” />

              by invoking “ant -Dadb.device.arg=-d” for device “ant
-Dadb.device.arg=-e” for

<!– Name of the application package extracted from manifest file
–>

<extra-parameters />

<if condition=”${manifest.hasCode}”>

</target>

<path refid=”out.dex.jar.input.ref” />

<property name=”source.absolute.dir” location=”${source.dir}” />

proguard.config=proguard.cfg

</aidl>

 

 

<!– 源文件及资源路 –>

</target>

</if>

</sequential>

<property name=”project.jars” refid=”project.jars.ref” />

<property name=”emma.dir” value=”${sdk.dir}/tools/lib” />

<sourcefolder path=”${source.absolute.dir}” />

<path refid=”project.libraries.jars” />

<taskdef name=”setup” classname=”com.android.ant.SetupTask”
classpathref=”android.antlibs” />

<!– If android rules are used for a test project, its classpath
should include

<property name=”proguard-jar”
value=”${proguard.home}/lib/proguard.jar” />

<arg value=”-keep public class * extends
android.content.BroadcastReceiver” />

              your build.xml and it’ll be called instead of this one.
–>

<isset property=”build.mode.release” />

                   when using Ant before 1.8 –>

<arg line=”${adb.device.arg}” />

                 -repackageclasses

<echo>**** Doing DEBUG packaging with RELEASE keys
****</echo>

</condition>

                             This include the project compiled source
code and any 3rd party jar

</subant>

 

target=android-4

<mkdir dir=”${resource.absolute.dir}” />

 

                     <jarfolder path=”your_jars” />

</else>

 

              debug, -debug-with-emma and release.–>

                     If true:

<isset property=”has.keystore” />

<classpath>

</then>

<src path=”${source.absolute.dir}” />

              This actually can create multiple resource package in case

<antcall target=”release” inheritAll=”true”><param name=”uid”
value=”101″ /><param name=”sdk” value=”90″ /></antcall>

                     <jarfile path=”foo/bar.jar” />

 

                    -keep public class * extends
android.app.Application

</target>

 

<property name=”key.alias” value=”key.keystore” />

<property name=”proguard.jar”
location=”${proguard.home}/lib/proguard.jar” />

<property name=”obfuscate.absolute.dir”
location=”${out.absolute.dir}/proguard” />

</condition>

                        If a pre-dex task sets it to something else this
has no effect –>

<target name=”-debug-obfuscation-check”>

<!– Obfuscate target

<arg value=”-r” />

<!– Signs the APK –>

              your build.xml and it’ll be called instead of this one.
–>

 

 

 

<echo>Please sign ${out.unsigned.file} manually</echo>

<taskdef name=”apkbuilder” classname=”com.android.ant.ApkBuilderTask”
classpathref=”android.antlibs” />

</java>

<package-helper output.filepath=”${out.unsigned.file}” />

<macrodef name=”install-helper”>

              –>

                             all the jar files separated by a platform
path-separator.

                             jar files will be in the obfuscated jar
–>

</exec>

</project>

</target>

 

<then>

                             Useful for if/unless attributes in target
node

<path id=”project.jars.ref”>

 

<mkdir dir=”${gen.absolute.dir}” />

<property file=”default.properties” />

              Some custom apk with specific configuration have been

<property name=”out.release.file”
location=”${out.absolute.dir}/${out.release.file.name}” />

<property name=”version.code” value=”” />

<else>

</path>

</and>

<!– This is macro used only for sharing code among two targets,
-install and

 

              libraries –>

<macrodef name=”zipalign-helper”>

</target>

 

<target name=”debug” depends=”-set-debug-mode,
-compile-tested-if-test, -package-debug-sign” description=”Builds the
application and signs it with a debug key.”>

<xpath input=”AndroidManifest.xml” expression=”/manifest/@package”
output=”manifest.package” />

<!– called through target ‘release’. Only executed if the keystore
and

<os family=”windows” />

 

                     Obfuscation should not happen. Set the same
property to false.

<property name=”has.keystore” value=”true” />

</target>

<property name=”key.alias.password” value=”xxxx” />

 

<?xml version=”1.0″ encoding=”UTF-8″?>

 

<echo>hasCode = false. Skipping…</echo>

<istrue value=”${verbose}” />

<!– release mode is only valid if the manifest does not explicitly

 

 

<condition property=”extensible.classpath”
value=”${tested.project.absolute.dir}/${out.dir}/classes” else=”.”>

<property name=”dex.file.name” value=”classes.dex” />

<then>

<delete dir=”${gen.absolute.dir}” verbose=”${verbose}” />

              These can be overridden by setting them earlier to

 

                             all the jar files separated by a platform
path-separator.

 

<path id=”android.antlibs”>

<jar basedir=”${out.classes.dir}” destfile=”${preobfuscate.jar.file}”
/>

                        something else this has no effect –>

                           it is published.”>

<arg value=”-keep public class * extends android.app.Service” />

<property name=”java.target” value=”1.5″ />

<!– Properties –>

</target>

 

<!–<mkdir dir=”${out-folder}”/>

<sequential>

<echo>Compiling aidl files into Java classes…</echo>

<and>

<arg value=”-dontskipnonpubliclibraryclasses” />

 

</aapt>

                    -dontusemixedcaseclassnames

</macrodef>

<!–<target name=”-dex” depends=”compile, -post-compile,
-obfuscate” unless=”do.not.compile”>–>

 

              –>

<echo>Running zip align on final apk…</echo>

<property name=”verbose” value=”false” />

<property name=”android-jar”
value=”${sdk.dir}/platforms/${target}/android.jar” />

 

<antcall target=”release” inheritAll=”true”><param name=”uid”
value=”100″ /><param name=”sdk” value=”91″ /></antcall>

</path>

                    -keep public class * extends
android.content.BroadcastReceiver

<then>

<arg path=”@{out.package}” />

<!– 是否采用签名 –>

<arg value=”-dontusemixedcaseclassnames” />

</target>

<arg value=”-keep public class * extends
android.content.ContentProvider” />

<package-helper output.filepath=”${out.debug.unaligned.file}” />

</target>

 

<arg value=”-outjars ${out.dir}/out/classes” />

</then>

                     check if the property set in
-debug/release-obfuscation-check is set to true.

</sequential>

</path>

<arg path=”${out.debug.file}” />

 

</macrodef>

 

</target>

<arg value=”-libraryjars ${android-jar}” />

 

<taskdef resource=”emma_ant.properties” classpathref=”emma.lib”
/>

<property name=”out.unsigned.file.name”
value=”${ant.project.name}-unsigned.apk” />

                
-allowaccessmodification

<!– 输出路径 –>

                 -release-obfuscation-check

<arg value=”-repackageclasses” />

 

</path>

<else>

</else>

</javac>

<!–<delete dir=”${out-folder}”/>–>

<target name=”-compile-tested-if-test” if=”tested.project.dir”
unless=”do.not.compile.again”>

<target name=”-set-release-mode”>

 

<taskdef name=”aapt” classname=”com.android.ant.AaptExecLoopTask”
classpathref=”android.antlibs” />

</target>

</condition>

<target name=”release” depends=”-set-release-mode,
-release-obfuscation-check, -package-release,
-release-prompt-for-password, -release-nosign” if=”has.keystore”
description=”Builds the application. The generated apk file must be
signed before

<echo>Gets passwords ${has.keystore} ${has.password}</echo>

</condition>

<property name=”verbose” value=”false” />

                         Perform obfuscation

</then>

                             files. –>

              </package-helper> –>

 

<then>

 

 

</and>

<property name=”out.dex.input.absolute.dir”
value=”${obfuscated.jar.file}” />

</target>

  1. [代码][xml]代码     跳至 [1] [全屏预览]

<target name=”-aidl” depends=”-dirs”>

<mkdir dir=”${obfuscate.absolute.dir}” />

</if>

 

<property name=”out.dir” value=”out” />

<mkdir dir=”${jar.libs.absolute.dir}” />

<arg value=”-dontpreverify” />

<taskdef name=”aidl” classname=”com.android.ant.AidlExecTask”
classpathref=”android.antlibs” />

<!– 原来的接近公事,使用Bin/classes下之–>

                    -keep public class * extends
android.content.ContentProvider

<property name=”proguard.enabled” value=”true” />

<property name=”gen.absolute.dir” location=”${gen.dir}” />

<signjar jar=”${out.unsigned.file}” signedjar=”${out.unaligned.file}”
keystore=”${key.store}” storepass=”${key.store.password}”
alias=”${key.alias}” keypass=”${key.alias.password}”
verbose=”${verbose}” />

<condition property=”extensible.libs.classpath”
value=”${tested.project.absolute.dir}/libs” else=”${jar.libs.dir}”>

<exec executable=”${adb}” failonerror=”true”>

<!– set some properties used for filtering/override. If those
weren’t defined

<!– Generates java classes from .aidl files. –>

<jvmarg value=”-Dmaximum.inlined.code.length=32″ />

<if condition=”${manifest.hasCode}”>

                    -dontskipnonpubliclibraryclasses

              your build.xml and it’ll be called instead of this one.
–>

</then>

<!– 

<property name=”native.libs.dir” value=”libs” />

 

吓吧,看来得动自己了,!@#¥@#!@#!@##¥@#¥!@#@
转眼一两全,我++,终于把东西作出来

                    <arg value=” -libraryjars
${library-jar}/some_lib_used.jar”/>

              key alias are known but not their password. –>

<!– <nocompress extension=”xml” /> forces no compression on
specific file extensions in assets and res/raw –>

<property name=”out.classes.absolute.dir”
location=”${out.classes.dir}” />

<!–签名相关的key –>

<!–<arg value=”-dontskipnonpubliclibraryclassmembers”/>–>

<!– Creates the output directories if they don’t exist yet. –>

</target>

<!– Secondary dx input (jar files) is empty since all the

<javac encoding=”${java.encoding}” source=”${java.source}”
target=”${java.target}” debug=”true” extdirs=””
destdir=”${out.classes.absolute.dir}”
bootclasspathref=”android.target.classpath” verbose=”${verbose}”
classpath=”${extensible.classpath}” classpathref=”jar.libs.ref”>

<!– called through target ‘release’. Only executed if there’s no

 

<element name=”extra-jars” optional=”yes” />

<arg value=”install” />

<property name=”key.store” value=”key.keystore” />

<!– Add Proguard Tasks –>

             To replace Proguard with a different obfuscation engine:

<!– sets the primary input for dex. If a pre-dex task sets it to

<then>

<delete dir=”${out.absolute.dir}” verbose=”${verbose}” />

<input message=”Please enter password for alias ‘${key.alias}’:”
addproperty=”key.alias.password” defaultvalue=”5201314..” />

<property name=”out.absolute.dir” location=”${out.dir}” />

<condition>

<property name=”obfuscated.jar.file”
value=”${obfuscate.absolute.dir}/obfuscated.jar” />

 

<!– Intermediate files –>

<property name=”asset.absolute.dir” location=”${asset.dir}” />

<source refid=”project.libraries.src” />

<!– Tools –>

<!– Directory for the native libraries –>

 

<echo>Packaging resources</echo>

</then>

<taskdef name=”xpath” classname=”com.android.ant.XPathTask”
classpathref=”android.antlibs” />

哼吧,废话不说了,直接上build文件 

<dex-helper />

<pathelement path=”${sdk.dir}/tools/lib/anttasks.jar” />

<property name=”resource.package.file.name”
value=”${ant.project.name}.ap_” />

<arg value=”-optimizationpasses 7″ />

                    -optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*

<!–
uid和sdk都是自定义参数,可起可不管,有差不多多少只包要由,就当此间copy多小行,修改有关参数,传入到程序里即可
–>

<nativefolder refid=”project.libraries.libs” />

<path id=”emma.lib”>

<property name=”sdk.dir” value=”E:\dev\android-sdk-windows”/>

<sourcefolder refid=”project.libraries.src” />

              only if release-sign is true (set in -release-check,

 

<fileset dir=”${jar.libs.absolute.dir}” includes=”*.jar” />

 

</target>

 

<condition property=”verbosity” value=”verbose” else=”quiet”>

<if condition=”${build.packaging.debug}”>

<target name=”-pre-compile” />

                   We actually store build.packaging.debug, not
build.release –>

<arg value=”-allowaccessmodification” />

             in default.properties.

<src path=”${gen.absolute.dir}” />

<property name=”build.mode.debug” value=”true” />

<if condition=”${proguard.enabled}”>

<pathelement location=”${emma.dir}/emma.jar” />

<then>

<property name=”build.packaging.debug” value=”true” />

<!– Set the android classpath Path object into a single property.
It’ll be

                             when using Ant before 1.8 –>

<else>

               <unzip src=”optimized.jar” dest=”${out-folder}”/>

</classpath>

<isset property=”tested.project.absolute.dir” />

<element name=”extra-parameters” optional=”yes” />

                     <jarfolder path=”my_jars” />

         This requires ant 1.6.0 or above. –>

<pathelement path=”${sdk.dir}/tools/lib/androidprefs.jar” />

</target>

<src refid=”project.libraries.src” />

<attribute name=”out.package” />

                     ** Make sure unless=”do.not.compile” is used in
the target definition **

                  </extra-jars>

<external-libs />

</macrodef>

 

<!– This runs -package-release and -release-nosign first and then
runs

 

</aapt>

<mkdir dir=”${out.absolute.dir}” />

<condition property=”v.option” value=”-v” else=””>

<echo>Signing final apk…</echo>

 

<echo>Installing ${out.debug.file} onto default emulator or
device…</echo>

<source path=”${source.absolute.dir}” />

<!– 创建文件夹–>

<attribute name=”output.filepath” />

              The property ‘verbosity’ is not user configurable and
depends exclusively on ‘verbose’

<!– This is macro which zipaligns in.package and outputs it to
out.package. Used by targets

                    –>

<property name=”proguard.enabled” value=”true” />

<property name=”resource.absolute.dir” location=”${resource.dir}”
/>

                  <extra-jars>

                 -debug-obfuscation-check

<!– Build a path object with all the jar files that must be
obfuscated.

<target name=”-package-debug-sign” depends=”-dex,
-package-resources”>

              by the custom tasks receiving them. –>

<target name=”pre” depends=”-obfuscate”>

                    -injars ${project.jars}

 

</condition>

<!– Converts this project’s .class files into .dex files –>

 

ps:我们种还有一个异要求,要把本号,推广ID打到管里去,方便做扩什么的。这里可以就此replace的措施对string.xml进行改动

<condition property=”exe” value=”.exe” else=””>

<echo>hasCode = false. Skipping…</echo>

<property name=”out.unaligned.file.name”
value=”${ant.project.name}-unaligned.apk” />

</if>

<!– Custom Android task to deal with the project target, and import
the

<target name=”-post-compile” />

 

<element name=”external-libs” optional=”yes” />

<property name=”build.signing.debug” value=”true” />

<echo>Converting compiled files and external libraries into
${intermediate.dex.file}…</echo>

 –>

                </proguard>

</else>

发表评论

电子邮件地址不会被公开。 必填项已用*标注