ฉันจะกำหนดเป้าหมายทั้ง Windows 10 UWP และ Windows Phone 8.1 ในแอพเดียวกันได้อย่างไร


18

พื้นหลัง

จากมุมมองของนักพัฒนาจุดขายหลักของ Windows 10 คือUniversal * Windows Platform (UWP)ใหม่

* ที่ "สากล" จริงๆหมายถึง "สากลไปยังอุปกรณ์ทั้งหมดที่เรียกใช้ Windows 10" และไม่ "สากลไปยังอุปกรณ์ที่ทำงานไม่เพียง แต่วินโดวส์ 10 แต่ยังใช้ Windows 8.1 และบางที Windows 7" ดังนั้นถ้าคุณสร้างแอพ UWP คุณก็แค่สร้าง "แอพ Windows 10" แอพ UWP จะไม่ทำงานแม้กระทั่งบนอุปกรณ์ Windows 8.1 และ Windows Phone 8.1 นั่นคือมันไม่สามารถใช้งานร่วมกับรุ่นเก่าได้

ขณะที่ไตรมาสที่ 3 ปี 2015 ของ Windows 10 สามารถใช้ได้สำหรับเครื่องคอมพิวเตอร์และอุปกรณ์ IOT อย่างน้อยอีกสองสามเดือนก่อนที่ Windows 10 Mobile จะวางจำหน่ายสู่สาธารณะ แต่อาจไม่เกินหนึ่งปี ซึ่งหมายความว่า Windows Phone 8.1 จะยังคงอยู่ในขณะนี้

คำถาม

ฉันกำลังจะเริ่มพัฒนาแอพ Windows Phone และฉันวางแผนที่จะเผยแพร่ภายในเดือนหน้าหรือเพราะมันเป็นแอพที่ค่อนข้างเรียบง่าย เนื่องจาก Windows 10 Mobile จะไม่มาถึงในไม่ช้าทุกเวลาให้อุปกรณ์ที่ต้องได้รับการอัพเกรดทั่วโลกฉันจึงต้องตั้งเป้าหมาย Windows Phone 8.1 ไว้ก่อน แต่เนื่องจากมันจะไม่เป็นที่นานก่อนที่จะใช้ Windows 10 ม้วนมือถือออกมาผมสงสัยว่ามันควรจะฉลาดเพื่อเตรียมความพร้อมการแก้ปัญหาของฉันสำหรับการใช้งานกับ Windows 10 UWP เช่นเดียวกับ Windows Phone 8.1 (ซึ่งยังจะช่วยให้ฉัน สนับสนุน 8.1 ต่อไปตราบเท่าที่ฉันต้องการ)

ฉันเห็นว่าฉันสามารถจัดกลุ่มโครงการ UWP และโครงการ 8.1 ในโซลูชันเดียวกันและแบ่งปันไฟล์ต้นฉบับและสินทรัพย์ผ่านโครงการที่ใช้ร่วมกันได้เช่นเดียวกับเทมเพลต Windows 8.1 Universal ใน Visual Studio ฉันกำลังติดตามใช่ไหม? ถ้าเป็นเช่นนั้นมีแนวทางใดที่ฉันควรปฏิบัติตามเพื่อให้แน่ใจว่าทุกอย่าง (รวมถึง XAML ตามที่ฉันต้องการให้มี UI ที่เหมือนกันหรืออย่างน้อยคล้ายกันบนแพลตฟอร์มทั้งสอง) ใช้งานได้จริงอย่างถูกต้องบนแพลตฟอร์มทั้งสอง

อีกทางหนึ่งฉันไม่ต้องกังวลเกี่ยวกับ Windows 10 Mobile ในตอนนี้และเริ่มต้นด้วยโครงการ 8.1 และย้ายไปที่ UWP ในภายหลัง แต่ฉันยังต้องบำรุงรักษาแอปทั้งสองเวอร์ชันของฉันเนื่องจากฉันไม่ได้วางแผนที่จะทำ 8.1 ผู้ใช้ทันที ฉันยังคงต้องกังวลเกี่ยวกับคุณลักษณะ / ความเท่าเทียมกันของ XAML ในกรณีนี้


