Qt Creator 3.2.1包括.jar for Android

Loy*_*zel 6 java qt android jar qt-creator

大家好,提前抱歉提出这个问题,但经过五天的stackoverflow搜索并进行谷歌工程后,我仍然没有回答我的问题:

我想在我的项目中包含几个*.jar文件,我的android应用程序将在Qt编译后使用它.

这是我的环境:

  • 安装的Qt Creator 3.2.1(exe,不是从源代码编译的)
  • main.cpp(启动Qt-Part)
  • android/MainActivity.java(从简单的"Hello world"开始,应该包含.jars提供的不同类(google-api-client-1.19.0.jar google-api-client-android-1.19.0.jar google- http-client-1.19.0.jar google-http-client-android-1.19.0.jar google-http-client-jackson-1.19.0.jar google-oauth-client-1.19.0.jar jackson-core- asl-1.9.13.jar jsr305-1.3.9.jar)
  • 的Android/AndroidManifest.xml中
  • 包含所需.jars的android/libs

在谷歌搜索该问题后,我尝试了几乎所有的东西,每次都得到相同的结果:找不到Android应用程序的.jars或者构建过程不起作用:

[javac] C:\workspaces\qt_android\build-GsQt-Android\android-build\src\com\gservice\MainActivity.java:14: error: package com.google.android.gms.common does not exist
[javac] import com.google.android.gms.common.ConnectionResult;
[javac]                                     ^
[javac] C:\workspaces\qt_android\build-GsQt-Android\android-build\src\com\gservice\MainActivity.java:15: error: package com.google.android.gms.common.api does not exist
[javac] import com.google.android.gms.common.api.GoogleApiClient;
[javac]                                         ^\MainActivity.java:15: error: package com.google.android.gms.common.api does not exist
Run Code Online (Sandbox Code Playgroud)

对于所有应包括的八个罐子,等等.

以下是我尝试包含它们的内容:

  • 在android中创建了一个名为"libs"的文件夹并将我的jar放入其中.构建项目后,文件夹和jar已复制到构建目录.不是看起来像设备.
  • 将它们包含在AndroidManifest和MainActivity等简单的其他文件中:
OTHER_FILES += \
android/libs/google-api-client-1.19.0.jar \
android/libs/google-api-client-android-1.19.0.jar \
android/libs/google-api-services-gmail-v1-rev2-1.18.0-rc.jar \
android/libs/google-http-client-1.19.0.jar \
android/libs/google-http-client-android-1.19.0.jar \
android/libs/google-http-client-jackson-1.19.0.jar \
android/libs/google-oauth-client-1.19.0.jar \
android/libs/jackson-core-asl-1.9.13.jar \
android/libs/jsr305-1.3.9.jar \
android/AndroidManifest.xml \
android/src/com/gservice/MainActivity.java \
Run Code Online (Sandbox Code Playgroud)
  • 在.pro文件中尝试assets-inclusion:
LIBS_INSTALL_PATH=/assets/libs
Run Code Online (Sandbox Code Playgroud)

libraries.path = android/libs libraries.files + = google-api-client-1.19.0.jar google-api-client-android-1.19.0.jar google-http-client-1.19.0.jar google-http -client-android-1.19.0.jar google-http-client-jackson-1.19.0.jar google-oauth-client-1.19.0.jar jackson-core-asl-1.9.13.jar jsr305-1.3.9 .jar libraries.depends + = FORCE INSTALLS + = libraries

  • 创建一个libraries.qrc文件,并通过.pro文件中的RESOURCES + = libraries.qrc包含它.libraries.qrc:
<RCC>
<qresource prefix="/libs">
    <file>android/libs/google-api-client-1.19.0.jar</file>
    <file>android/libs/google-api-client-android-1.19.0.jar</file>
    <file>android/libs/google-api-services-gmail-v1-rev2-1.18.0-rc.jar</file>
    <file>android/libs/google-http-client-1.19.0.jar</file>
    <file>android/libs/google-http-client-android-1.19.0.jar</file>
    <file>android/libs/google-http-client-jackson-1.19.0.jar</file>
    <file>android/libs/google-oauth-client-1.19.0.jar</file>
    <file>android/libs/jackson-core-asl-1.9.13.jar</file>
    <file>android/libs/jsr305-1.3.9.jar</file>
</qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)
  • 尝试使用qmake(返回错误,找不到该rcc文件)"rcc -binary google-api-client-1.19.0.jar -o google-api-client-1.19.0.rcc"作为附加参数

...我真的不知道下一步该做什么,我的所有Android配置(JDK,SDK,NDK,Ant)都在正确的位置并且可以访问,设置了JAVA_HOME var和ANT var.

最后两个问题:我想要包含在Android中的代码是我已经使用Android ADT创建的Google+身份验证应用,并且工作正常.我将把这些工作组件转移到Qt的构建环境中.

提前感谢阅读looooong描述并帮助我解决这个问题!

劳埃德

Loy*_*zel 5

解:

有一种方法可以在Android和Qt中包含和使用.jar文件。当然,这是人们可以想到的最简单的方法:

  1. 打开您的Qt项目的android文件夹
  2. 创建一个名为“ libs”的文件夹(与文件夹“ src”和“ AndroidManifest.xml”相同级别)
  3. 将您要使用的* .jar文件放入libs文件夹
  4. 像往常一样将它们导入到您的android-java文件中

而已。无需改编Project.pro或main.qrc,也无需为android或类似文件创建.properties文件。


Rei*_*ica 0

OTHER_FILES仅供人类消费。它仅由 Qt Creator 的项目资源管理器用于将文件包含在树中。它根本没有在构建过程中使用。

Qt 资源系统(QRC)只能从 中使用QFile,Android VM 不知道这些“文件”。