解决 tools/ant/build.xml:698: null returned: 1问题

本文详细介绍使用Ant和Gradle进行Android应用打包的过程。包括Ant的配置与常见错误处理、Gradle的基本操作及两者之间的差异对比。对于希望提高打包效率和质量的开发者来说,本文提供了实用的操作指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Ant 打包:(下载ant、配置环境变量就不说了)

1、进入命令行模式,并切换到项目目录,执行如下命令为ADT创建的项目添加ant build支持:

android update project -p . -t  "android-17"

2、build脚本默认target是help,所以会显示如上信息,修改target为debug或release就可以像无ant时一样编译、生成以及调试了。

3、使用release时  在local.properties添加签名信息

#keystore

key.store=xx.p12

key.alias=xxx

key.store.password=xxx

key.alias.password=xxx

4、命令行执行build.xml:    ant -buildfile build.xml

5、error 处理

> BUILD FAILED> C:/Android/android-sdk/tools/ant/build.xml:601: The following error occurred while executing this line:> C:/Android/android-sdk/tools/ant/build.xml:653: The following error occurred while executing this line:> C:/Android/android-sdk/tools/ant/build.xml:698: null returned: 1
Also, if eclipse is set to 'build automatically' then this could keep popping up because eclipse will keep regenerating into the bin folder.
just run 'ant clean release' instead of 'ant release' when you are building this.
rm -fR $(find . -type d -name crunch|xargs)
如果遇到上述error 就执行 ant clean release
可以参考我的项目:https://github.com/mentor811/Android-Batch-Pack

二、gradle 打包

1、下载gradle  1.10 配置环境变量

2、配置android 环境变量 ANDROID_HOME 

3、导出build文件

4、修改build文件

参考:https://github.com/umeng/umeng-muti-channel-build-tool/tree/master/Gradle

5、执行

gradle clean

gradle build

三、gradle 和 ant 的比较

1、本人用起来感觉 gradle 比较苛刻

a、AndroidManifest.xml里的注释必须<!-- 前后必须要有空格 -->

b、中文注释可能会有乱码

c、各个library project 里的 minsdk 和targetsdk 要和主工程保持一致

d、对png 图片的格式很严格

e、lint

而  使用Ant 时,没有遇到上述问题,直接就成功了。

2、gradle 会把library project 里Androidmanifest.xml 合并到主工程,ant不会

3、灵活性上 绝对是gradle,配置友盟多渠道、改包名 配置一下就ok,而ant很费劲。

4、打包效率对比:

第一次执行时 之前没有build的的项目 

gradle 2min   53   pk    ant  2min 54

下图是 已经执行过一个build后的打包时间:

左边gradle  右边 ant

[ 78%] Linking CXX executable ../Examples/Monocular/mono_tum [ 80%] Linking CXX executable ../Examples/Monocular-Inertial/mono_inertial_euroc /usr/bin/ld: CMakeFiles/mono_tum_old.dir/Examples_old/Monocular/mono_tum.cc.o: in function `main': mono_tum.cc:(.text.startup+0x451): undefined reference to `cv::imread(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_iprimitive<boost::archive::binary_iarchive, char, std::char_traits<char> >::load(std::string&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::Split(std::string const&, char)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::getTextSize(std::string const&, int, double, int, int*)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::namedWindow(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileNode::string() const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::operator[](std::string const&) const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::error(int, std::string const&, char const*, char const*, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::toString(cv::Mat const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreateWindowAndBind(std::string, int, int, pangolin::Params const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_oprimitive<boost::archive::binary_oarchive, char, std::char_traits<char> >::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::fromString(cv::Mat&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreatePanel(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, double)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::string&)' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/mono_tum_old.dir/build.make:132:../Examples_old/Monocular/mono_tum_old] 错误 1 make[1]: *** [CMakeFiles/Makefile2:201:CMakeFiles/mono_tum_old.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务.... /usr/bin/ld: CMakeFiles/mono_tum.dir/Examples/Monocular/mono_tum.cc.o: in function `main': mono_tum.cc:(.text.startup+0x451): undefined reference to `cv::imread(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_iprimitive<boost::archive::binary_iarchive, char, std::char_traits<char> >::load(std::string&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::Split(std::string const&, char)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::getTextSize(std::string const&, int, double, int, int*)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::namedWindow(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileNode::string() const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::operator[](std::string const&) const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::error(int, std::string const&, char const*, char const*, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::toString(cv::Mat const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreateWindowAndBind(std::string, int, int, pangolin::Params const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_oprimitive<boost::archive::binary_oarchive, char, std::char_traits<char> >::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::fromString(cv::Mat&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreatePanel(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, double)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::string&)' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/mono_tum.dir/build.make:132:../Examples/Monocular/mono_tum] 错误 1 make[1]: *** [CMakeFiles/Makefile2:174:CMakeFiles/mono_tum.dir/all] 错误 2 /usr/bin/ld: CMakeFiles/mono_inertial_euroc.dir/Examples/Monocular-Inertial/mono_inertial_euroc.cc.o: in function `main': mono_inertial_euroc.cc:(.text.startup+0xa8b): undefined reference to `cv::imread(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_iprimitive<boost::archive::binary_iarchive, char, std::char_traits<char> >::load(std::string&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::Split(std::string const&, char)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::getTextSize(std::string const&, int, double, int, int*)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::namedWindow(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileNode::string() const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::operator[](std::string const&) const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::error(int, std::string const&, char const*, char const*, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::toString(cv::Mat const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreateWindowAndBind(std::string, int, int, pangolin::Params const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_oprimitive<boost::archive::binary_oarchive, char, std::char_traits<char> >::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::fromString(cv::Mat&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreatePanel(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, double)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::string&)' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/mono_inertial_euroc.dir/build.make:132:../Examples/Monocular-Inertial/mono_inertial_euroc] 错误 1 make[1]: *** [CMakeFiles/Makefile2:147:CMakeFiles/mono_inertial_euroc.dir/all] 错误 2 [ 81%] Linking CXX executable ../Examples_old/Monocular-Inertial/mono_inertial_tum_vi_old /usr/bin/ld: CMakeFiles/mono_inertial_tum_vi_old.dir/Examples_old/Monocular-Inertial/mono_inertial_tum_vi.cc.o: in function `main': mono_inertial_tum_vi.cc:(.text.startup+0x890): undefined reference to `cv::imread(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_iprimitive<boost::archive::binary_iarchive, char, std::char_traits<char> >::load(std::string&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::Split(std::string const&, char)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::putText(cv::_InputOutputArray const&, std::string const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::getTextSize(std::string const&, int, double, int, int*)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::namedWindow(std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileNode::string() const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::FileStorage::operator[](std::string const&) const' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::error(int, std::string const&, char const*, char const*, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::toString(cv::Mat const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreateWindowAndBind(std::string, int, int, pangolin::Params const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::basic_binary_oprimitive<boost::archive::binary_oarchive, char, std::char_traits<char> >::save(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `DBoW2::FORB::fromString(cv::Mat&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `pangolin::CreatePanel(std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `cv::write(cv::FileStorage&, std::string const&, double)' /usr/bin/ld: ../lib/libORB_SLAM3.so: undefined reference to `boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::string&)' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/mono_inertial_tum_vi_old.dir/build.make:132:../Examples_old/Monocular-Inertial/mono_inertial_tum_vi_old] 错误 1 make[1]: *** [CMakeFiles/Makefile2:120:CMakeFiles/mono_inertial_tum_vi_old.dir/all] 错误 2 make: *** [Makefile:84:all] 错误 2
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值