Xamarin ile oluşturulan tvOS uygulamalarının sorunlarını giderme
Bu makalede, Xamarin 'in tvOS desteğiyle çalışırken karşılaşabileceğiniz sorunlar ele alınmaktadır.
Bilinen Sorunlar
Xamarin 'in tvOS desteğinin geçerli sürümü aşağıdaki bilinen sorunlara sahiptir:
- Mono Framework – mono 4,3 Cryptography. ProtectedData, mono 4,2 ' deki verilerin şifresini çözemez. sonuç olarak,
Data unprotection failedkorunan bir NuGet kaynağı yapılandırıldığında NuGet paketleri hatayla geri yükleme başarısız olur.- geçici çözüm : Mac için Visual Studio paketleri geri yüklemeyi yeniden denemeden önce, parola kimlik doğrulaması kullanan NuGet paket kaynaklarını geri yüklemeniz gerekir.
- Mac için Visual Studio w/f # Add-in – Windows üzerinde bir F # Android şablonu oluşturulurken hata oluştu. Bu, Mac 'te yine de düzgün çalışır.
- Xamarin. Mac : hedef Framework olarak ayarlanan Xamarin. Mac birleştirilmiş şablon projesini çalıştırırken , açılan pencere
Could not connect to the debuggergörünebilir.- Olası geçici çözüm : kararlı kanalımızda bulunan mono Framework sürümünü düşürme.
- xamarin Visual Studio xamarin. iOS – Visual Studio 'da WatchKit uygulamaları dağıttığınızda hata
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not existgörünebilir.
Lütfen GitHubbulduğunuz hataları bildirin.
Sorun giderme
Aşağıdaki bölümlerde, Xamarin. tvOS ile tvOS 9 kullanılırken oluşabilecek bazı bilinen sorunlar ve bu sorunlara yönelik çözüm listelenmektedir:
Geçersiz yürütülebilir-yürütülebilir, bitcode 'u içermiyor
Apple TV App Store 'a bir Xamarin. tvOS uygulaması göndermeye çalışırken, "geçersiz yürütülebilir-yürütülebilir dosya bitcode içermiyor"biçiminde bir hata iletisi alabilirsiniz.
Bu sorunu gidermek için aşağıdakileri yapın:
Mac için Visual Studio, Çözüm Gezgini Xamarin. tvos Project dosyanıza sağ tıklayın ve seçenekler' i seçin.
TvOS Build ' i seçin ve Sürüm yapılandırması üzerinde olduğunuzdan emin olun:
--bitcode=asmonly--bitcode=asmonlyalanına ekleyin ve Tamam düğmesine tıklayın.Yayın yapılandırmasında uygulamanızı yeniden derleyin.
TvOS uygulamanızın Bitcode Içerdiği doğrulanıyor
Xamarin. tvOS uygulama derlemeniz Bitcode içerdiğini doğrulamak için, Terminal uygulamasını açın ve aşağıdakileri girin:
otool -l /path/to/your/tv.app/tv
Çıktıda, aşağıdakileri arayın:
Section
sectname __bundle
segname __LLVM
addr 0x0000000100001000
size 0x000000000000124f
offset 4096
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
addr ve size farklı olacak ancak diğer alanlar aynı olmalıdır.
Kullandığınız herhangi bir üçüncü taraf statik ( .a ) kitaplıklarının, tvOS kitaplıklarına (iOS kitaplıklarına değil) göre oluşturulduğundan ve ayrıca bitcode 'u bilgilerini içerdiğinden emin olmanız gerekir.
Geçerli bitcode 'u içeren uygulamalar veya kitaplıklar için birden size büyük olur. Bir kitaplığın bitcode 'u işaretleyicisi olabilir, ancak geçerli bitcode 'u içermeyen bazı durumlar vardır. Örnek:
Geçersiz Bitcode
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Geçerli Bitcode
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
sizeListelenen örnekteki iki kitaplık arasındaki farkın yukarıda çalıştığını aklınızda edin. Kitaplık, ENABLE_BITCODE Bu boyut sorununa çözüm olarak bitcode 'u Enabled (Xcode ayarı) ile birlikte bir Xcode arşiv derlemesi tarafından oluşturulmalıdır.
Yalnızca arm64 dilimini içeren uygulamaların, Info. plist dosyasındaki UIRequiredDeviceCapabilities listesinde de "arm64" olması gerekir
Yayımlama için Apple TV App Store 'a bir uygulama gönderirken şu biçimde bir hata alabilirsiniz:
"Arm64 dilimini içeren uygulamaların, Info. plist dosyasındaki UIRequiredDeviceCapabilities listesinde de" arm64 "olması gerekir.
Bu durumda, Info.plist dosyanızı düzenleyin ve aşağıdaki anahtarlara sahip olduğundan emin olun:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
uygulamanızı yayın için yeniden derleyin ve iTunes Bağlan 'a yeniden gönderin.
Görev "MTouch" yürütme--başarısız
Bir 3. taraf kitaplığı (MonoGame gibi) kullanıyorsanız ve yayın derlemeniz, uzun bir hata mesajıyla birlikte başarısız olduysa Task "MTouch" execution -- FAILED , -gcc_flags="-framework OpenAL"Task "MTouch" execution -- FAILEDeklemeyi deneyin:
--bitcode=asmonly--bitcode=asmonlyde dahil etmelisiniz, bağlayıcı seçeneklerinizin Tümünü bağla ve temiz bir derleme yapmak için ayarlanmış olması gerekir.
IMS-90471 hatası. Büyük simge eksik
"IMS-90471 hatası" biçiminde bir ileti alırsanız. Yayın için Apple TV App Store 'a bir Xamarin. tvOS uygulaması göndermeye çalışırken büyük simge eksik ", lütfen aşağıdakileri denetleyin:
Assets.carAssets.carbelgelerini kullanarak oluşturduğunuz büyük simge varlıklarını dosyanıza eklemiş olduğunuzdan emin olun.Assets.carDosyayı, son uygulama paketinizdekiAssets.carbelgelerinden dahil olduğunuzdan emin olun.
Geçersiz paket: oyun denetleyicilerini destekleyen bir uygulama da Apple TV Remote 'ı desteklemelidir
veya
Geçersiz paket – GameController çerçevesi olan Apple TV Apps uygulamasının, uygulamanın Info. plist dosyasında GCSupportedGameControllers anahtarını içermesi gerekir
Oyun denetleyicileri oyun oynamak ve bir oyunda Immersion hakkında fikir sağlamak için kullanılabilir. Ayrıca, kullanıcının uzak ve denetleyicisi arasında geçiş yapabilmesi için standart Apple TV arabirimini denetlemek için de kullanılabilir.
Apple TV App Store 'a oyun denetleyicisi desteğiyle bir Xamarin. tvOS uygulaması gönderiyorsanız ve şu biçimde bir hata iletisi alıyorsanız:
"Uygulama adı" için en son teslimatta bir veya daha fazla sorun keşfettik. Teslimizin başarılı oldu, ancak sonraki teslimatta aşağıdaki sorunları düzeltmek isteyebilirsiniz:
Geçersiz paket: oyun denetleyicilerini destekleyen bir uygulama da Apple TV Remote ' i desteklemelidir.
veya
Geçersiz paket – GameController çerçevesi ile Apple TV Apps, uygulamanın Info. plist dosyasında GCSupportedGameControllers anahtarını içermelidir.
Çözüm, uygulamanızın dosyasına Siri Remote () desteği eklemektir GCMicroGamepadInfo.plist . Siri uzak 'ı hedeflemek için mikro oyun denetleyicisi profili Apple tarafından eklendi. Örneğin, aşağıdaki anahtarları dahil edin:
<key>GCSupportedGameControllers</key>
<array>
<dict>
<key>ProfileName</key>
<string>ExtendedGamepad</string>
</dict>
<dict>
<key>ProfileName</key>
<string>MicroGamepad</string>
</dict>
</array>
<key>GCSupportsControllerUserInteraction</key>
<true/>
Önemli
Bluetooth oyun denetleyicileri son kullanıcıların yapabilmesine yönelik isteğe bağlı bir satın alma, uygulamanız kullanıcıyı bir tane satın almaya zorlayamaz. Uygulamanız oyun denetleyicilerini destekliyorsa, oyunun tüm Apple TV kullanıcıları tarafından kullanılabilmesi için Siri Remote öğesini de desteklemesi gerekir.
daha fazla bilgi için, Siri Remote ve Bluetooth Controllers belgelerimizin oyun denetleyicileri ile çalışmamız bölümüne bakın.
Uyumsuz hedef çerçeve:. NetPortable, sürüm = v 4.5, profil = Profile78
Bir Xamarin. tvOS projesine taşınabilir bir sınıf kitaplığı (PCL) dahil edilmeye çalışılırken şu şekilde bir ileti alabilirsiniz:
Uyumsuz hedef çerçeve:. NetPortable, sürüm = v 4.5, profil = Profile78
Bu sorunu gidermek için, aşağıdaki içeriğe sahip adlı bir XML dosyası ekleyin Xamarin.TVOS.xml :
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Şu yola:
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Yoldaki profil numarasının, PCL 'nin profil numarasıyla eşleşmesi gerektiğini unutmayın.
Bu dosya söz konusu olduğunda, PCL dosyasını Xamarin. tvOS projesine başarıyla ekleyebilmelisiniz.

