Uygulama çalışma zamanı sürümü, sysroots ve Beta API'leri

Azure Sphere SDK sürümü hem üretim API'leri hem de Beta API'leri içerebilir. Üretim API'leri uzun vadeli kararlı (LTS) olarak kabul edilirken Beta API'ler hala geliştirme aşamasındadır ve sonraki bir sürümde değişebilir veya kaldırılabilir. Çoğu durumda, yeni API'ler ilk sürümlerinde Beta olarak işaretlenir ve sonraki bir sürümde üretime taşınır. Beta API'ler yeni özelliklere erken erişim sağlayarak prototip oluşturma ve geri bildirim sağlama. Beta API'leri kullanan uygulamalar genellikle gelecekteki Azure işletim sistemi ve SDK sürümlerinden sonra düzgün çalışmaya devam etmek için değişiklik yapılmasını gerektirir.

Beta özellikleri, belgelerde BETA özelliği olarak etiketlenmiştir. Her Azure Sphere üst düzey uygulaması, yalnızca üretim API'lerini mi yoksa hem üretim hem de Beta API'lerini mi hedeflediğini belirtir.

Hedef API kümeleri, ARV ve sysroots

Hedef API kümesi, uygulamanın hangi API'leri kullandığını gösterir: yalnızca üretim API'leri veya üretim ve Beta API'leri. Hedef API kümesi değeri, uygulama çalışma zamanı sürümünü (ARV) temsil eden bir tamsayı veya ARV ile Beta API sürümünü tanımlayan bir dizedir. Sayısal değer yalnızca ARV'deki üretim API'lerini belirtirken, "value+BetaNumber" belirli bir sürümdeki üretim ve Beta API'lerini belirtir. Örneğin, ARV 8 21.01 sürümünü, "8+Beta2101" ise 20.01 sürümündeki üretim ve Beta API'lerini belirtir. Gelecek sürümlerde ek ARV'ler eklenecektir.

Azure Sphere SDK'sı sysroots kullanarak birden çok API kümesi uygular. Sysroot, belirli bir API kümesini hedefleyen bir uygulamayı derlemek ve bağlamak için kullanılan kitaplıkları, üst bilgi dosyalarını ve araçları belirtir. Sysroots, sysroots alt klasöründeki Microsoft Azure Sphere SDK dizinine yüklenir.

Üst düzey bir uygulama için hedef API kümesini ayarlama veya güncelleştirme

Uygulamanızı bir Azure Sphere örneğine dayandırıyorsanız varsayılan olarak ayarlanan hedef API, örneğin kullandığı API kümesidir. Örnek yalnızca üretim API'lerini kullanıyorsa hedef API kümesi geçerli ARV değerine ayarlanır. Örnek geçerli sürüm için hem üretim hem de Beta API'leri kullanıyorsa, Beta API'lerini dahil etmek için hedef API kümesi "value+BetaNumber" olacaktır.

Uygulamanızı bir örne dayandırmıyorsanız, uygulamanın derleme yönergelerinde ayarlanan hedef API'yi ayarlamanız gerekir.

Zaten bir uygulama oluşturduysanız, uygulamayı yeni bir işletim sistemi sürümü için yeniden derlerseniz hedef API kümesini değiştirmeniz gerekebilir. Uygulama Beta API'leri kullanıyorsa, hedef API kümesi seçenekleri değiştiğinde bunu güncelleştirmeniz gerekir ve bu genellikle her özellik sürümünde gerçekleşir. Beta API'ler doğrudan Beta durumundan üretime taşınabilir ve bu da yeni bir ARV ile sonuçlanabilir veya değiştirilebilir ve Beta'da kalabilir. Daha yeni bir hedef API kümesini hedeflemek için Beta API'leri kullanan bir uygulamayı güncelleştirirseniz, kaldırılan veya kullanımdan kaldırılan API'lerle ilgili hatalarla veya uyarılarla karşılaşabilirsiniz.

Hedef API kümesini her değiştirdiğinizde, uygulamayı derlemeden önce CMakeCache.txt dosyasını silmeniz gerekir. Bu dosya projenizin out\ARM-Debug veya out\ARM-Release dizininde depolanır.

Hedef API kümesini belirtme

hedef API'yi CMakePresets.json ayarlayın:

  • Hedef API kümesini yapılandırmak için "AZURE_SPHERE_TARGET_API_SET" kullanın. Örneğin:

    "AZURE_SPHERE_TARGET_API_SET": "5" Veya "AZURE_SPHERE_TARGET_API_SET": "5+Beta2004"

