Risoluzione dei problemi relativi alle app tvOS create con Xamarin
Questo articolo illustra i problemi che possono verificarsi durante l'uso del supporto tvOS di Xamarin.
Problemi noti
La versione corrente del supporto tvOS di Xamarin presenta i problemi noti seguenti:
- Mono Framework : Mono 4.3 Cryptography.ProtectedData non riesce a decrittografare i dati da Mono 4.2. Di conseguenza, i pacchetti NuGet non riusciranno a eseguire il ripristino con l'errore
Data unprotection failed
quando è configurata un'origine NuGet protetta.- Soluzione alternativa: in Visual Studio per Mac sarà necessario aggiungere nuovamente le origini dei pacchetti NuGet che usano l'autenticazione della password prima di tentare di ripristinare i pacchetti.
- Visual Studio per Mac componente aggiuntivo w/ F# - Errore durante la creazione di un modello Android F# in Windows. Questo dovrebbe funzionare correttamente su Mac.
- Xamarin.Mac : quando si esegue il progetto modello unificato Xamarin.Mac con il framework di destinazione impostato su
Unsupported
, è possibile che venga visualizzato il popupCould not connect to the debugger
.- Potenziale soluzione alternativa : effettuare il downgrade della versione del framework Mono disponibile nel canale Stable.
- Xamarin Visual Studio & Xamarin.iOS : quando si distribuiscono applicazioni WatchKit in Visual Studio, è possibile che venga visualizzato l'errore
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
.
Segnalare eventuali bug disponibili in GitHub.
Risoluzione dei problemi
Le sezioni seguenti elencano alcuni problemi noti che possono verificarsi quando si usa tvOS 9 con Xamarin.tvOS e la soluzione a tali problemi:
Eseguibile non valido: l'eseguibile non contiene bitcode
Quando si tenta di inviare un'app Xamarin.tvOS all'App Store di Apple TV, è possibile che venga visualizzato un messaggio di errore nel formato "Eseguibile non valido - L'eseguibile non contiene bitcode".
Per risolvere questo problema, eseguire le operazioni seguenti:
In Visual Studio per Mac fare clic con il pulsante destro del mouse sul file di progetto Xamarin.tvOS nel Esplora soluzioni e scegliere Opzioni.
Selezionare tvOS Build (Compilazione tvOS) e assicurarsi di essere nella configurazione Release (Versione):
Aggiungere
--bitcode=asmonly
al campo Argomenti aggiuntivi mtouch e fare clic sul pulsante OK .Ricompilare l'app nella configurazione versione.
Verifica che l'app tvOS contenga bitcode
Per verificare che la compilazione dell'app Xamarin.tvOS contenga Bitcode, aprire l'app Terminale e immettere quanto segue:
otool -l /path/to/your/tv.app/tv
Nell'output cercare quanto segue:
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
e size
sarà diverso, ma gli altri campi devono essere identici.
È necessario assicurarsi che tutte le librerie statiche () di terze parti in.a
uso siano state create con librerie tvOS (non librerie iOS) e che includano anche informazioni sul bitcode.
Per le app o le librerie che includono codice bit valido, il size
valore sarà maggiore di uno. Esistono alcune situazioni in cui una libreria può avere il marcatore bitcode, ma non contiene codice bit valido. Ad esempio:
Codice di bit non valido
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Codice bit valido
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Si noti la differenza tra size
le due librerie nell'esempio elencato in precedenza. La libreria deve essere generata da una compilazione di archivio Xcode con bitcode abilitato (impostazione ENABLE_BITCODE
Xcode ) come soluzione a questo problema di dimensioni.
Anche le app che contengono la sezione arm64 devono avere "arm64" nell'elenco di UIRequiredDeviceCapabilities in Info.plist
Quando si invia un'app all'App Store apple TV per la pubblicazione, è possibile che venga visualizzato un errore nel formato:
"Le app che contengono solo la sezione arm64 devono avere anche "arm64" nell'elenco di UIRequiredDeviceCapabilities in Info.plist
In questo caso, modificare il Info.plist
file e assicurarsi che disponga delle chiavi seguenti:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Ricompilare l'app per il rilascio e inviare nuovamente a iTunes Connessione.
Esecuzione dell'attività "MTouch" -- FAILED
Se si usa una libreria di terze parti (ad esempio MonoGame) e la compilazione della versione non è riuscita con una lunga serie di messaggi di errore che terminano in Task "MTouch" execution -- FAILED
, provare ad aggiungere -gcc_flags="-framework OpenAL"
agli argomenti tocco aggiuntivi:
È anche necessario includere --bitcode=asmonly
negli argomenti Tocco aggiuntivi, impostare le opzioni del linker su Collega tutto ed eseguire una compilazione pulita.
Errore ITMS-90471. Icona Grande mancante
Se viene visualizzato un messaggio nel formato "ERRORE ITMS-90471. L'icona Grande è mancante" durante il tentativo di inviare un'app Xamarin.tvOS all'App Store apple TV per il rilascio, controllare quanto segue:
- Assicurarsi di aver incluso gli asset icona di grandi dimensioni nel
Assets.car
file creato usando la documentazione Icone dell'app. - Assicurarsi di includere il
Assets.car
file nella documentazione Uso di icone e immagini nel bundle dell'applicazione finale.
Bundle non valido: un'app che supporta i controller di gioco deve supportare anche il telecomando Apple TV
or
Bundle non valido: le app Apple TV con il framework GameController devono includere la chiave GCSupportedGameControllers nell'Info.plist dell'app
I controller di gioco possono essere usati per migliorare il gioco e fornire un senso di immersione in un gioco. Possono anche essere usati per controllare l'interfaccia standard di Apple TV, in modo che l'utente non deve passare dal telecomando al controller.
Se si invia un'app Xamarin.tvOS con il supporto di Game Controller all'App Store apple TV e viene visualizzato un messaggio di errore sotto forma di:
È stato rilevato uno o più problemi con il recapito recente per "nome app". Il recapito ha avuto esito positivo, ma potrebbe essere opportuno risolvere i problemi seguenti nel recapito successivo:
Bundle non valido: un'app che supporta i controller di gioco deve supportare anche il telecomando apple TV.
or
Bundle non valido: le app Apple TV con il framework GameController devono includere la chiave GCSupportedGameControllers nell'Info.plist dell'app.
La soluzione consiste nell'aggiungere il supporto per Siri Remote (GCMicroGamepad
) al file dell'app Info.plist
. Il profilo Micro Game Controller è stato aggiunto da Apple per fare riferimento a Siri Remote. Ad esempio, includere le chiavi seguenti:
<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/>
Importante
I controller di gioco Bluetooth sono un acquisto facoltativo che gli utenti finali potrebbero effettuare, l'app non può forzare l'utente ad acquistarne uno. Se l'app supporta game controller, deve anche supportare Siri Remote in modo che il gioco sia utilizzabile da tutti gli utenti di Apple TV.
Per altre informazioni, vedere la sezione Uso dei controller di gioco della documentazione relativa ai controller Remoti e Bluetooth di Siri.
Framework di destinazione non compatibile: . NetPortable, Version=v4.5, Profile=Profile78
Quando si tenta di includere una libreria di classi portabile (PCL) in un progetto Xamarin.tvOS, è possibile che venga visualizzato un messaggio nel formato seguente:
Framework di destinazione non compatibile: . NetPortable, Version=v4.5, Profile=Profile78
Per risolvere questo problema, aggiungere un file XML denominato Xamarin.TVOS.xml
con il contenuto seguente:
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Nel percorso seguente:
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Si noti che il numero di profilo nel percorso deve corrispondere al numero di profilo della libreria di classi portabile.
Con questo file sul posto, dovrebbe essere possibile aggiungere correttamente il file PCL al progetto Xamarin.tvOS.