Aplikasi adaptif versi: Gunakan API baru sambil mempertahankan kompatibilitas dengan versi sebelumnya

Setiap rilis Windows 10 SDK menambahkan fungsionalitas baru menarik yang ingin Anda manfaatkan. Namun, tidak semua pelanggan Anda akan memperbarui perangkat mereka ke versi terbaru Windows 10 secara bersamaan, dan Anda ingin memastikan aplikasi Anda berfungsi pada berbagai perangkat seluas mungkin. Di sini, kami menunjukkan kepada Anda cara mendesain aplikasi Anda sehingga berjalan pada versi Windows 10 yang lebih lama, tetapi juga memanfaatkan fitur baru setiap kali aplikasi Anda berjalan pada perangkat dengan pembaruan terbaru yang diinstal.

Ada 3 langkah yang harus dilakukan untuk memastikan aplikasi Anda mendukung berbagai perangkat Windows 10 terluas.

  • Pertama, konfigurasikan proyek Visual Studio Anda untuk menargetkan API terbaru. Ini memengaruhi apa yang terjadi saat Anda mengkompilasi aplikasi Anda.
  • Kedua, lakukan pemeriksaan runtime untuk memastikan bahwa Anda hanya memanggil API yang ada di perangkat tempat aplikasi Anda berjalan.
  • Ketiga, uji aplikasi Anda pada Versi Minimum dan Versi Target Windows 10.

Mengonfigurasi proyek Visual Studio Anda

Langkah pertama dalam mendukung beberapa versi Windows 10 adalah menentukan versi OS/SDK yang didukung Target dan Minimum di proyek Visual Studio Anda.

  • Target: Versi SDK yang dikompilasi Visual Studio untuk mengkompilasi kode aplikasi Anda dan menjalankan semua alat. Semua API dan sumber daya dalam versi SDK ini tersedia di kode aplikasi Anda pada waktu kompilasi.
  • Minimum: Versi SDK yang mendukung versi OS paling awal yang dapat dijalankan aplikasi Anda (dan akan disebarkan ke oleh toko) dan versi yang dikompilasi Visual Studio kode markup aplikasi Anda.

Selama runtime aplikasi Anda akan berjalan terhadap versi OS tempat aplikasi disebarkan, sehingga aplikasi Anda akan melemparkan pengecualian jika Anda menggunakan sumber daya atau memanggil API yang tidak tersedia dalam versi tersebut. Kami menunjukkan kepada Anda cara menggunakan pemeriksaan runtime untuk memanggil API yang benar nanti di artikel ini.

Pengaturan Target dan Minimum menentukan akhir rentang versi OS/SDK. Namun, jika Menguji aplikasi pada versi minimum, Anda dapat yakin aplikasi tersebut akan berjalan pada versi apa pun antara Minimum dan Target.

Tip

Visual Studio tidak memperingatkan Anda tentang kompatibilitas API. Anda bertanggung jawab untuk menguji dan memastikan bahwa aplikasi Anda berfungsi seperti yang diharapkan pada semua versi OS antara dan termasuk Minimum dan Target.

Saat membuat proyek baru di Visual Studio 2015, Pembaruan 2 atau yang lebih baru, Anda diminta untuk mengatur versi Target dan Minimum yang didukung aplikasi Anda. Secara default, Versi Target adalah versi SDK terpasang tertinggi, dan Versi Minimum adalah versi SDK terendah yang diinstal. Anda dapat memilih Target dan Minimum hanya dari versi SDK yang diinstal pada komputer Anda.

Set the target SDK in Visual Studio

Kami biasanya menyarankan Agar Anda meninggalkan default. Namun, jika Anda memiliki versi Pratinjau SDK yang diinstal dan Anda menulis kode produksi, Anda harus mengubah Versi Target dari SDK Pratinjau ke versi SDK resmi terbaru.

Untuk mengubah versi Minimum dan Target untuk proyek yang telah dibuat di Visual Studio, buka tab Proyek - Properti ->> Aplikasi -> Penargetan.

Change the target SDK in Visual Studio

Sebagai referensi, tabel berikut menunjukkan nomor build untuk setiap SDK.

Nama yang mudah diingat Versi Build OS/SDK
RTM 1507 10240
Pembaruan November 1511 10586
Pembaruan Hari Jadi 1607 14393
Pembaruan Pembuat 1703 15063
Pembaruan Fall Creators 1709 16299
Pembaruan April 2018 1803 17134
Pembaruan Oktober 2018 1809 17763
Pembaruan Mei 2019 1903 18362

Anda dapat mengunduh versi SDK yang dirilis dari Windows SDK dan arsip emulator. Anda dapat mengunduh Windows Insider Preview SDK terbaru dari bagian pengembang situs Windows Insider .

Untuk informasi selengkapnya tentang pembaruan Windows 10, lihat informasi rilis Windows 10. Untuk informasi penting tentang siklus hidup dukungan Windows 10, lihat lembar fakta siklus hidup Windows.

Melakukan pemeriksaan API

Kunci untuk aplikasi adaptif versi adalah kombinasi kontrak API dan kelas ApiInformation . Kelas ini memungkinkan Anda mendeteksi apakah ada kontrak, jenis, atau anggota API tertentu sehingga Anda dapat melakukan panggilan API dengan aman di berbagai perangkat dan versi OS.

