2017-07-11 14 views
5

Tôi đã cố gắng để có được GStreamer làm việc trong studio Android, sau hướng dẫn của họ, xem ví dụ ở đây:ví dụ GStreamer trong Android Studio

https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html

Nhưng trong studio mới nhất của Android không có JNI/Android .mk. Tôi đặt mã ở đâu trên trang web đó?

Nó có nên sử dụng CMakeLists.txt không? Hay có gì khác đi vào đó?

Hoặc tôi chỉ cần tạo tệp Android.mk và nếu có, ở đâu (vì không có thư mục jni, chỉ có thư mục cpp)? Và làm thế nào để tôi nói với Android studio nơi tìm tệp Android.mk của tôi?

Cảm ơn!

+0

Nếu câu trả lời của tôi hữu ích, vui lòng chấp nhận câu trả lời đó. Cảm ơn bạn –

Trả lời

7

Tôi đã thực hiện tất cả các hướng dẫn từ trang web của Gstreamer nhưng rất khó. Để giúp đỡ người khác, tôi đã ghi lại nó. Dưới đây là hướng dẫn cho linux (ubuntu) nhưng cũng có thể hoạt động trên cửa sổ, nếu bạn có bất kỳ câu hỏi nào liên quan đến nó, chỉ cần hỏi:) ... Tôi cũng sẽ liên kết một dự án từ gitlab sẵn sàng chạy trong Android Studio:
(hướng dẫn 5) https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(hướng dẫn 2) https://gitlab.com/eduardoprado/gstreamer-tutorial2.git

Sử dụng thư viện tại Android Studio

cách tốt nhất để hiểu và tích hợp GStreamer vào dự án đang thực hiện các hướng dẫn trong trang web này: Xin lỗi, bạn có để tìm liên kết của chính mình, tôi không có danh tiếng để đăng liên kết trực tiếp
Tuy nhiên những hướng dẫn cũ và đã được thực hiện để làm việc trong Eclipse, để hoạt động với Android Studio là cần thiết để:

1. Nhập các hướng dẫn sử dụng tùy chọn Import Android Studio;
2. Đặt Android Studio sử dụng NDK;
3. Đặt biến trong tệp “Android.mk”;
4. Đặt Gradle chỉ biên dịch một số kiến ​​trúc;
5. Sao chép lớp Gstreamer vào đúng đường dẫn.
6. Tắt "Instante Run" từ Android Studio. (Chỉnh sửa làm 2017/10/27)
7. Fix "lập luận mối liên kết vàng" (chỉnh sửa thực hiện chỉ 2017/11/28 người dùng WINDOWS)

Mỗi của các hướng dẫn sẽ được giải thích trong các phần sau:

1. Nhập các hướng dẫn sử dụng tùy chọn Nhập của Android Studio

Android Studio có tùy chọn để nhập dự án từ một IDE khác. Để nhập dự án của Gstreamer được thực hiện cho Eclipse theo các bước sau:
1. Tải xuống tất cả các hướng dẫn từ git:;
2. Trong Android Studio, hãy chuyển đến Tệp -> Dự án nhập mới;
3. Trong trình duyệt mới cho màn hình tệp, hãy chuyển đến "gst-docs", chọn dự án mong muốn (trong trường hợp hướng dẫn 5 của tôi) "android-tutorial-5" và nhấn "OK".

Selecting Project

2. Đặt Studio Android để sử dụng NDK

Bây giờ dự án đã được nhập khẩu, nó là cần thiết để thông báo cho Android Studio rằng dự án sử dụng khuôn khổ NDK. Do đó Gradle sẽ có thể nhập và xử lý tất cả các phụ thuộc. Để làm điều này chúng ta cần phải liên kết các tập tin Android.mk (đã có trong thư mục hướng dẫn):
1. Nhấp chuột phải vào “ứng dụng” trong tab điều hướng bên trái
2. Nhấp vào "Dự án ++ C Liên kết với Gradle"
3. Trong cửa sổ mới:

  • Change "Xây dựng hệ thống" từ "CMake" thành "ndk-build"
  • Bấm vào "..." và duyệt đến vị trí của Android.mk " /AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk "
  • Nhấn OK

Bây giờ tệp xây dựng bên ngoài sẽ xuất hiện trong tab bên trái của dự án. Một số erros cũng sẽ xuất hiện, nó là bình thường và sẽ được sửa chữa trong các phần tiếp theo.

3. Đặt một biến bên trong “Android.mk” tập tin

Phần lỗi cuối cùng xảy ra vì “Android.mk” sẽ không tìm thấy đường dẫn đến nơi GStreamer được chiết xuất. Vì vậy, hãy đặt biến số GSTREAMER_ROOT_ANDROID vào đường dẫn nơi GStreamer được trích xuất. Để đạt được điều này:
1. Duyệt tab bên trái và mở rộng "External Build FIles";
2. Nhấp đúp vào Android.mk để mở tệp;
3. Tại dòng 10, dưới "bao gồm $ (BUILD_SHARED_LIBRARY)", gõ:
- "GSTREAMER_ROOT_ANDROID: = đường"
- NO dấu ngoặc kép
- path là đường dẫn (rõ ràng), nơi GStreamer đã được trích xuất.
Sau khi Gradle sẽ đồng bộ hóa và lỗi "*** Mục tiêu vòm ABI không được hỗ trợ: mips. Dừng" sẽ được hiển thị.

Setting GSTREAMER_ROOT_ANDROID