3
เช่นเดียวกับการอัปเดตฉันไปข้างหน้าและสร้างโซลูชันที่ประกอบด้วยโครงการที่ใช้ร่วมกันโครงการ UWP และโครงการ WP8.1 ฉันจะดูรายละเอียดในคำตอบต่อมาครั้งหนึ่งฉันแน่ใจว่าฉันรู้ว่าสิ่งที่ฉันทำ ...
BoltClock

อัปเดตใด ๆ ที่คุณต้องการแบ่งปันเกี่ยวกับการค้นพบของคุณในเรื่องนี้โดยเฉพาะ? ฉันสนใจที่จะรู้ว่าวิธีการนี้ทำงานให้คุณได้อย่างไร
Nelson Reis

3
@Nelson Reis: ฉันกำลังจัดส่งแอปของฉันสำหรับ WP8.1 (ซึ่งยอดเยี่ยมมาก!) ดังนั้นฉันจึงยังไม่ได้เริ่มใช้งานแอป UWP แต่ฉันจะเร็ว ๆ นี้ จนถึงตอนนี้สิ่งต่าง ๆ ใช้งานได้ดีในฝั่ง WP8.1
BoltClock

ฉันแค่สนใจในการอัปเดต การพัฒนา WP8.1 และ UWP เป็นอย่างไร (ฉันมีน้อยกว่า 50 คะแนนดังนั้นฉันไม่สามารถแสดงความคิดเห็นได้) เหตุผลนี้คือฉันเริ่มพัฒนาแอพข้ามแพลตฟอร์มและตอนนี้ฉันกำลังตัดสินใจว่าจะใช้เทคโนโลยีใด ( programmers.stackexchange.com/questions/314850/… )
makons

2
เฮ้ฉันขอโทษที่มันใช้เวลานานมาก การพัฒนาแอพ UWP ของฉันมีมาพร้อมดังนั้นฉันจะมีบางอย่างที่จะแบ่งปันภายในสองสามสัปดาห์ถัดไป
BoltClock

คำตอบ:


2

อย่างที่คุณพูดในความคิดเห็นของคุณวิธีที่ดีที่สุดในการทำสิ่งนี้คือการใช้โครงการที่ใช้ร่วมกันและเพิ่มหลายหัวเข้าไป ในกรณีของคุณ windows phone 8.1 head และ uwp head ตำแหน่งนี้ถูกแสดงใน MVA โดย Jerry Nixon และ Andy Wigley (ฉันคิดว่ามันเป็นแบบนี้แต่มันได้รับการปรับปรุงตั้งแต่) ในส่วนที่เกี่ยวกับการย้ายแอพ 8.1 ไปยัง uwp

ในโครงการที่ใช้ร่วมกันของคุณคุณอาจต้องใช้คำสั่งการคอมไพล์แบบมีเงื่อนไขเพื่อแยกความแตกต่างระหว่างโค้ดที่รันใน uwp และโทรศัพท์ 8.1 (เช่นเมื่อสร้าง windows สากล 8.1 / โทรศัพท์ 8.1 แอพ)


1

คุณสามารถไปกับแพลตฟอร์มอย่างXamarinซึ่งจะช่วยให้คุณเขียนไม่เพียง แต่สำหรับ Windows แต่ยังรวมถึง iOS และ Android ในรหัสฐานเดียวกัน


1

จากประสบการณ์ของฉัน: มันคุ้มค่าที่จะวางผู้ช่วย / ลอจิก / ฯลฯ ลงในห้องสมุด PCL จากนั้นคุณสามารถสร้างสองโครงการ (สำหรับ UWP และ WP8 ตามลำดับ) ที่สามารถใช้ PCL ได้โดยไม่มีการเปลี่ยนแปลง นอกจากนี้คุณสามารถแบ่งปันบริการดูรุ่นและรุ่น (มีบรรทัดการรวบรวมที่มีเงื่อนไข #if น้อยมาก)

สิ่งเดียวที่ไม่คุ้มค่าที่จะแบ่งปันคือพนักงานที่เกี่ยวข้องกับ UI เนื่องจากมีหลายสิ่งที่ต้องเปลี่ยน / ปรับอากาศ (ดังนั้นจึงง่ายกว่ามากในการจัดเตรียมรูปแบบแยกสำหรับแต่ละ UWP และ WP8 แม้ว่าพวกเขาจะเหมือนกันจริง)

PS ฉันทำเช่นนั้นสำหรับ UWP และ WP8.1 Silverlight

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.