正在为Android目标的Qt构建SMTP客户端
Building SMTP client for Qt for Android target
我正在使用SMTP客户端项目在Windows上创建库文件(.dll)。一切正常,电子邮件发送成功。
我想将我的Qt项目移植到Android,由于Android是一个不同的架构,我需要使用Android armv7工具包来构建库。
我尝试了这个,但我得到了错误:
内部错误:未知的Android部署JSON文件位置。构建/部署项目SMTPEmail时出错(工具包:适用于armeabi-v7a的Android(GCC 4.9,Qt 5.4.2))当执行步骤"构建安卓APK"
我怀疑我必须在项目文件中添加/删除某些内容。我看到有一个"win32:CONFIG+=dll",但其他平台没有类似的东西。
.pr文件如下所示:
#-------------------------------------------------
#
# Project created by QtCreator 2011-08-11T20:59:25
#
#-------------------------------------------------
QT += core network
TARGET = SMTPEmail
# Build as an application
#TEMPLATE = app
# Build as a library
TEMPLATE = lib
DEFINES += SMTP_BUILD
win32:CONFIG += dll
QMAKE_CXXFLAGS += -fPIC
SOURCES +=
src/emailaddress.cpp
src/mimeattachment.cpp
src/mimefile.cpp
src/mimehtml.cpp
src/mimeinlinefile.cpp
src/mimemessage.cpp
src/mimepart.cpp
src/mimetext.cpp
src/smtpclient.cpp
src/quotedprintable.cpp
src/mimemultipart.cpp
src/mimecontentformatter.cpp
HEADERS +=
src/emailaddress.h
src/mimeattachment.h
src/mimefile.h
src/mimehtml.h
src/mimeinlinefile.h
src/mimemessage.h
src/mimepart.h
src/mimetext.h
src/smtpclient.h
src/SmtpMime
src/quotedprintable.h
src/mimemultipart.h
src/mimecontentformatter.h
src/smtpexports.h
OTHER_FILES +=
LICENSE
README.md
FORMS +=
正如OP中所评论的,我也遇到了同样的问题,只需在项目中添加一个应用程序就可以解决。
我最初的项目是一个简单的.pro文件,目标是一个库(tinyxml)。使用Qt 5.2.1(Qt Creator 3.0.1),我能够为Android编译库(创建.so文件)。对于Qt 5.5.0(Qt Creator 3.4.0),我收到了与OP中报告的相同的错误消息。
这是我的解决方案:
我创建了另一个.pro文件,目标是一个伪程序:
mockup_app.pro:
TARGET = mockup_app
SOURCES += main.cpp
TEMPLATE = app
main.cpp:
// actually never compiled
int main()
{
return 0;
}
顶级。pro:
TEMPLATE = subdirs
SUBDIRS += tinyxml.pro
SUBDIRS += mockup_app.pro
然后,打开toplevel.pro。转到"项目"选项卡,选择"运行",然后选择"mockup_app"作为"运行配置"。
现在,您可以右键单击库项目并选择"编译":.这样文件就会被创建。
看起来问题是"运行配置"(早期的QtCreator版本中没有)需要选择一个应用程序。。。。如果没有,则选择一个lib,然后甚至不开始编译。
编辑07-20-2015:这是一个Qt错误,我填写了一个错误报告:https://bugreports.qt.io/browse/QTCREATORBUG-14710它被修复了。QtCreator的下一个版本应该不错。
如果您只想在不考虑后续步骤的情况下成功编译共享库,有一个解决方法:
转到Qt Creator的->项目->构建->构建步骤。禁用"Make install"answers"Build Android APK"。
在为Android构建共享库时,Qt Creator中似乎出现了回归:它曾与Qt Creator3.0(基于Qt 5.2)或更早版本一起使用,但已停止与Qt创建者3.1(基于Qt5.3)或更新的Qt创建者3.4(基于Qt5.5)一起使用
希望这个错误能在Qt Creator的未来版本中得到修复。
我设法通过删除projectname.pro.user
文件中的相应记录来解决此问题。
- 退出QtCreator
- 删除包含
apk
属性的元素,并install
属性。不是属性,而是包含它们的元素 - 运行QtCreator并确保项目的生成配置中没有
build apk
和install
步骤
我还确保没有额外的projectname.pro.user.*文件并删除了它们,但我不知道这是否重要。
感谢@jonathanzh在他的回答
- 使用静态 Qt 构建在 Linux 上部署 Qt5 应用程序
- 是否可以在没有QT构建的QT应用程序中部署QT应用程序
- 在Android NDK项目中使用webrtc-58 - 使用QT构建时"Undefined reference to CopyOnWriteBuffer"
- 找不到构造函数 - 如何将 CPP 文件添加到 Qt 构建过程
- 将 exe 文件复制到 Qt 构建目录
- Qt构建发布库和调试库
- 使用qt构建qt-make项目时出错
- 错误LNK2001 - VS2008 和 Qt 构建
- 在 Mac 10.11 上使用 QT 5.6 构建 QtWebKit
- 使用 Qt 5.1.1 构建 QwtPlot3d 时缺少库文件
- Qt 5.5 构建自定义 QTreeView
- 在 OS X 10.8.5 上使用 Xcode 5.0 和 Qt 5.1.1 构建问题
- Qt 5.1 - 构建时出现"Add library"错误。LNK2019
- 如何使用Qt构建静态库和可执行文件
- 如何使用Qt构建命令窗口
- 我需要Qt工具链来针对用Qt构建的库吗
- 在Windows上使用QT 5.6构建QtWebKit
- Qt构建错误:g++-4.2:没有这样的文件或目录
- 在Windows 10上为Qt构建WMF (Windows Media Foundation)媒体驱动插件
- 使用libchive在Qt -构建错误