2010-05-07 39 views
7

Rõ ràng là các trình biên dịch chéo sẽ không được Apple App Store cho phép, vì vậy một nhà phát triển sẽ cần phải làm quen với Objective-C để tạo các ứng dụng cho iPhone. Tôi đã tự hỏi, liệu có một trình biên dịch chéo sẽ lấy mã ứng dụng Objective-C và xây dựng lại nó thành một ứng dụng Java tương tự có thể được đóng gói cho Android không? Không. Bằng cách đó, một nhà phát triển vẫn có thể học chỉ một ngôn ngữ (obj-c) nhưng đưa ra các ứng dụng trên nhiều thiết bị.Trình biên dịch đối tượng-C tới Java

Tôi hiểu rằng cổng Java sẽ kém tối ưu hơn một ứng dụng được mã hóa nguyên bản, nhưng có thể lưu giữ một cách dễ dàng một nhà phát triển một thời gian.

Chỉnh sửa: Vâng, các ứng dụng sẽ rất tệ. Nhưng chúng sẽ không tệ đến nỗi nếu chúng được xây dựng bằng monotouch hay trình biên dịch chéo flash? Những phương pháp tương tự có thể được sử dụng mà các trình biên dịch chéo này sử dụng không?

+0

Stella SDK cho là chuyển đổi ứng dụng iOS của bạn để Android và các định dạng khác: http: //www.yeecco. com/stella – jsherk

Trả lời

7

Tôi không nghe nói về một trình biên dịch chéo sẽ làm những gì bạn đang yêu cầu. Ngay cả khi người ta đã tồn tại, vấn đề lớn hơn sẽ là các khung công tác (UIKit, CoreAnimation, vv) là rất khác nhau giữa hai nền tảng. Không có một số khung công tác chung, tất cả các mã giao tiếp với các khung công tác sẽ phải được làm lại.

+0

Ở đây khung phổ biến: http://github.com/rcmcastro/cocoatouch-for-android – rcmcastro

-1

Vấn đề với trình biên dịch như vậy là nó sẽ tạo ra các ứng dụng khủng khiếp. Android có một mô hình khác nhau (tốt hơn) về cách ứng dụng được cấu trúc - trong khi ứng dụng iPhone truyền thống hơn, ứng dụng Android được tích hợp tốt hơn vào hệ thống (thông qua hoạt động, xem, dịch vụ và ý định).

Thách thức lớn nhất không phải là mã chính, mà là giao diện người dùng và thư viện hệ thống. Nếu tất cả các lượt xem là XIB, thì có một hy vọng nhỏ.

3

Không có cơ hội. Nói chung, dịch từ một ngôn ngữ cấp thấp như C sang một ngôn ngữ cấp cao hơn (bao giờ hết) như Java sẽ dẫn đến một số mã rất tối ưu.

Nhưng đó không phải là phần tồi tệ nhất - bạn cũng cần phải dịch giữa hai mô hình ứng dụng cực kỳ khác nhau. Bạn sẽ phải thực hiện lại hầu hết các ứng dụng Cocoa Touch như một ứng dụng trên Android, hoặc cố gắng tìm ra ứng dụng iPhone thực sự đang làm gì và tạo ra các thành ngữ Android tương đương.

Đường dẫn nhiều khả năng sẽ giống như GNUstep, nhưng tôi không biết liệu có ai đang nghiêm túc xem xét triển khai lớp UIKit cho GNUstep không, và bạn sẽ kết thúc với một ứng dụng gốc ở cuối, thay vì một ứng dụng Java.

+1

Mục tiêu-C là một ngôn ngữ cấp cao hơn, giống như Java ... Tôi có hơn một thập kỷ lập trình Java trong vành đai của tôi và bây giờ toàn thời gian Objective-C làm việc kể từ khi phát hành của iPhone SDK (và thậm chí một chút trước đó). –

+0

Để làm rõ - bạn có thể sử dụng những thứ như con trỏ hàm, phân bổ bộ nhớ thủ công, bitmask và bitfields và các tính năng C khác trong mã Objective-C của bạn. Một chương trình Java sẽ phải mô phỏng các cấu trúc này với một thứ nặng hơn đáng kể. –

+0

Chúng tôi hoàn toàn làm điều này tại apportable. –

1

Có một dự án, được gọi là Máy ảo XML, tương tự như những gì bạn đang yêu cầu. Tôi đã quan tâm đến điều đó trước khi tôi biết Mục tiêu-C. Theo như tôi biết, việc biên dịch chéo từ Java sang iPhone là có thể (với một số hạn chế). Dự án vẫn đang trong quá trình phát triển. Bạn có thể kiểm tra trang web của mình tại XML VM webpage.

Có thể ppl từ máy ảo XML có thể trả lời câu hỏi của bạn (nếu họ có kế hoạch tạo biên dịch chéo từ Objective-C sang Java).

Nhưng tôi vẫn cho rằng làm cho ứng dụng hai lần (đối với mỗi nền tảng sử dụng các ngôn ngữ và công cụ khác nhau) chắc chắn sẽ cho kết quả tốt hơn.

4

Sự cố này được giải quyết với Apportable. Nó sử dụng clang và thời gian chạy Objective-c của Apple và biên dịch cho Android nguyên bản. Nó cũng kết nối mã đó với JNI theo một cách tốt đẹp để nó có thể truy cập được trong Android.Bạn không cần phải chuyển đổi sang Java và không có hình phạt về hiệu suất vì nó biên dịch cho kiến ​​trúc ARM gốc chạy trên thiết bị (thậm chí đôi khi có thể nhanh hơn Dalvik/Java trên thiết bị). Nó cũng có một cổng của UIKit mà bản đồ tất cả mọi thứ khá tốt.

+0

Điều đó khá thú vị. Tuy nhiên, tài liệu trên trang web khá thưa thớt. Khung nào hỗ trợ, ngoài UIKit? –

+0

$ 1000 để sử dụng UIKit? Cảm ơn nhưng không cảm ơn. –

+0

Bạn có thể sử dụng UIKit mà không phải trả $ 1000. –

1

Có, có một ứng dụng chuyển đổi Objective-C sang Java. Bạn vẫn sẽ cần phải biết một số Java nhưng nó giúp bạn tiết kiệm rất nhiều thời gian porting cho Android. Nó đi kèm với một dự án tương thích Android mà bạn có thể thêm như là một phụ thuộc trong nhật thực. Nó có ánh xạ kiểu và phương thức tùy chỉnh và bạn có thể chỉ định ánh xạ phương thức bằng cách sử dụng một hệ thống khuôn mẫu.

Kiểm tra nó ra ở đây ... O2J - Objective-C to Java Converter

Sau đây là cách để họ video ... O2J Howto Video

+0

Cảm ơn bạn @Cal. Đây là giải pháp duy nhất ít hữu ích nhất. Những người khác không làm việc hoặc không tồn tại nữa. –

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