Phát triển nền tảng chéo iOS / Android [đã đóng]


113

Tôi đã chơi xung quanh việc phát triển các ứng dụng Android bằng Java trong một thời gian và đang bắt đầu xử lý nó. Tuy nhiên, nếu tôi muốn bắt đầu trên phiên bản iOS, tôi cần phải viết mã mọi thứ từ đầu - đó là điều không mong muốn.

Tôi đã tự hỏi về những giải pháp đa nền tảng nào có sẵn và chúng hoạt động tốt như thế nào trong thực tế. Tôi đã suy nghĩ về các ứng dụng web - có lẽ sử dụng jQuery Mobile hoặc Titanium , hoặc Adobe Flash / Flex / Air. Tôi cũng chưa có máy Mac, có lẽ tôi sẽ phải đầu tư vào.

Vì vậy, câu hỏi của tôi:

  1. Những môi trường phát triển đa nền tảng nào tồn tại cho iOS / Android (và / hoặc các thiết bị khác)?

  2. Kinh nghiệm của bạn với những công cụ này là gì? (đây là điều tôi thực sự muốn biết)


1
Alister, bạn chắc chắn không phải là người đầu tiên hỏi loại câu hỏi này, bạn cũng không phải là người đầu tiên muốn có câu trả lời! :) Đừng quên PhoneGap, cái mà tôi đã nghe nhiều đánh giá trái chiều và Red Foundry, là công cụ cắt bánh quy hơn nhưng trông đẹp - chưa đa nền tảng.
makdad

1
Bạn cũng có thể sử dụng PhoneGap. Tôi đã sử dụng nó và khuyên bạn nên sử dụng nó. Có một điều khoản để tạo tệp exe (IPA cho iOS) bằng ứng dụng được phát triển trên PhoneGap trong Android.
Jayprakash Dubey,

Tôi muốn cập nhật cho câu hỏi này vì bây giờ đã kết thúc năm 2016 và bối cảnh công cụ đa nền tảng đã thay đổi. Tôi muốn nói rằng nó phụ thuộc vào ngôn ngữ lập trình của bạn lựa chọn và nơi nhóm của bạn có nhiều xp nhất với: 1. JavaScript: Hiệu suất Phonegap không tốt trên thiết bị di động, do đó, bạn nên sử dụng các công cụ có thành phần gốc nhưng JS cho logic ứng dụng được khuyến khích. Các tùy chọn là V-Play ( v-play.net/apps ) hoặc React ( reactnative.com ). 2. C #: Xamarin là bạn của bạn. 3. C ++: Sử dụng một framework C ++ như Qt ( qt.io ) Tuyên bố từ chối trách nhiệm: Tôi là một trong những người đứng sau V-Play, dựa trên Qt.
Christian Feldbacher

Trả lời: Flutter , đó là khung giao diện người dùng di động mới của Google để tạo giao diện gốc trên iOS và Android trong thời gian kỷ lục.
naXa 27/02/18

Ngoài ra còn có một dự án haxe.org đang hoạt động đầy hứa hẹn .
Eugene Gr. Philippov

Câu trả lời:


104

Tuyên bố từ chối trách nhiệm: Tôi làm việc cho một công ty, Particle Code, công ty tạo ra một khuôn khổ đa nền tảng. Có rất nhiều công ty trong lĩnh vực này. Những cái mới dường như mọc lên mỗi tuần. Tin vui cho bạn: bạn có rất nhiều sự lựa chọn.

Các khuôn khổ này có các cách tiếp cận khác nhau và nhiều trong số chúng được thiết kế cơ bản để giải quyết các vấn đề khác nhau. Một số tập trung vào trò chơi, một số tập trung vào ứng dụng. Tôi sẽ hỏi những câu hỏi sau:

Bạn muốn viết gì? Ứng dụng doanh nghiệp, ứng dụng năng suất cá nhân, trò chơi giải đố, bắn súng góc nhìn thứ nhất?

Bạn thích môi trường phát triển nào hơn? IDE hay trình soạn thảo văn bản đơn giản?

Bạn có cảm xúc mạnh mẽ về ngôn ngữ lập trình? Trong số các khung mà tôi quen thuộc, bạn có thể chọn từ ActionScript, C ++, C #, Java, Lua và Ruby.

