ant批量ant打包报错编译报错,报都有啊,怎么说包不存在

ant打包的时候,编译javac报错 Javac.java:1150 - ITeye问答
现象描述:按正规流程写的,沒用到什么特殊东西
但编译的时候就报错
在javac那行报错
請帮忙看下
我的build.xml
&?xml version="1.0" encoding="UTF-8" ?&
&project name="ESMT" basedir="." default="compile"&
&&& &!-- project-specific variables --&
&property name="workspace.dir" value="workspace" /&
&property name="base.dir" value="${workspace.dir}/source/ESMT" /&
&property name="base.dir.webContent" value="${base.dir}/WebContent" /&
&property name="base.dir.web-inf" value="${base.dir.webContent}/WEB-INF" /&
&property name="base.dir.meta-inf" value="${base.dir.webContent}/META-INF" /&
&&&
&&& &property name="lib.dir" value="${base.dir.web-inf}/lib" /&
&&& &property name="src.dir" value="${base.dir}/src" /&
&&& &property name="dest.dir" value="${workspace.dir}/target" /&
&&& &!-- put everything in a temp folder with the right structure during the build --&
&&& &property name="temp.dir" value="${workspace.dir}/temp/ESMT" /&
&&& &property name="build.src" value="${temp.dir}/build" /&
&&& &property name="temp.dir.web-inf" value="${temp.dir}/WEB-INF" /&
&&& &property name="temp.dir.lib" value="${temp.dir.web-inf}/lib" /&
&&& &property name="temp.dir.classes" value="${temp.dir.web-inf}/classes" /&
&&& &property name="temp.dir.meta-inf" value="${temp.dir}/META-INF" /&
&&& &path id="build.class.path"&
&&&&&&& &fileset dir="${lib.dir}"&
&&&&&&&&&&& &include name="**/*.jar" /&
&&&&&&& &/fileset&
&fileset dir="java"&
&&&&&&&&&&& &include name="**/*.jar" /&
&&&&&&& &/fileset&
&&& &/path&
&&& &target name="clean"&
&delete dir="${temp.dir}" /&
&&& &/target&
&&& &target name="prepare" depends="clean"&
&&&&&&& &mkdir dir="${dest.dir}" /&
&&&&&&& &mkdir dir="${temp.dir}" /&
&&&&&&& &mkdir dir="${build.src}" /&
&&&&&&& &mkdir dir="${temp.dir.meta-inf}" /&
&&&&&&& &mkdir dir="${temp.dir.web-inf}" /&
&mkdir dir="${temp.dir.lib}" /&
&&&&&&& &mkdir dir="${temp.dir.classes}" /&
&&& &/target&
&&& &!-- COMPILE --&
&&& &target name="compile" depends="prepare"&
&&&&&&&
&&&&&&& &copy todir="${build.src}"&
&&
&fileset dir="${src.dir}" /&
&
&&&&&&& &copy todir="${temp.dir}"&
&&
&fileset dir="${base.dir.webContent}" /&
&
&/copy&
&&&&&&&
&&&&&&& &javac srcdir="${build.src}" debug="on" includeantruntime="false" destdir="${temp.dir.classes}" &
&&&&&&&&&&& &classpath refid="build.class.path"/&
&&&&&&&&&&& &compilerarg value="-Xlint"/&
&&&&&&& &/javac&
&&& &/target&
&/project&
输出
BUILD FAILED
E:\deployESTM\test_esmt_war.xml:57: C see the compiler error output for details.
at org.apache.tools.ant.pile(Javac.java:1150)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:912)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:809)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
“see the compiler error output for details.”,人家都说让你看编译输出了……
已解决问题
未解决问题cocos2d-x使用Ant实现批量打包 -
- ITeye博客
参考文献:
开发环境:win764位,android-ndk-r9,cocos2d-x-3.2,contrib-1.0b3,android-4.4
直接上代码
&?xml version="1.0" encoding="UTF-8"?&
&project name="Test" default="deploy"&
&!-- ANT环境变量 --&
&property environment="env" /&
&!-- 使用第三方的ant包,使ant支持for循环--&
&!-- 将ant-contrib-1.0b3.jar放到ant的lib目录下即可--&
&taskdef resource="net/sf/antcontrib/antcontrib.properties"&
&classpath&
&pathelement location="${env.ANT_ROOT}/lib/ant-contrib-1.0b3.jar" /&
&/classpath&
&/taskdef&
&property file="local.properties" /&
&!-- 应用名称 --&
&property name="appName" value="${ant.project.name}" /&
&!-- SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值) --&
&property name="sdk-folder" value="${env.ANDROID_SDK_ROOT}" /&
&!-- SDK指定平台目录 --&
&property name="sdk-platform-folder" value="${sdk-folder}/platforms/android-19" /&
&!-- SDK中tools目录 --&
&property name="sdk-tools" value="${sdk-folder}/tools" /&
&!-- SDK指定平台中tools目录 --&
&property name="sdk-build-tools" value="${sdk-folder}/build-tools/android-4.4" /&
&!-- 使用到的命令(当前系统为windows,如果系统为linux,可将.bat文件替换成相对应的命令) --&
&property name="aapt" value="${sdk-build-tools}/aapt" /&
&property name="aidl" value="${sdk-build-tools}/aidl" /&
&property name="dx" value="${sdk-build-tools}/dx.bat" /&
&!-- 在android3.0这个apkbuilder被废弃了,可以copy一个放在如下目录下--&
&property name="apkbuilder" value="${sdk-tools}/apkbuilder.bat" /&
&property name="jarsigner" value="${env.JAVA_HOME}/bin/jarsigner" /&
&property name="zipalign" value="${sdk-tools}/zipalign" /&
&!-- 编译需要的 如果项目使用到地图服务则需要maps.jar --&
&property name="android-jar" value="${sdk-platform-folder}/android.jar" /&
&property name="proguard-home" value="${sdk-tools}/proguard/lib" /&
&property name="android-maps-jar" value="${sdk-folder}/add-ons/addon_google_apis_google_inc_8/libs/maps.jar" /&
&!-- 编译aidl文件所需的预处理框架文件framework.aidl --&
&property name="framework-aidl" value="${sdk-platform-folder}/framework.aidl" /&
&!-- 清单文件 --&
&property name="manifest-xml" value="AndroidManifest.xml" /&
&!-- 源文件目录 --&
&property name="resource-dir" value="res" /&
&property name="asset-dir" value="assets" /&
&!-- java源文件目录 --&
&property name="srcdir" value="src" /&
&property name="srcdir-ospath" value="${basedir}/${srcdir}" /&
&!-- 外部类库所在目录 --&
&property name="external-lib" value="libs" /&
&property name="external-lib-ospath" value="${basedir}/${external-lib}" /&
&property name="ndk.dir" value="${evn.NDK_ROOT}" /&
&!-- 版本 --&
&property name="version" value="3.0" /&
&property name="channelname" value="" /&
&property name="channelkey" value="" /&
&property name="key" value="${channels}" /&
&!--循环打包 --&
&target name="deploy"&
&antcall target="native" /&
&foreach target="modify_manifest" list="${key}" param="nameandchannel" delimiter=","&
&/foreach&
&target name="modify_manifest"&
&echo&----------------------------------------------------&/echo&
&!-- 获取渠道名字 --&
&propertyregex override="true" property="channelname" input="${nameandchannel}" regexp="(.*):" select="\1" /&
&!-- 获取渠道号码 --&
&propertyregex override="true" property="channelkey" input="${nameandchannel}" regexp="(.*)" select="\1" /&
&!-- 正则匹配替换渠道号 --&
&replaceregexp flags="g" byline="false" encoding="UTF-8"&
&regexp pattern='meta-data android:name="UMENG_CHANNEL" android:value="(.*)"' /&
&substitution expression='meta-data android:name="UMENG_CHANNEL" android:value="${channelkey}"' /&
&fileset dir="" includes="AndroidManifest.xml" /&
&/replaceregexp&
&antcall target="zipalign" /&
&!-- 初始化工作 --&
&target name="init"&
&echo&目录初始化....&/echo&
&!-- 生成R文件的相对目录 --&
&var name="outdir-gen" value="gen" /&
&!-- 编译后的文件放置目录 --&
&var name="outdir-bin" value="publish/${channelkey}" /&
&!-- 生成class目录 --&
&var name="outdir-classes" value="${outdir-bin}/otherfile" /&
&var name="outdir-classes-ospath" value="${basedir}/${outdir-classes}" /&
&!-- classes.dex相关变量 --&
&var name="dex-file" value="classes.dex" /&
&var name="dex-path" value="${outdir-bin}/${dex-file}" /&
&var name="dex-ospath" value="${basedir}/${dex-path}" /&
&!-- 经过aapt生成的资源包文件 --&
&var name="resources-package" value="${outdir-bin}/resources.ap_" /&
&var name="resources-package-ospath" value="${basedir}/${resources-package}" /&
&!-- 未认证apk包 --&
&var name="out-unsigned-package" value="${outdir-bin}/${appName}-unsigned.apk" /&
&var name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" /&
&!-- 证书文件 --&
&var name="keystore-file" value="${basedir}/testant.keystore" /&
&!-- 已认证apk包 --&
&var name="out-signed-package" value="${outdir-bin}/${appName}_${channelkey}_${version}.apk" /&
&var name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" /&
&delete dir="${outdir-bin}" /&
&mkdir dir="${outdir-bin}" /&
&mkdir dir="${outdir-classes}" /&
&!-- 根据工程中的资源文件生成R.java文件
&target name="gen-R" depends="init"&
&echo&生成R.java文件....&/echo&
&exec executable="${aapt}" failonerror="true"&
&arg value="package" /&
&arg value="-f" /&
&arg value="-m" /&
&arg value="-J" /&
&arg value="${outdir-gen}" /&
&arg value="-S" /&
&arg value="${resource-dir}" /&
&arg value="-M" /&
&arg value="${manifest-xml}" /&
&arg value="-I" /&
&arg value="${android-jar}" /&
&!-- 编译aidl文件 --&
&target name="aidl" depends="gen-R"&
&echo&编译aidl文件....&/echo&
&apply executable="${aidl}" failonerror="true"&
&!-- 指定预处理文件 --&
&arg value="-p${framework-aidl}" /&
&!-- aidl声明的目录 --&
&arg value="-I${srcdir}" /&
&!-- 目标文件目录 --&
&arg value="-o${outdir-gen}" /&
&!-- 指定哪些文件需要编译 --&
&fileset dir="${srcdir}"&
&include name="**/*.aidl" /&
&/fileset&
&!-- 将工程中的java源文件编译成class文件 --&
&target name="compile" depends="aidl"&
&echo&java源文件编译成class文件....&/echo&
&javac encoding="utf-8" target="1.5" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}" verbose="false"&
&compilerarg line="-encoding GBK " /&
&classpath&
&fileset dir="${external-lib}" includes="*.jar" /&
&/classpath&
&!-- 将.class文件转化成.dex文件 --&
&target name="dex" depends="compile"&
&echo&将.class文件转化成.dex文件....&/echo&
&exec executable="${dx}" failonerror="true"&
&arg value="--dex" /&
&!-- 输出文件 --&
&arg value="--output=${dex-ospath}" /&
&!-- 要生成.dex文件的源classes和libraries --&
&arg value="${outdir-classes-ospath}" /&
&arg value="${external-lib-ospath}" /&
&!-- 将资源文件放进输出目录 --&
&target name="package-res-and-assets"&
&echo&将资源文件放进输出目录....&/echo&
&exec executable="${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="-A" /&
&arg value="${asset-dir}" /&
&arg value="-I" /&
&arg value="${android-jar}" /&
&arg value="-F" /&
&arg value="${resources-package}" /&
&target name="native"&
&echo&编译native包......&/echo&
&!--&exec executable="${ndk.dir}/ndk-build.cmd" failonerror="true" /&--&
&!--&exec executable="D:\devtools\android-ndk-r10\ndk-build.cmd" failonerror="true" /&--&
&exec executable="${env.NDK_ROOT}/ndk-build.cmd" failonerror="true"&
&arg value="-D" /&
&echo message="DONE (Building native libraries)" /&
&!-- 打包成未签证的apk --&
&target name="package" depends="dex, package-res-and-assets"&
&echo&打包成未签证的apk....&/echo&
&exec executable="${apkbuilder}" failonerror="true"&
&arg value="${out-unsigned-package-ospath}" /&
&arg value="-u" /&
&arg value="-z" /&
&arg value="${resources-package-ospath}" /&
&arg value="-f" /&
&arg value="${dex-ospath}" /&
&arg value="-rf" /&
&arg value="${srcdir-ospath}" /&
&arg value="-nf"/&
&arg value="${external-lib-ospath}" /&
&!-- 对apk进行签证 --&
&target name="jarsigner" depends="package"&
&echo&Packaging signed apk for release...&/echo&
&exec executable="${jarsigner}" failonerror="true"&
&arg value="-keystore" /&
&arg value="${keystore-file}" /&
&arg value="-storepass" /&
&arg value="111111" /&
&arg value="-keypass" /&
&arg value="111111" /&
&arg value="-signedjar" /&
&arg value="${out-signed-package-ospath}" /&
&arg value="${out-unsigned-package-ospath}" /&
&!-- 不要忘了证书的别名 --&
&arg value="testant" /&
&!-- 发布 --&
&target name="release" depends="jarsigner"&
&!-- 删除未签证apk --&
&delete file="${out-unsigned-package-ospath}" /&
&echo&APK is released. path:${out-signed-package-ospath}&/echo&
&delete dir="${outdir-classes}"/&
&delete file="${dex-ospath}" /&
&delete file="${resources-package-ospath}" /&
&!-- 打包的应用程序进行优化 --&
&target name="zipalign" depends="release"&
&exec executable="${zipalign}" failonerror="true"&
&arg value="-v" /&
&arg value="4" /&
&arg value="${out-signed-package-ospath}" /&
&arg value="${out-signed-package-ospath}-zipaligned.apk" /&
&target name="install" depends="deploy"
description="install debug.apk"&
&!-- target:debug调用过后,out.filal.file才会作为常量被初始化。所以单独调用install是无效的 --&
&echo message="adb install -r
${out.absolute.dir}/${ant.project.name}-debug.apk"/&
&apply executable="${sdk-folder}/platform-tools/adb.exe" failonerror="true"&
&arg value="install" /&
&arg value="-r" /&
&file file="${outdir-bin}/${appName}_${channelkey}_${version}.apk"/&
&target name="startActivity" depends="install"
description="Start Activity: app_package/app_launch_activity"&
&echo&安装apk&/echo&
&echo message="adb shell am start -n ${app_package}/${app_launch_activity}"/&
&exec executable="adb"&
&arg value="shell"/&
&arg value="am"/&
&arg value="start"/&
&arg value="-n"/&
&arg value="${app_package}/${app_launch_activity}"/&
&/project&
local.properties文件
sdk.dir=D:\\devtools\\adt-bundle-windows-x86_64-\\sdk
### 定义apk的包名
app_package=cn.hy.test
### 定义apk的启动入口Activity
app_launch_activity=org.cocos2dx.cpp.AppActivity
channels=11,22,33,44,55,66,77,88,99
在AndroidManifest.xml中加入
&meta-data android:name="UMENG_CHANNEL" android:value="99"&&/meta-data&
如果出现如下错误: *** Android NDK: Aborting&&& .& Stop.&
将Application.mk中
APP_STL := c++_static
NDK_TOOLCHAIN_VERSION=clang
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char
APP_LDFLAGS := -latomic
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=1 -std=c++11 -Wno-literal-suffix -fsigned-char
如项目中使用到了cocostudio的导出文件,需要在Android.mk文件中的LOCAL_C_INCLUDES后面追加:
$(LOCAL_PATH)/../../cocos2d/cocos/editor-support/cocostudio \
$(LOCAL_PATH)/../../cocos2d/cocos/editor-support \
$(LOCAL_PATH)/../../cocos2d/extensions \
$(LOCAL_PATH)/../../cocos2d/cocos/ui \
$(LOCAL_PATH)/../../cocos2d/cocos
如果遇到下面的错误:
fatal error: json/document.h:
需要在Android.mk文件中的LOCAL_C_INCLUDES后面追加:
$(LOCAL_PATH)/../../cocos2d/external
如果遇到下面的错误:
ndk error: 'override' does not name a type
满屏都是这样的错误,'override'是c++11的新特性,可以判断gcc版本不支持c++11引起的问题,在build_native.py文件中有如下这段话:
'''Because ndk-r8e uses gcc4.6 as default. gcc4.6 doesn't support c++11. So we should select gcc4.7 when
using ndk-r8e. But gcc4.7 is removed in ndk-r9, so we should determine whether gcc4.7 exist.
Conclution:
-& use gcc4.7
-& use gcc4.8
因此要使用gcc4.8,需要在Application.mk(jni目录下)文件的最后加上:
NDK_TOOLCHAIN_VERSION = 4.8
如果在编译过程中遇到如下错误:
error: undefined reference to 'cocostudio
需要将Android.mk中注释掉的部分代码打开
# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
# $(call import-module,Box2D)
$(call import-module,editor-support/cocosbuilder)
# $(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
# $(call import-module,network)
$(call import-module,extensions)
最终的Android.mk文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
$(LOCAL_PATH)/../../cocos2d/cocos/editor-support/cocostudio \
$(LOCAL_PATH)/../../cocos2d/cocos/editor-support \
$(LOCAL_PATH)/../../cocos2d/extensions \
$(LOCAL_PATH)/../../cocos2d/cocos/ui \
$(LOCAL_PATH)/../../cocos2d/cocos \
$(LOCAL_PATH)/../../cocos2d/external
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,audio/android)
# $(call import-module,Box2D)
$(call import-module,editor-support/cocosbuilder)
# $(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
# $(call import-module,network)
$(call import-module,extensions)
为了将apk安装到genymotion上,需要在Application.mk文件中最后一行追加
APP_ABI := armeabi armeabi-v7a x86
这句话的意思是打成x86架构的apk包,因为genymotion使用virtualbox模拟android设备。
最终的Application.mk文件内容如下:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=1 -std=c++11 -Wno-literal-suffix -fsigned-char
APP_DEBUG := $(strip $(NDK_DEBUG))
ifeq ($(APP_DEBUG),1)
APP_CPPFLAGS += -DCOCOS2D_DEBUG=1
APP_OPTIM := debug
APP_CPPFLAGS += -DNDEBUG
APP_OPTIM := release
NDK_TOOLCHAIN_VERSION = 4.8
APP_ABI := armeabi armeabi-v7a x86
另外,在使用Genymotion的时候,如果出现“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”错误,下载Genymotion-ARM-Translation.zip,直接拖到模拟器界面安装即可。
houyingsoft
浏览: 62205 次
来自: 北京
Java里AnalyzePDB类是从哪里来的
wangxiulong2008 写道设置优先级?如果是优先级, ...
楼主怎么做到的啊
我也遇到相同问题
楼主求教啊!
请问楼主,你是怎么做的?可以指教下吗?君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ant编译报错报都有啊如何说包不存在
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 ant打包报错 的文章

 

随机推荐