Kontrak API

Kumpulan API dalam keluarga perangkat dipecah menjadi subdivisi yang dikenal sebagai kontrak API. Anda dapat menggunakan metode ApiInformation.IsApiContractPresent untuk menguji keberadaan kontrak API. Ini berguna jika Anda ingin menguji keberadaan banyak API yang semuanya ada dalam versi kontrak API yang sama.

    bool isScannerDeviceContract_1_Present =
        Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent
            ("Windows.Devices.Scanners.ScannerDeviceContract", 1);

Apa itu kontrak API? Pada dasarnya, kontrak API mewakili fitur - sekumpulan API terkait yang bersama-sama memberikan beberapa fungsionalitas tertentu. Kontrak API hipotetis dapat mewakili sekumpulan API yang berisi dua kelas, lima antarmuka, satu struktur, dua enum, dan sebagainya.

Jenis terkait logis dikelompokkan ke dalam kontrak API, dan dimulai dengan Windows 10, setiap WINDOWS Runtime API adalah anggota dari beberapa kontrak API. Dengan Kontrak API, Anda memeriksa ketersediaan fitur atau API tertentu pada perangkat, secara efektif memeriksa kemampuan perangkat daripada memeriksa perangkat atau OS tertentu. Platform yang mengimplementasikan API apa pun dalam kontrak API diperlukan untuk mengimplementasikan setiap API dalam kontrak API tersebut. Ini berarti Anda dapat menguji apakah OS yang sedang berjalan mendukung kontrak API tertentu dan, jika demikian, panggil salah satu API dalam kontrak API tersebut tanpa memeriksa masing-masing satu per satu.

Kontrak API terbesar dan paling umum digunakan adalah Windows.Foundation.UniversalApiContract. Ini berisi sebagian besar API dalam Platform Windows Universal. Dokumentasi SDK ekstensi keluarga perangkat dan kontrak API menjelaskan berbagai kontrak API yang tersedia. Anda akan melihat bahwa sebagian besar dari mereka mewakili sekumpulan API terkait fungsional.

Catatan

Jika Anda memiliki pratinjau Windows Software Development Kit (SDK) yang terinstal yang belum didokumenkan, Anda juga dapat menemukan informasi tentang dukungan kontrak API dalam file 'Platform.xml' yang terletak di folder penginstalan SDK di '(Program Files (x86))\Windows Kits\10\Platforms<platform><SDK version>\Platform.xml'.

Kode adaptif versi dan XAML bersyarkat

Di semua versi Windows 10, Anda dapat menggunakan kelas ApiInformation dalam kondisi dalam kode Anda untuk menguji keberadaan API yang ingin Anda panggil. Dalam kode adaptif, Anda dapat menggunakan berbagai metode kelas, seperti IsTypePresent, IsEventPresent, IsMethodPresent, dan IsPropertyPresent, untuk menguji API pada granularitas yang Anda butuhkan.

Untuk informasi dan contoh selengkapnya, lihat Kode adaptif versi.

Jika aplikasi Anda Versi Minimum adalah build 15063 (Pembaruan Kreator) atau yang lebih baru, Anda dapat menggunakan XAML kondisional untuk mengatur properti dan membuat instans objek dalam markup tanpa perlu menggunakan kode di belakang. XAML Bersyarat menyediakan cara untuk menggunakan metode ApiInformation.IsApiContractPresent dalam markup.

Untuk informasi dan contoh selengkapnya, lihat XAML Bersyarah.

API yang dimuat keterlambatan

Fungsi QueryOptionalDelayLoadedAPI memungkinkan aplikasi Store (yang tidak diizinkan oleh kebijakan untuk memanggil LoadLibrary) untuk mendeteksi apakah fungsi yang dimuat keterlambatan mereka benar-benar ditemukan.

#include <windows.h>
#include <commdlg.h>
#include <libloaderapi2.h>
#include <stdio.h>

EXTERN_C IMAGE_DOS_HEADER __ImageBase;
#define HMODULE_THISCOMPONENT reinterpret_cast<HMODULE>(&__ImageBase)

int __cdecl main(int argc, char** argv)
{
    if (QueryOptionalDelayLoadedAPI(HMODULE_THISCOMPONENT,
          "comdlg32.dll", "GetOpenFileNameW", 0))
    {
        printf("GetOpenFileNameW can be called!\n");
    }
    return 0;
}

Menguji aplikasi adaptif versi Anda

Saat Anda menggunakan kode adaptif versi atau XAML kondisional untuk menulis aplikasi adaptif versi, Anda perlu mengujinya pada perangkat yang menjalankan Versi Minimum dan pada perangkat yang menjalankan Versi Target Windows 10.

Anda tidak dapat menguji semua jalur kode kondisional pada satu perangkat. Untuk memastikan bahwa semua jalur kode diuji, Anda perlu menyebarkan dan menguji aplikasi Anda pada perangkat jarak jauh (atau komputer virtual) yang menjalankan versi OS minimum yang didukung. Untuk informasi selengkapnya tentang penelusuran kesalahan jarak jauh, lihat Menyebarkan dan menelusuri kesalahan aplikasi UWP.