Công ty của tôi tập trung nhiều hơn vào không gian trò chơi, vì vậy tôi không chơi nhiều với các khung JavaScript + CSS như Titanium, PhoneGap và Sencha. Nhưng tôi có thể cho bạn biết một chút về một số framework dành cho game. Trò chơi và các ứng dụng internet phong phú là lĩnh vực mà các khuôn khổ đa nền tảng có thể tỏa sáng, bởi vì các ứng dụng này có xu hướng đặt tầm quan trọng của việc trở nên độc đáo về mặt hình ảnh và ít pha trộn với giao diện người dùng gốc. Dưới đây là một số khuôn khổ cần tìm:

  • Unity www.unity3d.com là một công cụ trò chơi 3D. Nó thực sự không giống bất kỳ môi trường phát triển nào khác mà tôi đã từng làm việc. Bạn xây dựng các cảnh bằng mô hình 3D và xác định hành vi bằng cách gắn các tập lệnh vào các đối tượng. Bạn có thể tập lệnh bằng JavaScript, C # hoặc Boo. Nếu bạn muốn viết một trò chơi dựa trên vật lý 3D sẽ chạy trên iOS, Android, Windows, OS X hoặc bảng điều khiển, thì đây có lẽ là công cụ dành cho bạn. Bạn cũng có thể viết trò chơi 2D bằng nội dung 3D - một ví dụ điển hình về điều này là trò chơi độc lập Max and the Magic Marker, một cuộn bên dựa trên vật lý 2D được viết bằng Unity. Nếu bạn không biết nó, tôi khuyên bạn nên kiểm tra nó (đặc biệt nếu có bất kỳ đứa trẻ nào trong nhà của bạn). Max có sẵn cho PC, Wii, iOS và Windows Phone 7 (mặc dù phiên bản sau là một cổng, vì Unity không hỗ trợ WinPhone). Unity đi kèm với một số trò chơi mẫu hoàn chỉnh với nội dung và kết cấu 3D, điều này thực sự giúp bắt kịp tốc độ với những gì có thể là một môi trường khá phức tạp.

  • Corona www.anscamobile.com/corona là một công cụ trò chơi 2D sử dụng ngôn ngữ kịch bản Lua và hỗ trợ iOS và Android. Điểm hấp dẫn của Corona là khả năng viết các trò chơi dựa trên vật lý rất nhanh trong vài dòng mã, và số lượng lớn các trò chơi dựa trên Corona trong kho ứng dụng iOS là minh chứng cho sự thành công của nó. Môi trường rất thoải mái, điều này sẽ hấp dẫn một số người. Nó đi kèm với một trình mô phỏng và trình gỡ lỗi. Bạn thêm trình soạn thảo văn bản mà bạn chọn và bạn có một môi trường phát triển. SDK cơ sở không bao gồm bất kỳ thành phần giao diện người dùng nào, như các nút hoặc hộp danh sách, nhưng tiện ích bổ sung CoronaUI có sẵn cho người đăng ký.

  • Particle SDK www.particlecode.com là một giải pháp đa nền tảng tổng quát hơn một chút với nền tảng là trò chơi. Bạn có thể viết bằng Java hoặc ActionScript, sử dụng mô hình ứng dụng MVC. Nó bao gồm một IDE dựa trên Eclipse với một trình chỉnh sửa giao diện người dùng WYSIWYG. Chúng tôi hiện hỗ trợ xây dựng cho các thiết bị Android, iOS, webOS và Windows Phone 7. Bạn cũng có thể xuất Flash hoặc HTML5 cho web. Khung ban đầu được phát triển cho các trò chơi xã hội nhiều người chơi trực tuyến, chẳng hạn như poker và backgammon, và nó phù hợp với các trò chơi và ứng dụng 2D có logic phức tạp. Khung hỗ trợ đồ họa 2D và bao gồm một công cụ vật lý 2D.

NB:

Hôm nay, chúng tôi đã thông báo rằng Mã hạt đã được mua lại bởi Appcelerator, nhà sản xuất khung nền tảng đa nền tảng Titanium.

...

Kể từ ngày 1 tháng 1 năm 2012, [ Mã hạt ] sẽ không còn chính thức hỗ trợ nền tảng [ SDK hạt ].

