<!-- build.xml -->
<project default="main" basedir=".">
<property file="../keystore.properties" />
<property name="apk-name" value="product" />
<property name="apk-version" value="latest" />
<property name="apk-market" value="dev" />
<property name="storepass" value="6236212"/> 这两个KEY,不用说。
<property name="keypass" value="6236212"/>
<property name="alias" value="nil.keystore"/>
这个是你要编译时要的android.jar的路径
<property name="android-jar" value="/Users/mac/Desktop/androidsdk/android-sdk-macosx/platforms/android-8/android.jar" />
<target name="init">
<echo>start initing ... </echo>
<mkdir dir="gen" />
<delete>
<fileset dir="gen"></fileset>
</delete>
<mkdir dir="bin/classes" />
<delete>
<fileset dir="bin/classes"></fileset>
</delete>
<mkdir dir="build/${apk-version}" />
<echo>finish initing. </echo>
</target>
<target name="main" depends="init">
<echo>generating R.java for project to dir gen (using aapt) ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg value="gen" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld/res" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="--auto-add-overlay" />
</exec>
<echo>generating R.java for library to dir gen (using aapt) ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-m" />
<arg value="--non-constant-id" />
<arg value="--auto-add-overlay" />
<arg value="-J" />
<arg value="gen" />
<arg value="-M" />
<arg value="../baseworld/AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld/res" />
<arg value="-I" />
<arg value="${android-jar}" />
</exec>
<path id="project.libs">
<fileset dir="libs">
<include name="*.jar" />
</fileset>
</path>
<echo>compiling java files to class files (include R.java, library and the third-party jars) ... </echo>
<javac destdir="bin/classes" bootclasspath="${android-jar}" includeantruntime="on" encoding="utf-8"> 这个地方需要设置下,因为是MAC系统
<src path="../baseworld/src" />
<src path="src" />
<src path="gen" />
<classpath refid="project.libs" />
</javac>
<echo>packaging class files (include the third-party jars) to calsses.dex ... </echo>
<exec executable="dx">
<arg value="--dex" />
<arg value="--output=bin/classes.dex" />
<arg value="bin/classes" />
<arg value="libs" />
</exec>
<echo>packaging resource (include res, assets, AndroidManifest.xml, etc.) to res.zip ... </echo>
<exec executable="aapt">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="res" />
<arg value="-S" />
<arg value="../baseworld/res" />
<arg value="-A" />
<arg value="assets" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="-F" />
<arg value="bin/res.zip" />
<arg value="--auto-add-overlay" />
</exec>
<echo>building unsigned.apk ... </echo>
<exec executable="apkbuilder">
<arg value="bin/unsigned.apk" />
<arg value="-u" />
<arg value="-z" />
<arg value="bin/res.zip" />
<arg value="-f" />
<arg value="bin/classes.dex" />
</exec>
<echo>signing the unsigned apk to final product apk ... </echo>
<exec executable="jarsigner">
<arg value="-keystore" />
<arg value="nil.keystore" />
<arg value="-storepass" />
<arg value="${storepass}" />
<arg value="-keypass" />
<arg value="${keypass}" />
<arg value="-signedjar" />
<arg value="build/${apk-version}/${apk-name}_${apk-version}_${apk-market}.apk" />
<arg value="bin/unsigned.apk" />
<arg value="${alias}" />
</exec>
<echo>done.</echo>
</target>
</project>
build.sh
#!/bin/bash
basedir=$(cd "$(dirname "$0")";pwd)
cd $basedir
#markets="google appchina waps gfan 91 hiapk goapk mumayi eoe nduo feiliu crossmo huawei qq 3g 360 baidu sohu 163 samsung coolmart meizu moto xiaomi lenovo nearme official dev"
markets="gfan dev"
for market in $markets
do
echo packaging healthworld_1.0_$market.apk ...
sed -i '' "s/\(android:value=\)\"\(.*\)\"\( android:name=\"UMENG_CHANNEL\"\)/\1\"$market\"\3/g" AndroidManifest.xml
sed -i '' "s/\(android:value=\)\"\(.*\)\"\( android:name=\"WAPS_PID\"\)/\1\"$market\"\3/g" AndroidManifest.xml
ant -Dapk-name=healthworld -Dapk-version=v1.0_beta -Dapk-market=$market
done
原文:
http://www.cnblogs.com/qianxudetianxia/archive/2012/07/04/2573687.html
----------------------------------以上基本是think的脚本,功劳是他的,大家可以看他博客-----------------------------
//========so库===网上有人说,ZIP压缩进去,这是不行的,找不到库=====================
building unsigned.apk 的后面。加入如下命令即可:
<echo> zip the libs armebi .so ..</echo>
<exec executable="zip" >
<arg value="-r"/>
<arg value="bin/unsigned.apk" />
<arg value="libs/armeabi/libhwTTS.so" /> //这里对应你的库,你懂的。
</exec>
//=========================================================================
//解决SO问题,think帮忙找到一个帖子,就搞定咯。额,我当时就各种搜索“android 如何动态打包so",根本就不是那么搜索的,应该是“ant 如何打包so",百度第一帖子就是。
需要修改上面的build.xml的apkBuilder命令,如下:
<exec executable="apkbuilder">
<arg value="bin/unsigned.apk" />
<arg value="-u" />
<arg value="-z" />
<arg value="bin/res.zip" />
<arg value="-f" />
<arg value="bin/classes.dex" />
<arg value="-nf"/>
<arg value="libs"/>
</exec>这样就搞定咯!多版本傻么的,就出来咯,不过用空还是想研究THINK的模块开发,感觉很强大!
在这个项目里面,主界面和功能基本都完成了,而用新的架构写的程序像MyLaunch、SetLanguage、SetChangeSkin、Setting这四个工程要实现的是背景和多国语言的切换,其实大同小异,背景的切换就是在主界面中将要切换的背景id设置到注册表,修改注册表的值,其他程序在启动的时候都会先去读注册表的这个值,再去创建背景,当SetChangeSkin变换了背景后,发送消息给设置窗口,设置退出的时候再发消息给主界面,这样一个循环,保证背景一致,语言也可以这么做的。
设置背景其他的程序都是开机启动过了,而多国语言是第一次搞,所以所有的程序都要进行修改。时间比较长。。。。
经过两年的制作,甲骨文发布了一个移动客户端和相关框架,以帮助开发人员快速构建工业移动设备的Java应用程序。Oracle应用开发框架(ADF)移
动客户端应用程序开发提供了可以在不同的移动平台部署而不必要为每个特定平台编写代码,甲骨文的Fusion产品管理高级主管DuncanMills说
到。
经过两年的制作,甲骨文发布了一个移动客户端和相关框架,以帮助开发人员快速构建工业移动设备的Java应用程序。
Oracle应用开发框架(ADF)移动客户端应用程序开发提供了可以在不同的移动平台部署而不必要为每个特定平台编写代码,甲骨文的Fusion产品管理高级主管DuncanMills说到。
甲骨文2009年10月首次宣布手机客户端软件,并在2010年4月发布了一个技术预览版。
客户端,一个Oracle应用开发框架的延伸,是一个不同的组件,包括一个用于查看已经安装的应用程序、用来储存本地数据的小型数据库和Java运行时引擎,以及已经安装的不需要java的设备的浏览器。
客户端框架使用一个基于JSF(JavaServerFaces)标准的用户界面。它还提供了一个预先设定的方式来同步数据与后端服务器,使开发人员可以指定哪些数据可以与数据库或其他数据源同步。
客户端已与Oracle框架融合,但也可以与其他Web服务使用。客户端可让设备脱机使用数据,一旦连接回网络又可以传输数据。
客户端还提供了一些工具来收集和传输设备本身所产生的数据比如摄像头,GPS读卡器,条码扫描仪或其他数据生成组件的数据,Mills说。
目前,该手机客户端只适用于WindowsMobilever5和ver6,和RIM的BlackBerry设备。该框架还不支持
iPhone,Android设备或Windowsphone7设备。Oracle的开发团队正考虑扩大该框架来支持这些设备,但还没有具体的时间
表,Mills说。他指出,工业设备制造商仍然在他们的产品中安装旧版本的WindowsMobile,这些操作系统仍然在行业广泛使用。
甲骨文通过仁科本身的移动应用管理来部署上周公布的移动客户端。
移动客户机的成本为每用户5美元,也可以按每台设备来计算价格。Oracle还提供了一个免费的JDeveloperIDE(集成开发环境)扩展,帮助使用此客户端来设计应用程序。
TAG: