Xamarin ile oluşturulan tvOS uygulamalarında sorun giderme
Bu makale, Xamarin'in tvOS desteğiyle çalışırken karşılaşabileceğiniz bilinen sorunları kapsar.
Bilinen Sorunlar
Xamarin'in tvOS desteğinin geçerli sürümünde aşağıdaki bilinen sorunlar vardır:
- Mono Framework – Mono 4.3 Cryptography.ProtectedData, Mono 4.2'den gelen verilerin şifresini çözemiyor. Sonuç olarak, korumalı bir NuGet kaynağı yapılandırıldığında NuGet paketleri hatayla
Data unprotection failed
geri yüklenemeyecektir.- Geçici çözüm – Mac için Visual Studio paketleri geri yüklemeyi yeniden denemeden önce parola kimlik doğrulaması kullanan tüm NuGet paket kaynaklarını geri eklemeniz gerekir.
- Mac için Visual Studio w/ F# Eklentisi – Windows'ta F# Android şablonu oluşturulurken hata oluştu. Bu, Mac'te düzgün çalışmaya devam etmelidir.
- Xamarin.Mac – Hedef Çerçeve olarak ayarlanmış Xamarin.Mac birleşik şablon projesini
Unsupported
çalıştırırken açılırCould not connect to the debugger
pencere görüntülenebilir.- Olası Geçici Çözüm – Kararlı kanalımızda bulunan Mono framework sürümünü düşürun.
- Xamarin Visual Studio & Xamarin.iOS – Visual Studio'da WatchKit uygulamaları dağıtılırken hata
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
görüntülenebilir.
Lütfen GitHub'da bulduğunuz hataları bildirin.
Sorun giderme
Aşağıdaki bölümlerde, xamarin.tvOS ile tvOS 9 kullanırken oluşabilecek bazı bilinen sorunlar ve bu sorunların çözümü listeleniyor:
Geçersiz Yürütülebilir Dosya - Yürütülebilir dosya bit kodu içermiyor
Bir Xamarin.tvOS uygulamasını Apple TV App Store'a göndermeye çalışırken, "Geçersiz Yürütülebilir Dosya - Yürütülebilir dosya bit kodu içermiyor" biçiminde bir hata iletisi alabilirsiniz.
Bu sorunu çözmek için aşağıdakileri yapın:
Mac için Visual Studio Çözüm Gezgini Xamarin.tvOS Proje Dosyanıza sağ tıklayın ve Seçenekler'i seçin.
tvOS Derlemesi'ni seçin ve Yayın yapılandırmasında olduğunuzdan emin olun:
Ek mtouch bağımsız değişkenleri alanına ekleyin
--bitcode=asmonly
ve Tamam düğmesine tıklayın.Yayın yapılandırmasında uygulamanızı yeniden oluşturun.
tvOS uygulamanızın Bitcode içerdiğini doğrulama
Xamarin.tvOS Uygulama derlemenizin 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ı olacaktır, ancak diğer alanlar aynı olmalıdır.
Kullandığınız tüm üçüncü taraf statik () kitaplıklarının tvOS kitaplıklarına (.a
iOS kitaplıklarına değil) göre oluşturulduğuna ve bit kodu bilgilerini de içerdiğine emin olmanız gerekir.
Geçerli bit kodu size
içeren uygulamalar veya kitaplıklar için , birden büyük olacaktır. Bir kitaplığın bit kodu işaretçisine sahip olabileceği, ancak geçerli bit kodu içermediği bazı durumlar vardır. Örneğin:
Geçersiz Bit Kodu
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Geçerli Bit Kodu
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Yukarıda listelenen örnekte çalıştırılan iki kitaplık arasındaki farka size
dikkat edin. Kitaplık, bu boyut sorununa çözüm olarak bitcode özellikli bir Xcode arşiv derlemesinden (Xcode ayarı ENABLE_BITCODE
) oluşturulmalıdır.
Yalnızca arm64 dilimini içeren uygulamaların info.plist içindeki UIRequiredDeviceCapabilities listesinde de "arm64" olması gerekir
Apple TV App Store'a yayın için bir uygulama gönderirken şu biçimde bir hata alabilirsiniz:
"Yalnızca arm64 dilimini içeren uygulamaların info.plist içindeki UIRequiredDeviceCapabilities listesinde de "arm64" olması gerekir"
Bu durumda dosyanızı Info.plist
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 derleyip iTunes Bağlan'a yeniden gönderin.
"MTouch" görevi yürütme -- BAŞARISIZ
3. taraf kitaplığı (MonoGame gibi) kullanıyorsanız ve yayın derlemeniz ile biten Task "MTouch" execution -- FAILED
uzun bir hata iletisi dizisiyle başarısız olduysa, Ek dokunma bağımsız değişkenlerinize eklemeyi -gcc_flags="-framework OpenAL"
deneyin:
Ayrıca Ek dokunma bağımsız değişkenlerine de eklemeniz--bitcode=asmonly
, bağlayıcı seçeneklerinizin Tümünü Bağla olarak ayarlanmasını ve temiz bir derleme yapmanız gerekir.
ITMS-90471 hatası. Büyük simgesi eksik
"ITMS-90471 hatası" biçiminde bir ileti alırsanız. Büyük simgesi eksik" ifadesiyle apple TV App Store'a bir Xamarin.tvOS uygulaması göndermeye çalışırken lütfen aşağıdakileri denetleyin:
- Uygulama Simgeleri belgelerini kullanarak oluşturduğunuz dosyanıza
Assets.car
Büyük Simge varlıklarını eklediğinizden emin olun. - Son uygulama paketinize Simgeler ve Görüntülerle Çalışma belgelerinden dosyayı eklediğinizden
Assets.car
emin olun.
Geçersiz paket – Oyun kumandalarını destekleyen bir uygulama, Apple TV uzaktan kumandasını da desteklemelidir
veya
Geçersiz paket – GameController çerçevesine sahip Apple TV uygulamaları, uygulamanın Info.plist dosyasında GCSupportedGameControllers anahtarını içermelidir
Oyun Kumandaları oyunu geliştirmek ve bir oyuna daldırma hissi sağlamak için kullanılabilir. Ayrıca standart Apple TV arabirimini denetlemek için de kullanılabilir, böylece kullanıcının uzak ve denetleyici arasında geçiş yapmaması gerekir.
Oyun Denetleyicisi desteğine sahip bir Xamarin.tvOS uygulamasını Apple TV App Store'a gönderiyorsanız ve şu şekilde bir hata iletisi alıyorsanız:
"Uygulama adı" için son tesliminizde bir veya daha fazla sorun tespit ettik. Tesliminiz başarılı oldu, ancak sonraki tesliminizde aşağıdaki sorunları düzeltmek isteyebilirsiniz:
Geçersiz paket – Oyun kumandalarını destekleyen bir uygulamanın Apple TV uzaktan kumandasını da desteklemesi gerekir.
veya
Geçersiz paket – GameController çerçevesine sahip Apple TV uygulamaları, uygulamanın Info.plist dosyasında GCSupportedGameControllers anahtarını içermelidir.
Çözüm, uygulamanızın Info.plist
dosyasına Siri Remote (GCMicroGamepad
) desteği eklemektir. Micro Game Controller profili Apple tarafından Siri Remote'un hedefine eklenmiştir. Örneğin, aşağıdaki anahtarları ekleyin:
<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 Kumandaları, son kullanıcıların gerçekleştirebileceği isteğe bağlı bir satın alma işlemidir; uygulamanız kullanıcıyı satın almak için zorlayamaz. Uygulamanız Oyun Kumandalarını destekliyorsa, oyunun tüm Apple TV kullanıcıları tarafından kullanılabilmesi için Siri Remote'un da destekleniyor olması gerekir.
Daha fazla bilgi için Siri Remote ve Bluetooth Controllers belgelerimizin Oyun Kumandalarıyla Çalışma bölümümüze bakın.
Uyumsuz hedef çerçeve: . NetPortable, Version=v4.5, Profile=Profile78
Bir Xamarin.tvOS projesine Taşınabilir Sınıf Kitaplığı (PCL) eklemeye çalışırken, şu şekilde bir ileti alabilirsiniz:
Uyumsuz hedef çerçeve: . NetPortable, Version=v4.5, Profile=Profile78
Bu sorunu çözmek için aşağıdaki içeriğe sahip adlı Xamarin.TVOS.xml
bir XML dosyası ekleyin:
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Aşağıdaki 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 yerinde olduğunda, PCL dosyasını Xamarin.tvOS projesine başarıyla ekleyebilmeniz gerekir.