Nguồn

  • Airplay SDK www.madewithmarmalade.com là một khuôn khổ C ++ cho phép bạn phát triển trong Visual Studio hoặc Xcode. Nó hỗ trợ cả đồ họa 2D và 3D. Airplay nhắm mục tiêu đến iOS, Android, Bada, Symbian, webOS và Windows Mobile 6. Họ cũng có một tiện ích bổ sung để tạo ứng dụng AirPlay cho PSP. C ++ của tôi rất gỉ, tôi đã không chơi với nó nhiều, nhưng nó trông rất tuyệt.

Về đường cong học tập, tôi muốn nói rằng Unity có đường cong học tập dốc nhất (đối với tôi), Corona là đường đơn giản nhất, và Particle và Airplay nằm ở giữa.

Một điểm thú vị khác là cách các khuôn khổ xử lý các hệ số dạng khác nhau. Corona hỗ trợ chia tỷ lệ động, điều này sẽ quen thuộc với các nhà phát triển Flash. Điều này rất dễ sử dụng nhưng có nghĩa là bạn sẽ lãng phí không gian màn hình khi chuyển từ màn hình 4: 3 như iPhone sang màn hình 16: 9 như các thiết bị Android qHD mới. Trình chỉnh sửa giao diện người dùng của Particle SDK cho phép bạn thiết kế bố cục linh hoạt theo quy mô, nhưng cũng cho phép bạn điều chỉnh bố cục cho các kích thước màn hình riêng lẻ. Điều này mất nhiều thời gian hơn một chút nhưng cho phép bạn làm cho ứng dụng trông tùy chỉnh cho từng màn hình.

Tất nhiên, những gì phù hợp với bạn phụ thuộc vào sở thích cá nhân và phong cách làm việc cũng như mục tiêu của bạn - vì vậy tôi khuyên bạn nên tải xuống một vài công cụ này và thử. Tất cả các công cụ này đều miễn phí để dùng thử.

Ngoài ra, nếu tôi có thể đưa vào một thông báo dịch vụ công cộng - hầu hết các công cụ này đang được phát triển thực sự tích cực. Nếu bạn tìm thấy một khuôn khổ mà bạn thích, bằng mọi cách, hãy gửi phản hồi và cho họ biết những gì bạn thích, những gì bạn không thích và các tính năng bạn muốn xem. Bạn có cơ hội thực sự để tác động đến những gì sẽ đi vào các phiên bản tiếp theo của những công cụ này.

Hi vọng điêu nay co ich.


Tôi đang nghĩ đến việc phát triển doanh nghiệp nhiều hơn, nhưng bạn có thể đã truyền cảm hứng để tôi xem xét một trong những SDK này cho vui.
Alister

liên kết cho mỗi khung sẽ có ích
Petrus Theron

2
Cập nhật: Mã hạt đã được mua lại bởi Appcelerator, nhà sản xuất Titan, vì vậy số phận của SDK hạt là không chắc chắn. Airplay đã đổi tên của nó, khá khó giải thích, thành "Marmalade."
DocDude

15

MonoTouch và MonoDroid nhưng điều gì sẽ xảy ra với phần đó của Attachmate bây giờ là dự đoán của mọi người. Tất nhiên, ngay cả với các giải pháp đơn lẻ, bạn vẫn tạo ra các chế độ xem không đa nền tảng nhưng ý tưởng là việc sử dụng lại logic kinh doanh.

Hãy theo dõi http://www.xamarin.com/ sẽ rất thú vị khi xem họ nghĩ ra gì.


12

Trải nghiệm của tôi với việc tạo một thứ rất đơn giản trong PhoneGap + jQuery Mobile là tốt. Tôi đã có thể làm điều đó nhanh chóng cho iOS. Tuy nhiên, nó không hoạt động trên điện thoại Android của tôi mà không thực hiện một số thay đổi. Dự án là một ứng dụng rất đơn giản để chụp ảnh và đăng chúng lên một trang web. Và vào cuối ngày, nó cảm thấy "lộn xộn" so với một ứng dụng gốc thực sự.

Tôi không tin rằng sẽ có sự phát triển đa nền tảng dễ dàng. Tôi nghĩ rằng trình duyệt gần như bạn sẽ nhận được. Bằng cách chọn một cái gì đó như PhoneGap, tôi nghĩ rằng bạn chỉ đang giao dịch một tập hợp các điểm đau cho một tập hợp các điểm đau khác.