Uygulamanız en son API kümesini hedeflediyse, henüz ayarlanmadıysa bu değişkeni "latest-lts" olarak ayarlayabilirsiniz. Uygulamanız en son Beta API kümesini hedeflediyse, henüz yapmadıysanız bu değişkeni "en son-beta" olarak ayarlayabilirsiniz. Ancak uygulamanız eski bir API kümesini hedeflediyse, bu değişkeni kullandığı belirli değerle eşleşecek şekilde ayarlamanız gerekir.

  • Visual Studio projesinde dış AZURE_SPHERE_TARGET_API_SET değişkenini belirtmek için, CMakeSettings.json dosyasında hem ARM-Debug hem de ARM-Release yapılandırmaları içinde aşağıdakileri ayarlayın:

    "variables": [
      {
        "name": "AZURE_SPHERE_TARGET_API_SET",
        "value": "latest-beta"
      }
    ]
    
  • bir Visual Studio Code projesinde dış AZURE_SPHERE_TARGET_API_SET değişkenini belirtmek için .vscode/settings.json dosyasında aşağıdakileri ayarlayın:

        "cmake.configureSettings": {
          "AZURE_SPHERE_TARGET_API_SET": "latest-lts"
      },
    
  • Komut satırında dış AZURE_SPHERE_TARGET_API_SET değişkenini belirtmek için, CMake'yi çağırırken parametresini ekleyin:

    -DAZURE_SPHERE_TARGET_API_SET="latest-lts"

    Daha önce açıklandığı gibi "latest-lts" yerine "latest-beta" veya "4" veya "5+Beta2004" gibi belirli bir eski değeri yazın.

Hedef API kümeleri ve işletim sistemi uyumluluğu

Bir uygulamanın Azure Sphere işletim sistemiyle uyumluluğu, uygulamanın oluşturulduğu hedef API kümesine ve işletim sistemi sürümünün desteklediği en son ARV'ye bağlıdır. Alt düzey bir uygulama veya işletim sistemi eski bir ARV kullanır (daha düşük bir sayıya sahiptir) ve üst düzey bir uygulama veya işletim sistemi daha yeni bir ARV kullanır (daha yüksek bir sayıya sahiptir). Aşağıdaki bölümlerde her olası senaryoda neler bekleyebileceğiniz açıklanmaktadır.

Üst düzey işletim sistemine sahip alt düzey uygulamalar

Yalnızca üretim API'lerini kullanan mevcut alt düzey görüntüler, Azure Sphere işletim sisteminin üst düzey sürümlerinde desteklenir. Örneğin, hedef API Kümesi 1 ile oluşturulmuş bir uygulama, ARV 2'yi destekleyen bir Azure Sphere işletim sisteminde başarıyla çalışır. Bu nedenle, mevcut dağıtılan uygulamalarınız bulut işletim sistemi güncelleştirmelerinden sonra düzgün çalışmaya devam eder. Yalnızca üretime yönelik alt düzey görüntüleri dışarıdan yükleyebilir veya buluta dağıtarak hata olmadan üst düzey bir işletim sistemine dağıtabilirsiniz.

Beta API'leri kullanan alt düzey görüntüler desteklenmez ve Azure Sphere işletim sisteminin üst düzey sürümlerinde tasarım gereği çalışmayabilir. Örneğin, hedef API Kümesi 1+Beta1902 ile oluşturulmuş bir uygulama, ARV 2'ye sahip bir Azure Sphere işletim sisteminde çalışmayabilir. Az sphere device sideload deploy komutunda bayrağını kullanmadığınız --force sürece bu tür bir görüntüyü dışarıdan yüklemeyi denerseniz hata döndürür. Benzer şekilde , az sphere image add komutu da bu tür bir görüntüyü karşıya yüklemek için bayrağı gerektirir --force . Geçerli denetimler daha sonra Beta API'lerini kullanan önceden yüklenmiş alt düzey bir görüntünün, artık bu Beta API'lerini desteklemeyen bir üst düzey işletim sistemiyle birlikte dağıtılmasını engellemez.

Alt düzey işletim sistemi ile üst düzey uygulamalar

Üst düzey uygulamalar, Beta API'leri kullanıp kullanmadıklarına bakılmaksızın Azure Sphere işletim sisteminin alt düzey sürümlerine dağıtılamaz. Böyle bir görüntüyü dışarıdan yükleme denemeleri bir hatayla başarısız olur. Üst düzey SDK ve işletim sistemi aynı anda yayınlandığından, havadan dağıtım denemeleri şu anda mümkün değildir.