Tôi đang cố gắng phát triển / chuyển một trò chơi sang Android, nhưng đó là C và Android hỗ trợ Java, nhưng tôi chắc chắn phải có cách để có ứng dụng C trên đó, có ai biết cách nào để thực hiện điều này không?
Tôi đang cố gắng phát triển / chuyển một trò chơi sang Android, nhưng đó là C và Android hỗ trợ Java, nhưng tôi chắc chắn phải có cách để có ứng dụng C trên đó, có ai biết cách nào để thực hiện điều này không?
Câu trả lời:
Đối với bất kỳ ai đến với điều này thông qua Google, lưu ý rằng bắt đầu từ SDK 1.6 Android hiện đã có SDK gốc chính thức.
Bạn có thể tải xuống Android NDK (Bộ công cụ phát triển bản địa) từ đây: https://developer.android.com/ndk/doads/index.html
Ngoài ra còn có một bài đăng trên blog về NDK: http://android-developers.blogspot.com/2009/06/int Giới thiệu- android-15-ndk-release-1.html
Các Android NDK là một bộ công cụ cho phép bạn thực hiện các bộ phận của ứng dụng của bạn trong mã nguồn gốc, sử dụng ngôn ngữ như C và C ++. Đối với một số loại ứng dụng nhất định, điều này có thể giúp bạn sử dụng lại các thư viện mã được viết bằng các ngôn ngữ đó.
Để biết thêm thông tin về cách bắt đầu với phát triển bản địa, hãy theo liên kết này .
Các ứng dụng mẫu có thể được tìm thấy ở đây .
Thông thường, bạn phải:
Nếu bạn đang muốn bán một ứng dụng:
Google đã phát hành Bộ công cụ phát triển bản địa (NDK) (theo http://www.youtube.com/watch?v=Z5whfaLH1-E lúc 00:07:30).
Hy vọng thông tin sẽ được cập nhật trên trang nhóm Google ( http://groups.google.com/group/android-ndk ), vì nó cho biết nó chưa được phát hành.
Tôi không chắc chắn nơi để tải xuống đơn giản cho nó, nhưng tôi đã nghe nói rằng bạn có thể lấy một bản sao của NDK từ kho lưu trữ Git của Google dưới nhánh bánh rán.
Vị trí chính thức dường như là đây không phải là điều bạn từng "muốn làm". Xem chủ đề này trên danh sách Nhà phát triển Android. Google dự tính android chạy trên nhiều thiết bị khác nhau (CPU, màn hình, v.v.). Do đó, cách tốt nhất để cho phép phát triển là sử dụng mã được quản lý (di động) nhắm vào máy ảo Dalvik. Vì lý do này, SDK Android không hỗ trợ C / C ++.
NHƯNG, hãy xem trang này :
Android bao gồm một tập hợp các thư viện C / C ++ được sử dụng bởi các thành phần khác nhau của hệ thống Android. Những khả năng này được tiếp xúc với các nhà phát triển thông qua khung ứng dụng Android.
Khung ứng dụng được quản lý dường như được xếp chồng lên trên các thư viện này. Trang tiếp tục liệt kê các lib C / C ++: thư viện C tiêu chuẩn, phương tiện, 3D, SQL lite và các trang khác.
Vì vậy, tất cả những gì bạn cần là một chuỗi trình biên dịch sẽ biên dịch C / C ++ sang CPU thích hợp (ARM, trong trường hợp G1). Một số hướng dẫn ngắn gọn về cách làm điều này là ở đây .
Điều tôi không biết là nơi tìm mô tả về các API mà các thư viện này cung cấp. Tôi đoán có thể có các tệp tiêu đề được chôn trong SDK ở đâu đó, nhưng tài liệu có thể còn sơ sài / thiếu. Nhưng tôi nghĩ rằng nó có thể được thực hiện!
Hy vọng rằng đó là hữu ích. Để ghi lại, tôi chưa viết bất kỳ ứng dụng Android gốc nào - chỉ một vài ứng dụng được quản lý đơn giản.
Andy
Bạn có thể sử dụng Nestedvm để dịch C (hoặc các ngôn ngữ GCC khác) sang mã byte Java và sử dụng nó làm cơ sở cho cổng của bạn. Ví dụ: xem cổng Android của bộ sưu tập câu đố di động Simon Tathams .
Tôi hy vọng phương pháp này đã bị NDK làm cho lỗi thời, nhưng nó có thể không tồn tại nếu một số mạng hoặc thứ gì đó không cho phép mọi người nâng cấp điện thoại của họ.
Google đã ra mắt Google I / O 2011: Đưa các trò chơi C và C ++ lên phiên Android có sẵn tại http://www.youtube.com/watch?v=5yorhsSPFG4
Điều này là tốt để hiểu việc sử dụng NDK để viết ứng dụng trong c và c ++ cho Android.
Nếu bạn chỉ muốn biên dịch chéo bất kỳ trò chơi gốc dựa trên bảng điều khiển nào và chạy chúng trên Android thì Bài viết này đã chỉ ra 3 phương pháp cho cùng.
1: Biên dịch tĩnh bằng cách sử dụng chuỗi công cụ độc lập
2: Biên dịch chéo bằng cách sử dụng chuỗi công cụ của Android NDK
3: Biên dịch chéo bằng mã nguồn AOSP
Có lẽ bạn đang tìm kiếm điều này?
Nó là một lớp giữa để phát triển cho một số nền tảng di động sử dụng c ++.
Nhìn vào điều này có vẻ như nó có thể:
"thực tế chỉ có ngôn ngữ Java được hỗ trợ không có nghĩa là bạn không thể phát triển ứng dụng bằng các ngôn ngữ khác. Điều này đã được chứng minh bởi nhiều nhà phát triển, tin tặc và chuyên gia phát triển ứng dụng cho thiết bị di động. Những kẻ ở Elements Interactive BV, công ty đứng sau Edgelib thư viện, đã thành công khi chạy các ứng dụng C ++ bản địa trên nền tảng Android, thậm chí vào thời điểm này vẫn còn nhiều vấn đề về hiển thị và âm thanh, v.v. Điều này bao gồm trò chơi S-Tris2 và bản demo hoạt hình 3D của Edgelib. "
Từ năm 2009 có một sự phát triển về vấn đề này.
NESEitas - Qt (khung C ++) cho Android
Bắt đầu video .
Hãy xem nhóm google ndk có vẻ hứa hẹn, phiên bản đầu tiên của NDK sẽ có sẵn trong 1H2009.
Cập nhật: Và nó được phát hành http://android-developers.blogspot.com/2009/06/int sinhing-android-15-ndk-release-1.html
Tôi không chắc NDK cung cấp phạm vi bảo hiểm đầy đủ của API Java chính thức.
Từ http://developer.android.com/sdk/ndk/index.html#overview :
Xin lưu ý rằng NDK không cho phép bạn phát triển các ứng dụng chỉ dành cho người bản xứ. Thời gian chạy chính của Android vẫn là máy ảo Dalvik.
Google vừa phát hành NDK cho phép chính xác điều đó.
http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/int sinh-and-15-15
Nó có thể được tìm thấy ở đây: http://developer.android.com/sdk/ndk/1.5_r1/index.html
Bài đăng trên blog này có thể là một khởi đầu tốt: http://benno.id.au/blog/2007/11/13/android-native-apps Thật không may, rất nhiều nội dung quan trọng là "để lại cho người đọc".
Tôi không biết hướng dẫn nhưng một công cụ phát triển tốt: Airplay SDK từ Ideaworks Labs. (Gần đây đã đổi thương hiệu " Marmelade ") Sử dụng C / C ++, bạn có thể xây dựng các ứng dụng cho Windows Mobile, iPhone, Android. Thành phần duy nhất tôi không thích là trình soạn thảo GUI - một lỗi, nhưng bạn luôn có thể thay thế nó bằng Notepad.
Bạn có thể tải xuống c4droid và sau đó cài đặt plugin GCC và cài đặt vào SD của bạn. Từ shell tôi chỉ đi qua thư mục chứa nhị phân GCC và sau đó gọi nó để thực hiện trên tàu.
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
xin chào cánh tay!
Ba bước này là tốt để có và lưu trữ trong bài viết này.
1) Cách chuyển mã c gốc trên Android
2) http: //www.integrating ware.com/2010/12/12/calling-native-c-code-ENC-jni-in-android-appluggest/
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Các tệp C / c ++ gốc libstdc ++. * Từ Ubuntu của bạn là các nhị phân x86 (hoặc x86_64) nhưng các thiết bị và trình giả lập Android là ARM. Tất nhiên, dù sao thì điều này cũng không hoạt động, ngay cả khi bạn đặt đúng soname. Đây là cách rất ngây thơ mà không dẫn đến đâu. Android có hỗ trợ rất hạn chế về C ++, nghĩa là không có ngoại lệ, thư viện C ++ tiêu chuẩn (bao gồm STL) và RTTI. Nếu bạn cần chức năng như vậy, hãy sử dụng phân phối NDK tùy chỉnh của tôi từ
http://crystax.net/android/ndk.php - nó hỗ trợ đầy đủ các tính năng C ++ được liệt kê ở trên.
Tại sao có lỗi: tham chiếu không xác định đến lỗi liên kết '__cxa_end_cleanup'. Android stlport
thời gian. Bởi vì không có liên kết đến libstdc + +. A. Sai rồi.
Bởi vì nó sử dụng một số thư viện tĩnh, nên cần phải liên kết đầy đủ libstdc + +. Một lon
http://crystax.net/android/ndk.php tại đây để tải gói
thư mục \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi.
Android trên hỗ trợ libstdc + + của riêng nó bị hạn chế, nó phải được liên kết với libstdc + + hoàn chỉnh. Một công việc.
Thêm tệp trong Android.mk LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
Và LOCAL_CPPFLAGS + =-lstdc + +-fexceptions
có thể được biên dịch
Có một kế hoạch cho phép các thư viện C / C ++ trong phiên bản SDK tiếp theo của Android (Codename Eclair?) Cho đến nay, không thể thông qua SDK Java của Android. Tuy nhiên, bạn có thể lấy dự án nguồn mở HUGE, cuộn các thư viện của riêng bạn và sau đó flash thiết bị của riêng bạn ... nhưng bất kỳ ai muốn sử dụng thư viện của bạn cũng sẽ phải flash bản dựng tùy chỉnh của bạn.
Câu trả lời ngắn gọn: Bạn không thể.
@ Backslash17: Xem qua bài viết và liên kết sau với hướng dẫn cài đặt, tất cả công ty đã làm việc là khởi chạy một trình tự thực thi được biên dịch trên trình giả lập, bỏ qua khung công tác Android. Một khi bạn có trình giả lập, bạn có thể telnet và có shell linux. Chạy một chương trình linux là chuyện nhỏ. Nhưng điều đó không hoạt động cho điện thoại mà không cần bẻ khóa (còn gọi là quyền truy cập root) và không thể cung cấp trên thị trường.
Trừ khi Google mở ra các cơ hội khác hoặc ai đó viết trình biên dịch tùy chỉnh biên dịch Ngôn ngữ X thành mã byte Dalvik (Dalvik là VM chạy các chương trình Android), bạn sẽ không thể viết mã gốc.