Tôi là một nhà phát triển .NET (hơn 6 năm nay) và chỉ mới bắt đầu tìm hiểu về phát triển điện thoại di động/điện thoại thông minh/máy tính bảng. Một cách hợp lý, tôi (và có lẽ tất cả mọi người khác ngoài kia) muốn ứng dụng chúng tôi tạo ra để chạy trên tất cả các nền tảng điện thoại thông minh. Nó chỉ cảm thấy tự nhiên từ quan điểm người dùng bình thường (layman) rằng nếu đó là một "ứng dụng di động" nó sẽ chạy trên thiết bị di động. Nó không quan trọng nếu tôi sở hữu iPhone hoặc Android, ứng dụng dành cho thiết bị di động là ứng dụng dành cho thiết bị di động. Lưu ý: Tôi đang nói về phát triển nền tảng gốc, không phải HTML/ứng dụng web có thể được sử dụng từ trình duyệt.Phát triển di động đa nền tảng được thực hiện như thế nào trong thực tế hiện nay (năm 2013)?
Vì vậy, đây chỉ là câu hỏi tổng quan cấp cao ... các chiến lược hiện tại (trong năm 2013) là gì để giải quyết vấn đề này? Cách tôi tưởng tượng các công trình phát triển nền tảng di động có thể là một cơ sở mã duy nhất phổ biến thực hiện logic nghiệp vụ của ứng dụng và sau đó cho mỗi nền tảng nhắm mục tiêu, chúng ta cần phát triển phần GUI riêng biệt. Làm thế nào đến nay là từ sự thật trong thực tế?
Lấy ví dụ trò chơi phổ biến "Angry Birds". Tôi đã chơi trên iPhone, Android và thậm chí từ trình duyệt Chrome trên Windows Desktop (có thể là trò chơi Flash hoặc HTML5) và mỗi phiên bản có cảm giác giống hệt nhau khi chơi. Họ đã làm như thế nào? Tôi tưởng tượng họ có công cụ trò chơi như mã thông thường nhưng trong ngôn ngữ nào nó có thể được viết? Theo như tôi biết không có ngôn ngữ lập trình phổ biến cho các tệp mã nguồn duy nhất, nó có thể được biên dịch thành các tệp nhị phân gốc cho điện thoại ios/android/win8.
Đồng ý với các điều trên. Tôi nghĩ PhoneGap có ý nghĩa hơn trong những ngày đầu của sự phát triển iOS, khi không có nhiều người bên ngoài Apple, những người thông thạo mục tiêu C, nhưng có rất nhiều người biết công nghệ web. Bây giờ, Obj-C là một trong 10 ngôn ngữ lập trình hàng đầu và có rất nhiều nhà phát triển bản địa tài năng. Tôi đã nghiên cứu sử dụng nó để mở rộng khả năng của mình vào Android, nhưng kết luận rằng nó có ý nghĩa hơn để tìm hiểu rằng SDK hoặc hợp đồng phụ. –
Tôi sẽ không viết tắt PhoneGap do những lý do được liệt kê. Trong thực tế, phần lớn các thay đổi giao diện người dùng của bạn có thể có bằng cách sử dụng một tệp CSS khác cho từng thiết bị hoặc bạn luôn có thể ít quan tâm hơn đến việc tìm kiếm 100% gốc. Các nút sẽ trông giống như một nút mặc định xuất hiện trong trình duyệt ... như các phần tử khác. Cả hai tùy chọn được liệt kê trong câu trả lời của tôi có thể dễ dàng thích nghi với bất kỳ nền tảng nào được hỗ trợ bằng cách thay đổi chỉ các lớp giao diện người dùng (CSS cho phonegap và một dự án giao diện người dùng cho Xamarin). Lý do của tôi bỏ qua phonegap sẽ là hiệu suất ... không xuất hiện. – Jared
Tôi không nói rằng họ nên tránh PhoneGap hoặc tương tự. Trên thực tế, nó có thể là một giải pháp tuyệt vời để triển khai một ứng dụng cho tất cả các nền tảng chính một cách nhanh chóng và sau đó (nếu cần) di chuyển sang giao diện người dùng gốc từng bước. Điểm của câu trả lời của tôi là không có viên đạn bạc. Có một số cách để đi, nhưng tất cả đều có nhược điểm của họ. – Const