为Qt for Android目标构建SMTP客户端

时间:2015-06-30 09:00:37

标签: android c++ qt email shared-libraries

我正在使用SMTP Client项目在Windows上创建库文件(.dll)。一切正常,电子邮件发送成功。

我想将我的Qt项目移植到Android,因为Android是一个不同的架构,我需要使用Android armv7工具包来构建库。

我试试这个,但是我收到了错误:

  

内部错误:未知的Android部署JSON文件位置。   构建/部署项目SMTPEmail时出错(工具包:Android for armeabi-v7a(GCC 4.9,Qt 5.4.2))   执行步骤"构建Android APK"

我怀疑我必须在项目文件中添加/删除。我看到有一个" win32:CONFIG + = dll",但其他平台没什么相似。

.pro文件如下所示:



#-------------------------------------------------
#
# 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 +=




3 个答案:

答案 0 :(得分:1)

正如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;
}

<强> toplevel.pro:

TEMPLATE = subdirs
SUBDIRS += tinyxml.pro
SUBDIRS += mockup_app.pro

然后,打开toplevel.pro。转到“项目”选项卡,选择“运行”,然后选择“mockup_app”作为“运行配置”。

现在,您可以右键单击库项目并选择“编译”:.so文件将被创建。

看起来问题是“运行配置”(缺少早期的QtCreator版本)需要选择一个应用程序....当没有选择时,会选择一个lib,然后编译甚至不会启动。

编辑07-20-2015:这是一个Qt错误,我填写了一个错误报告:https://bugreports.qt.io/browse/QTCREATORBUG-14710并且它已修复。下一版QtCreator应该没问题。

答案 1 :(得分:1)

如果您只想在不考虑后续步骤的情况下成功编译共享库,则可以采用以下方法:

转到Qt Creator's - &gt;项目 - &gt;构建 - &gt;构建步骤。禁用“制作安装”和“构建Android APK”。

在为Android构建共享库时,Qt Creator似乎有一个回归:它曾经与Qt Creator 3.0(基于Qt 5.2)或早期版本一起使用,但是停止使用Qt Creator 3.1(基于Qt) 5.3)或更新的Qt Creator 3.4(基于Qt 5.5)。

希望在将来的Qt Creator版本中修复此错误。

答案 2 :(得分:0)

我设法通过删除projectname.pro.user文件中的相应记录来解决它。

  • 退出QtCreator
  • 删除包含apk属性的元素 install属性。不是属性,而是包含它们的元素
  • 运行QtCreator并确保项目的构建配置中没有build apkinstall步骤

我还确保没有额外的projectname.pro.user。*文件并将其删除,但我不知道这是否重要。

感谢@jonathanzh在回答中的暗示

相关问题