Làm cách nào tôi có thể nhắm mục tiêu cả Windows 10 UWP và Windows Phone 8.1 trong cùng một ứng dụng?


18

Lý lịch

Từ quan điểm của một nhà phát triển, điểm bán hàng chính của Windows 10 là Nền tảng phổ biến * Windows (UWP) mới của nó .

* Trong đó "Universal" thực sự có nghĩa là "phổ quát cho tất cả các thiết bị chạy Windows 10" và không "phổ biến cho các thiết bị chạy không chỉ Windows 10, mà cả Windows 8.1 và có thể cả Windows 7". Vì vậy, nếu bạn đang xây dựng một ứng dụng UWP, bạn thực sự chỉ đang xây dựng một "ứng dụng Windows 10". Các ứng dụng UWP sẽ không chạy ngay cả trên các thiết bị Windows 8.1 và Windows Phone 8.1, tức là chúng hoàn toàn không tương thích ngược.

Kể từ quý 3 năm 2015, Windows 10 có sẵn cho PCthiết bị IoT . Sẽ còn ít nhất vài tháng nữa trước khi Windows 10 Mobile được phát hành ra công chúng, nhưng có lẽ không quá một năm. Điều này có nghĩa là Windows Phone 8.1 sẽ còn tồn tại trong một thời gian nữa.

Câu hỏi

Tôi sắp bắt đầu phát triển một ứng dụng Windows Phone và tôi dự định xuất bản nó trong vòng một tháng tới vì đây là một ứng dụng khá đơn giản. Vì Windows 10 Mobile sẽ không đến sớm bất cứ lúc nào, chứ đừng nói đến việc các thiết bị trên toàn thế giới sẽ được nâng cấp, tôi phải nhắm mục tiêu Windows Phone 8.1 ngay bây giờ. Tuy nhiên, vì nó sẽ không được rất lâu trước khi Windows 10 cuộn di động ra, tôi đang tự hỏi nếu nó muốn được khôn ngoan để chuẩn bị giải pháp của tôi cho việc triển khai Windows 10 UWP cũng như Windows Phone 8.1 (mà cũng sẽ cho phép tôi tiếp tục hỗ trợ 8.1 miễn là tôi cần).

Tôi thấy rằng tôi có thể nhóm một dự án UWP và một dự án 8.1 trong cùng một giải pháp và chia sẻ các tệp và tài sản nguồn thông qua một dự án được chia sẻ như được thực hiện với mẫu Windows 8.1 Universal trong Visual Studio. Có phải tôi đang trên đường ray bên phải không? Nếu vậy, có bất kỳ hướng dẫn bổ sung nào tôi nên tuân theo để đảm bảo mọi thứ (bao gồm XAML, vì lý tưởng nhất là tôi muốn có cùng một giao diện người dùng giống nhau hoặc ít nhất là giống nhau trên cả hai nền tảng) thực sự hoạt động chính xác trên cả hai nền tảng cho bất kỳ sự không phù hợp nào?

Ngoài ra, bây giờ tôi không thể lo lắng về Windows 10 Mobile và bắt đầu với một dự án 8.1 và sau đó chuyển nó sang UWP , nhưng tôi vẫn phải duy trì cả hai phiên bản ứng dụng của mình vì tôi không có kế hoạch bỏ 8.1 người dùng ngay lập tức. Tôi vẫn phải lo lắng về tính tương đương tính năng / XAML trong trường hợp này.


3
Cũng như một bản cập nhật, tôi đã tiếp tục và tạo ra một giải pháp bao gồm một dự án được chia sẻ, một dự án UWP và một dự án WP8.1. Tôi sẽ trình bày chi tiết trong câu trả lời sau khi tôi chắc chắn mình biết mình đang làm gì ...
BoltClock

Bất kỳ cập nhật nào bạn muốn chia sẻ về những khám phá của bạn về chủ đề cụ thể này? Tôi thực sự thích thú khi biết cách tiếp cận này hiệu quả với bạn.
Nelson Reis

3
@Nelson Reis: Tôi đang làm việc để vận chuyển ứng dụng của mình cho WP8.1 (thật tuyệt!), Vì vậy tôi chưa bắt đầu làm việc trên ứng dụng UWP. Nhưng tôi sẽ sớm thôi. Cho đến nay, mọi thứ đang hoạt động khá tốt ở phía WP8.1.
BoltClock

Tôi chỉ quan tâm đến việc cập nhật. Sự phát triển của WP8.1 và UWP diễn ra như thế nào? (Tôi có ít hơn 50 điểm, vì vậy tôi không thể nhận xét) Lý do cho việc này là tôi đang bắt đầu phát triển một ứng dụng đa nền tảng và hiện tôi đang quyết định sử dụng công nghệ nào. ( lập trình
viên.stackexchange.com/questions/314850 / Google

2
Xin chào, tôi xin lỗi vì điều này mất quá nhiều thời gian. Sự phát triển trên ứng dụng UWP của tôi đã được triển khai vì vậy tôi sẽ có vài thứ để chia sẻ trong vài tuần tới.
BoltClock

Câu trả lời:


2

Như bạn nói trong một trong những bình luận của bạn, cách tốt nhất để giải quyết vấn đề này là sử dụng một dự án được chia sẻ và thêm một vài cái đầu vào nó. Trong trường hợp của bạn, một đầu windows phone 8.1 và một đầu uwp. Vị trí này cũng được thể hiện trong một MVA bởi Jerry Nixon và Andy Wigley (Tôi nghĩ rằng đây là nó, nhưng nó đã được cập nhật kể từ đó), trong phần về việc chuyển các ứng dụng 8.1 sang uwp.

Trong dự án chia sẻ của bạn, bạn có thể phải sử dụng các chỉ thị biên dịch có điều kiện để phân biệt giữa mã chạy trong uwp và điện thoại 8.1. (Giống như khi tạo các ứng dụng windows 8.1 / phone 8.1 phổ quát)


1

Tùy thuộc vào tính năng cụ thể của Windows mà ứng dụng của bạn cần phải có, bạn có thể sử dụng nền tảng như Xamarin , cho phép bạn viết không chỉ cho Windows, mà cả iOS và Android trong cùng một cơ sở mã.


1

Theo kinh nghiệm của tôi: thật đáng để đặt một số người trợ giúp / logic / vv vào thư viện PCL. Sau đó, bạn có thể tạo hai dự án (tương ứng cho UWP và WP8) có thể sử dụng PCL với các thay đổi bằng không. Ngoài ra, bạn có thể chia sẻ các dịch vụ, xem mô hình và mô hình (với rất ít dòng biên dịch có điều kiện #if).

Điều duy nhất KHÔNG đáng để chia sẻ là các nhân viên liên quan đến UI vì có quá nhiều thứ phải được chuyển đổi / điều hòa (vì vậy việc chuẩn bị bố trí riêng cho từng UWP và WP8 sẽ dễ dàng hơn nhiều ngay cả khi chúng thực tế giống nhau).

PS tôi đã làm điều đó cho UWP và WP8.1 Silverlight

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.