7

Trong trường hợp bạn không muốn sử dụng một khung chính thức để phát triển đa nền tảng, hãy xem C ++ như một lựa chọn. iOS hỗ trợ đầy đủ việc sử dụng C ++ cho logic ứng dụng của bạn thông qua Objective-C ++. Tôi không biết mức độ hỗ trợ của Android cho C ++ thông qua NDK có phù hợp để thực hiện logic kinh doanh của bạn trong C ++ hơn là chỉ một số đoạn mã quan trọng về hiệu suất hay không, nhưng trong trường hợp trường hợp sử dụng đó được hỗ trợ tốt, bạn có thể thử.

Tất nhiên, cách tiếp cận này chỉ có ý nghĩa nếu logic ứng dụng của bạn tạo thành phần quan trọng nhất trong dự án của bạn, vì các giao diện người dùng sẽ phải được viết riêng cho từng nền tảng.

Trên thực tế, C ++ là ngôn ngữ lập trình được hỗ trợ rộng rãi nhất (ngoại trừ C), và do đó là ngôn ngữ cốt lõi của hầu hết các ứng dụng đa nền tảng lớn.


3
Btw, Android thực sự dường như chỉ hỗ trợ trực tiếp các hoạt động được viết bằng C ++: developer.android.com/reference/android/app/NativeActivity.html
yeoman 24/11/11

4
Có một lưu ý - không có quyền truy cập Java (vì vậy không có tích hợp thư viện bên thứ ba hoặc quyền truy cập SDK) từ NativeActivity. Làm cho nó không phù hợp cho nhiều mục đích.
rbgrn

6

Mặc dù tôi chỉ mới bắt đầu xem xét lĩnh vực phát triển này, nhưng tôi nghĩ nó đi đến sự khác biệt cơ bản này: một số công cụ giữ lại mã gốc và một số chuyển sang bản gốc ...

ví dụ: PhoneGap chỉ giữ mã HTML / CSS / JS mà bạn viết và bao bọc nó trong mã iOS đủ để đủ điều kiện là một ứng dụng, trong khi Appcelerator cung cấp cho bạn một dự án XCode ... vì vậy nếu bạn không quen thuộc với iOS, sau đó có thể sẽ không thực sự cung cấp bất kỳ lợi ích với bạn qua PhoneGap, nhưng nếu bạn DO biết một chút, có thể cung cấp cho bạn chỉ là một chút nhiều khả năng tinh chỉnh các phiên bản bản địa sau khi công sức viết mã lớn hơn của bạn.

Bản thân tôi chưa sử dụng appcelerator, nhưng đã làm việc trong một dự án vài tuần trước, nơi một trong những thành viên trong nhóm của chúng tôi đã tạo toàn bộ ứng dụng iPad trong khoảng 24 giờ sử dụng nó.

Và vâng, để thực sự phục tùng apple, bạn sẽ phải có một chiếc máy Mac, nhưng nếu đó không phải là nền tảng công việc chính của bạn, bạn có thể trả giá rẻ.


3

Cappuccino hoặc PhoneGap .

Đôi khi, việc cố gắng tìm một lối tắt không giúp bạn tiết kiệm thời gian hoặc cung cấp cho bạn một sản phẩm cuối cùng có thể so sánh được.



3

Nếu bạn đã từng sử dụng LUA, bạn có thể thử Corona SDK có thể tạo ứng dụng chạy trên IOS và Android

https://coronalabs.com/

Tôi đã tải xuống và làm lộn xộn một số, tôi thấy LUA là một ngôn ngữ viết kịch bản rất dễ học mà không có những phức tạp / hạn chế của ngôn ngữ lập trình thông thường ....


2

Ngoài ra còn có BatteryTech mà chúng tôi đã sử dụng trong 18 tháng qua và đã phát hành một số trò chơi từ nó. http://www.batterypoweredgames.com/batterytech

Tất cả hỗ trợ C ++, Android và iOS, tất cả người dùng đều có được nguồn đầy đủ. Phiên bản v2 mới bao gồm các ràng buộc lua.


3
Kể từ ngày 30/5/12: 200 đô la cho giấy phép cho 5 nhà phát triển trở xuống. 800 đô la cho hơn 5. Không thể được sử dụng cho các dự án mã nguồn mở.
Roger Dahl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.