Bagaimana saya bisa menargetkan Windows 10 UWP dan Windows Phone 8.1 di aplikasi yang sama?

18

Latar Belakang

Dari sudut pandang pengembang, titik penjualan utama Windows 10 adalah Universal * Windows Platform (UWP) yang baru .

* Di mana "Universal" benar-benar berarti "universal untuk semua perangkat yang menjalankan Windows 10", dan bukan "universal untuk perangkat yang menjalankan tidak hanya Windows 10, tetapi juga Windows 8.1 dan mungkin Windows 7". Jadi jika Anda membuat aplikasi UWP, Anda benar-benar hanya membangun "aplikasi Windows 10". Aplikasi UWP tidak akan berjalan bahkan pada perangkat Windows 8.1 dan Windows Phone 8.1, yaitu mereka tidak kompatibel sama sekali.

Pada Q3 2015, Windows 10 tersedia untuk PC dan perangkat IoT . Setidaknya beberapa bulan lagi sebelum Windows 10 Mobile dirilis ke publik, tetapi mungkin tidak lebih dari satu tahun. Ini berarti bahwa Windows Phone 8.1 akan tetap ada untuk sementara waktu.

Pertanyaan

Saya akan mulai mengembangkan aplikasi Windows Phone, dan saya berencana untuk menerbitkannya dalam sebulan atau lebih karena ini adalah aplikasi yang cukup sederhana. Karena Windows 10 Mobile tidak akan tiba dalam waktu dekat, apalagi perangkat di seluruh dunia yang ditingkatkan, saya harus menargetkan Windows Phone 8.1 untuk saat ini. Namun, karena tidak akan bahwa jauh sebelum Windows 10 Ponsel gulungan keluar, aku bertanya-tanya apakah itu akan bijaksana untuk mempersiapkan solusi saya untuk penyebaran ke Windows 10 UWP serta Windows Phone 8.1 (yang juga akan memungkinkan saya untuk terus mendukung 8.1 selama yang saya butuhkan).

Saya melihat bahwa saya dapat mengelompokkan proyek UWP dan proyek 8.1 dalam solusi yang sama, dan berbagi file sumber dan aset melalui proyek Bersama seperti yang dilakukan dengan templat Windows 8.1 Universal di Visual Studio. Apakah saya di jalur yang benar? Jika demikian, apakah ada pedoman tambahan yang harus saya ikuti untuk memastikan semuanya (termasuk XAML, karena idealnya saya ingin memiliki UI yang sama atau setidaknya serupa pada kedua platform) benar-benar berfungsi dengan baik pada kedua platform yang menyebabkan ketidaksesuaian?

Atau, saya tidak bisa khawatir tentang Windows 10 Mobile untuk saat ini dan mulai dengan proyek 8.1, dan memindahkannya ke UWP nanti, tetapi saya masih harus mempertahankan kedua versi aplikasi saya karena saya tidak berencana untuk membuang 8.1 pengguna segera. Saya masih harus khawatir tentang paritas fitur / XAML dalam kasus ini.

BoltClock
sumber
3
Sama seperti pembaruan, saya terus maju dan menciptakan solusi yang terdiri dari proyek Bersama, proyek UWP dan proyek WP8.1. Saya akan
merincinya
Adakah pembaruan yang ingin Anda bagikan tentang penemuan Anda tentang subjek khusus ini? Saya benar-benar tertarik mengetahui bagaimana pendekatan ini bekerja untuk Anda.
Nelson Reis
3
@Nelson Reis: Saya sedang mengerjakan pengiriman aplikasi saya untuk WP8.1 (yang hebat!), Jadi saya belum mulai bekerja pada aplikasi UWP. Tapi saya akan segera. Sejauh ini, semuanya berjalan cukup baik di sisi WP8.1.
BoltClock
Saya hanya tertarik dengan pembaruan. Bagaimana perkembangan WP8.1 dan UWP? (Saya memiliki kurang dari 50 poin, jadi saya tidak bisa berkomentar) Alasannya adalah saya mulai mengembangkan aplikasi lintas platform, dan saat ini saya memutuskan teknologi apa yang akan digunakan. ( programmers.stackexchange.com/questions/314850/… )
pembuatan
2
Hei, maaf ini butuh waktu lama. Pengembangan pada aplikasi UWP saya telah datang sehingga saya akan memiliki sesuatu untuk dibagikan dalam beberapa minggu ke depan.
BoltClock

Jawaban:

2

Seperti yang Anda katakan di salah satu komentar Anda, cara terbaik untuk melakukannya adalah dengan menggunakan proyek bersama dan menambahkan beberapa kepala ke sana. Dalam kasus Anda, windows phone 8.1 head dan uwp head. Posisi ini juga dinyatakan dalam MVA oleh Jerry Nixon dan Andy Wigley (saya pikir ini dia, tetapi sudah diperbarui sejak saat itu), di bagian tentang porting 8.1 aplikasi ke uwp.

Dalam proyek bersama Anda, Anda mungkin harus menggunakan arahan kompilasi bersyarat untuk membedakan antara kode yang berjalan di uwp dan telepon 8.1. (Seperti saat membuat aplikasi universal windows 8.1 / phone 8.1)

Corcus
sumber
1

Bergantung pada seberapa spesifik fitur Windows pada aplikasi Anda, Anda bisa menggunakan platform seperti Xamarin yang memungkinkan Anda menulis tidak hanya untuk Windows, tetapi juga iOS dan Android dalam basis kode yang sama.

Kyle JV
sumber
1

Seperti dari pengalaman saya: ada baiknya untuk menempatkan beberapa helper / logic / etc ke pustaka PCL. Kemudian Anda dapat membuat dua proyek (masing-masing untuk UWP dan WP8) yang dapat memanfaatkan PCL dengan nol perubahan. Anda juga dapat berbagi layanan, melihat model, dan model (dengan sangat sedikit #jika garis kompilasi bersyarat).

Satu-satunya hal yang TIDAK layak untuk dibagikan adalah staf terkait UI karena terlalu banyak hal yang harus diganti / dikondisikan (jadi jauh lebih mudah untuk menyiapkan tata letak terpisah untuk masing-masing UWP dan WP8 bahkan jika mereka praktis sama).

PS Saya melakukan itu untuk UWP dan WP8.1 Silverlight

Yury Schkatula
sumber