2012-07-14 25 views
8

Tôi biết rằng các chương trình Go có thể được biên dịch cho Android.API Android từ Go

Tôi làm cách nào để sử dụng API cụ thể của Android, như nhận tọa độ GPS hoặc mở URL bằng trình duyệt mặc định, từ trong chương trình Go?

Trả lời

9

Tôi e rằng hiện tại khó có thể xảy ra. Trong các phiên I/O "Gặp gỡ nhóm đi", những người từ nhóm Go đã tuyên bố rằng họ không có kế hoạch thêm hỗ trợ Android vào Go.

Những gì chúng tôi hiện chỉ là trình biên dịch cho kiến ​​trúc ARM. Thật không may, điều này là khá nhiều vô ích cho các ứng dụng Android thực, mặc dù các chương trình như vậy có thể được đưa ra từ dòng lệnh trên các thiết bị Android.

Hầu hết khung công tác Android được viết bằng Java, do đó, để tương tác với nó, mã của bạn sẽ được biên dịch thành * .so libary, sẽ được tải và gọi qua giao diện JNI. Và nó không thể với trình biên dịch Go hiện tại (gc, không chắc chắn về gccgo).

Có lẽ bạn sẽ có thể làm cho bindings vào API Android NDK với cgo, mà sẽ cho phép bạn tạo ra các ứng dụng tại Gò kể từ mức API 9 (Android 2,3)

UPD: Bây giờ bạn có thể sử dụng JNI từ Go và tạo liên kết java tự động với gói golang.org/x/mobile. Trong Go 1.4, nó vẫn là thử nghiệm, nhưng có kế hoạch đưa nó vào bản phát hành Go 1.5. Gói này cũng cung cấp các ràng buộc cho đầu vào GL, âm thanh và người dùng (hy vọng họ cũng sẽ thêm hỗ trợ iOS và tương thích với Android và iOS một ngày). Dù sao, gói phần mềm này chủ yếu được định hướng bằng cách viết game trong Go, thay vì sử dụng Go như một sự thay thế cho Java trên Android.

+1

Ít nhất công việc mạng sẽ tự nhiên?Ý tôi là, các gói 'net' hoặc' net/http' Go có hoạt động "ra khỏi hộp" trên điện thoại Android không? –

+0

@ SebastiánGrignoli Vâng, điều đó có thể xảy ra, một số dự án hiện tại làm điều đó: https://github.com/huin/chunkymonkey/blob/master/docs/android-server.md – zserge

+2

Câu trả lời này được oudated. Dự án https://github.com/golang/mobile bao gồm hỗ trợ cho các ứng dụng Android trong Go. –

1

Bước 1: Tạo thư viện GUI độc lập nền tảng sử dụng Golang sử dụng OpenGL để vẽ và một sự kiện thông minh và hệ thống ràng buộc dữ liệu để viết ứng dụng. Bất kỳ phần mềm nào sử dụng OpenGL sẽ có nhiều di động hơn. Về cơ bản, viết lại Kivy ở Golang.

Bước 2: Tạo trình bao bọc nội suy/phản chiếu dựa trên việc sử dụng các lớp Java tương tự như PyJNIus (cũng là một dự án Kivy).

Bước 3: Rất nhiều công việc khó khăn hơn, bởi vì có rất nhiều để làm để có được đến cấp độ của Kivy

Bước 4: Lợi nhuận

+0

Cách trên đầu, vì vậy tôi hiểu câu trả lời của bạn là "không, hiện tại không thể". :) –

+0

Vâng, tôi không muốn trở thành một kẻ giết người rung cảm, nhưng nó chỉ mất thời gian để hỗ trợ phần mềm để đạt được điều đó. Tôi thực sự thích ý tưởng sử dụng Golang thay vì Java (hoặc Python). Cho đến khi Python nhận được một loại trình biên dịch kiểu-inference để LLVM của IF hoặc một cái gì đó như thế, tôi không muốn phải chịu một hình phạt tốc độ khổng lồ như vậy. – user823629

7

Hãy nhìn vào câu trả lời của tôi để Android App from Go programming language. Dự án goandroid cho phép bạn tạo ứng dụng Android trong Đi qua NDK.

(Disclaimer: Tôi là tác giả của goandroid)

Sửa: Như đã đề cập trong các ý kiến, Go 1.5 thêm hỗ trợ chính thức cho các ứng dụng Android trong tinh khiết Go hoặc như là một kết hợp của Java và Go. iOS cũng dự kiến ​​sẽ đến đúng thời điểm cho bản phát hành cuối cùng 1.5. Xem https://github.com/golang/mobile để biết thêm chi tiết.

+1

goandroid không còn được dùng nữa, hãy xem https://github.com/golang/mobile để được hỗ trợ chính thức. –

2

GO 1.4 doc nói, "Đi 1,4 có thể xây dựng những chương trình cho vi xử lý ARM chạy hệ điều hành Android. Nó cũng có thể xây dựng một thư viện .so có thể được nạp bởi một ứng dụng Android sử dụng các gói hỗ trợ trong subrepository di động"

Có tùy chọn package app trong thư viện "golang.org/x/mobile/app" cho phép bạn viết Ứng dụng cho Android (và cuối cùng là iOS).