4. Set Gradle biên dịch chỉ có một số kiến ​​trúc

Các lỗi phần cuối cùng xảy ra bởi vì lớp cố gắng xây dựng cho các kiến ​​trúc khác nhau nhưng nó không tìm thấy tập tin để xây dựng trong MIPS . Để giải quyết vấn đề này, chúng tôi sẽ chỉ định các kiến ​​trúc để xây dựng không bao gồm MIPS:
1. Trong tab trình duyệt bên trái, mở rộng Gradle Scripts;
2. Nhấp đúp vào "build.gradle (Mô-đun: ứng dụng)"
3.Trong dòng dưới "môđun" type:
(chạy hướng dẫn 5)
- abiFilters 'x86', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
(chạy hướng dẫn 2)
- abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
(chỉnh sửa 11/21: Gần đây tôi gặp sự cố với thiết bị arm64-v8a ... với 64 bit sẽ không hiển thị phát trực tuyến, tôi đã giải quyết "xóa arm64-v8a" quá)

enter image description here

5. Sao chép lớp GStreamer với p đúng ath.

Cấu hình cần thiết cuối cùng liên quan đến việc nhập gói trong lớp chính.

Class import error

Lỗi trình bày ở trên xảy ra vì không có lớp GStreamer để có được những “.init” chức năng. Để giải quyết điều này, chúng ta cần phải sao chép lớp GStreamer từ tệp mà nó được trích xuất và quá khứ tại đường dẫn đã chỉ định:

  1. Duyệt qua, sử dụng trình quản lý tệp từ hệ thống của bạn, đến tệp bạn trích xuất GStreamer.
  2. Từ tệp được trích xuất, hãy duyệt đến vị trí của lớp GStreamer. Nó được đặt tại /arm/share/gst-android/ndk-build/GStreamer.java Sao chép GStreamer.java
  3. Quay lại Android Studio và tạo đường dẫn nhập mà lớp Chính đang cố truy cập bắt đầu từ/ứng dụng/java ở tab trình duyệt bên trái. Vì vậy, để hình trên, chúng ta phải tạo ra các org.freedesktop.gstreamer đường dẫn và dán các tập tin GStreamer.java trong đó:
  4. Nhấp chuột phải vào thư mục java
  5. New-> Gói
  6. Loại org.freedesktop .gstreamer
  7. Nhấp chuột phải tại org.freedesktop.gstreamer và Dán 5. Lỗi nhập hiện được giải quyết, nhưng lớp mới có lỗi. Để giải quyết tất cả những gì bạn phải làm là xóa khỏi lớp đã sao chép, “@” và tất cả được đặt giữa “@”.

6. Vô hiệu hoá "Instante Run" từ Android Studio. (chỉnh sửa ngày 27/10/2017)
Tính năng này từ Android Studio có thể gây ra sự cố khi cố chạy dự án, do đó, nên tắt nó đi.
Vô hiệu hóa "Instante Run":

1. Tại Android Studio vào "File" -> "Settings ..." (Ctrl + Alt + S)
2. "Xây dựng, thi công, triển khai" -> " tức thì Run"
3. Bỏ chọn "Enable Run tức thì với những thay đổi mã/tài nguyên trao đổi nóng trên triển khai (mặc định kích hoạt)"
4. Hit "Áp dụng"

7.Fix "mối liên kết luận vàng" (chỉ những người dùng WINDOWS)

Khi cố gắng để Windows, bạn sẽ nhận được lỗi:
Error:error: invalid linker name in argument '-fuse-ld=gold'
Để khắc phục nó:
1. Đến Android NDK Linker (GStreamer) - invalid linker name -fuse-ld=gold
2. Thực hiện theo các Antoine Hướng dẫn trả lời của Zambelli.

+1

Đây là một tài liệu tham khảo tuyệt vời để xây dựng các hướng dẫn gstreamer với Android Studio! Muốn nó là một phần của tài liệu chính thức. Đối với Android Studio trên cửa sổ, tôi đã phải áp dụng [sửa lỗi] [1] cho * tên liên kết không hợp lệ trong đối số '-fuse-ld = gold' *. Tôi cũng đã phải loại bỏ các mục tiêu armeabi do một lỗi tràn relocation relocation. [1]: https://stackoverflow.com/questions/44650470/android-ndk-linker-gstreamer-invalid-linker-name-fuse-ld-gold – Glenn

+0

Cảm ơn bạn đã phản hồi tích cực, luôn tốt cho biết rằng từng bước đang hoạt động và một người khác đã thành công với nó. Tôi đã chỉnh sửa hướng dẫn thêm thông tin mà hướng dẫn được tạo cho linux (có thể lỗi mà bạn nhận được là vì bạn đã tạo trên cửa sổ) và với thông tin để loại bỏ armeabi khỏi bộ lọc trong trường hợp thử hướng dẫn 2 và 3. Nếu người khác sẽ có cùng một vấn đề bạn có trên các cửa sổ, tôi sẽ thêm một bước khác bao gồm liên kết bạn đã sử dụng để giải quyết vấn đề của mình. –

+0

@EduardoFernando khá chắc chắn đây là vấn đề của Windows nói chung - xem "Các vấn đề liên kết Windows" trong [GStreamer] (https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html) nhưng giải pháp mà chúng cung cấp trên trang đó đã không làm việc cho tôi (do đó câu trả lời của tôi cho câu hỏi được liên kết). –

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