2014-10-02 11 views
5

Xin chào tất cả và Xin lỗi trước vì đã đặt câu hỏi này, nhưng sau năm ngày tìm kiếm trên stackoverflow và làm google-engineering tôi vẫn không có câu trả lời cho câu hỏi của mình:Qt Creator 3.2.1 bao gồm .jar cho Android

Tôi muốn bao gồm một số tệp * .jar vào dự án của mình sẽ được ứng dụng android của tôi sử dụng sau khi Qt biên dịch nó.

Đây là môi trường của tôi:

  • cài đặt Qt Creator 3.2.1 (exe, không được biên dịch từ các nguồn)
  • main.cpp (bắt đầu Qt-Phần)
  • android/MainActivity.java (bắt đầu công cụ "Hello world" đơn giản và sẽ bao gồm các lớp khác nhau được cung cấp bởi .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
  • android/libs chứa .jars cần

Sau khi googling cho vấn đề đó, tôi đã cố gắng gần như tất cả mọi thứ, nhận được kết quả tương tự mỗi thời gian: .jars không được tìm thấy cho android ứng dụng hoặc quá trình xây dựng đã không làm việc:

[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 

và như vậy, đối với tất cả trong số tám lọ đó sẽ được đưa vào.

Dưới đây là những điều tôi đã cố gắng để bao gồm họ:

  • tạo một thư mục trong android, gọi là "libs" và đặt lọ của tôi vào nó. Sau khi xây dựng dự án, thư mục và các lọ đã được sao chép vào thư mục build. Bằng cách không cho thiết bị như nó có vẻ.
  • bao gồm họ cũng đơn giản các file khác như AndroidManifest và 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 \ 
  • cố tài sản đưa vào lại tập tin .pro:
LIBS_INSTALL_PATH=/assets/libs 

thư viện .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 cài đặt + = thư viện

  • tạo ra một tập tin libraries.qrc và bao gồm này qua NGUỒN + = libraries.qrc trong file .pro. thư viện.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> 
  • cố gắng với qmake (mà trả về một lỗi, mà tập tin RCC không tìm thấy) "rcc -binary google-api-client-1.19.0.jar -o google-api-client-1.19.0.rcc" như thêm tham số

... Tôi thực sự không biết phải làm gì tiếp theo, tất cả các cấu hình Android của tôi (JDK, SDK, NDK, Ant) đều ở đúng vị trí và có thể truy cập được, biến JAVA_HOME var và ANT var được đặt.

Hai mùi hương cuối cùng: mã tôi muốn đưa vào Android là ứng dụng xác thực của Google+ mà tôi đã tạo bằng ADT Android và hoạt động tốt. Tôi sẽ chuyển các thành phần làm việc đó vào môi trường xây dựng của Qt.

Cảm ơn trước đã đọc mô tả looooong đó và giúp tôi giải quyết!

Loyd

Trả lời

0

OTHER_FILES chỉ dành cho con người. Nó chỉ được sử dụng bởi nhà thám hiểm dự án của Qt Creator để bao gồm các tập tin trong cây. Nó không được sử dụng trong quá trình xây dựng.

Hệ thống tài nguyên Qt (QRC) chỉ có thể sử dụng được từ QFile, máy ảo Android không có kiến ​​thức về những "tệp" đó.

+0

Vì vậy, không có khả năng bao gồm tệp .jar theo bất kỳ cách nào để "chuyển tiếp" nó tới ứng dụng Android của tôi, được tạo bằng Qt? –

+0

@LoydSchnitzel Tôi chắc chắn có, tôi chỉ đơn thuần chỉ ra những gì chắc chắn sẽ không hoạt động. –

+0

Bạn nói đúng ... Mỗi lần chúng ta có thể bỏ qua một cách sai lầm, đó là một bước đi đúng đắn! Cảm ơn vì đầu vào của bạn! (Sẽ đánh giá câu trả lời của bạn lên, nhưng tôi không có danh tiếng yêu cầu đến nay) –

4

GIẢI PHÁP:

Có cách để bao gồm và sử dụng tệp .jar với Android và Qt. Và chắc chắn nó là cách dễ nhất người ta có thể tưởng tượng:

  1. Mở thư mục android của dự án Qt của bạn
  2. Tạo một thư mục có tên "libs" (mức độ tương tự như thư mục "src" và "AndroidManifest.xml")
  3. Đặt file * .jar bạn muốn sử dụng vào libs thư mục
  4. Nhập chúng trong tập tin android-java của bạn như bình thường

Vậy là xong. Không cần sự thích ứng của Project.pro hoặc main.qrc và cũng không cần phải tạo tệp .properties cho android hoặc tương tự.

+0

Cảm ơn bạn..lifesaver! –

+0

Bạn đang chào đón =) Tôi nghĩ, phiên bản mới của Qt có một tài liệu cập nhật, nhưng nó vẫn còn một chút fragmentary ;-) –

+0

làm thế nào để # bao gồm nó để c + + hoặc qml? –

Các vấn đề liên quan