[xamarin] Errore IDE0006 durante compilazione

Problema: quando si tenta di compilare una app per iOS compare l’avviso con codice IDE0006 e la compilazione non va a buon fine

Soluzione: chiudere Visual Studio, aprire, pulire il progetto e ricompilare di nuovo, assicurandosi che sia connesso il Mac sul quale avviene la compilazione

Cercando di compilare una app per iOS da Visual Studio si potrebbe incorrere nel seguente avviso:

IDE0006 Si è verificato un errore durante il caricamento del progetto. Alcune funzionalità del progetto, come l’analisi della soluzione completa per il progetto in errore e i progetti che dipendono da essa, sono state disabilitate.

Per risolvere il problema dovrebbe essere sufficiente (almeno per me ha sempre funzionato) chiudere Visual Studio e riaprirlo, assicurandosi che prima di avviare il progetto sia connesso al Mac che si usa per compilare. 

Una volta riaperto spostarsi su Compilazione > Pulisci …

Una volta eseguita la pulizia ricompilare l’intero progetto da Compilazione > Ricompila… 

Vedi articolo

[xamarin] Pubblicare app iOS in beta su TestFlight da Visual Studio 2017 su Windows

Obiettivo: Pubblicare la beta di una app per iOS, sviluppata con C# e Xamarin su Visual Studio 2017 per Windows

Per molti sarà una banalità, ma ho trovato che la pubblicazione di app iOS da Windows (ok, capisco che me la sto proprio cercando) è una piccola avventura, a differenza di quando si lavora su Android. Anzitutto dobbiamo assicurarci di avere tutti gli ingredienti necessari per poter procedere. Questi comprendono:

Xamarin e Visual Studio 2017 su Windows (nel mio caso specifico Windows 10)

Un Mac con installati Visual Studio 2017 ed Xcode per poter compilare al app.

Application Loader 3.0 (scaricabile da qui) per poter caricare la app online sull’Apple Store.

Un account Apple Developer e uno su iTunes Connect.

Una volta preparata la nostra app e testata sulla macchina virtuale di Xcode, possiamo cominciare a pensare alla sua pubblicazione. Come ho accennato prima tutte le guide online in merito si riferiscono principalmente a Visual Studio 2017 con Xamarin già installati sul Mac, mentre io mi ostino per volerci lavorare da Windows.

Quello che voglio fare è distribuire la app in beta verso alcuni utenti registrati per TestFLight, in modo da poter effettuare un debugging realistico rispetto all’utilizzo degli utenti.

Per poterlo fare anzitutto devo aggiungere degli utenti su iTunes Connect.

Indirizzo: https://itunesconnect.apple.com/

Per farlo mi sposto nell’apposita sezione.

Una volta dentro, da Utenti di iTunes Connect premo sul tasto più e aggiungo un nuovo utente.

A questo punto posso inserire l’indirizzo email col quale ho registrato il mio iPhone sul quale voglio fare le prove, mettendo un nome e cognome come riferimento.

Adesso mi verrà chiesto di selezionare un ruolo per il mio utente.

Scegliendo il ruolo mi verrà detto quali saranno le sue possibilità di accesso, quello che mi interessa è che sia disponibile per TestFlight.

Fatto questo possiamo salvare e spostarci a configurare la parte di Apple Developer.

Indirizzo: https://developer.apple.com/

Anzitutto aggiungiamo il dispositivo sul quale vogliamo far agire l’utente. Spostiamoci su Devices > All (indirizzo: https://developer.apple.com/account/ios/device/) e clicchiamo sul tasto più per aggiungere un dispositivo. Ci verranno chiesti un nome descrittivo e un UDID. Per trovare l’UDID suggerisco la seguente guida.

A questo punto registriamo un identificatore per la nostra app, andando su Identifiers > App IDs (indirizzo: https://developer.apple.com/account/ios/identifier/bundle/create).

Il Bundle ID è quello che abbiamo stabilito nel file Info.plist alla seguente chiave:

Dove com.miodominio.NomeApp è il formato di dominio inverso, un po’ come succede anche su Android.

Una volta aggiunta la app, con le opportune configurazioni, aggiungiamo i certificati per la distribuzione.

Andiamo su Certificates > All e premiamo sul tasto più per aggiungerne uno.

Selezioniamo App Store and Ad Hoc e seguiamo la procedura guidata. Alla fine della procedura ci sarà dato un file di certificato da installare sul Mac dove abbiamo Xcode ed il resto.

NOTA: La medesima cosa si può fare anche da Xcode, andando su Preferenze > Account > Gestisci certificati e cliccando sul tasto aggiungi.

Ora spostiamoci a creare un Provisioning Profiles di distribuzione.

Per farlo andiamo su Provisioning Profiles > Distribution (indirizzo: https://developer.apple.com/account/ios/profile/production)

Clicchiamo sul tasto più per aggiungere un profilo e selezioniamo un profilo di distribuzione Ad Hoc.

Seguiamo le istruzioni. Alla fine ci verrà dato un file con estensione *.mobileprovision che dobbiamo mettere sul nostro Mac e cliccarci due volta sopra per installarlo. Apparentemente non succederà nulla, ma il profilo sarà stato installato.

Fatte tutte queste belle cose arriva l’avventura finale. Compilare la app da Visual Studio 2017 che gira su Windows.

Per poterlo fare correttamente è necessario apportare alcune modifiche.

Anzitutto apriamo Info.plist e assicuriamoci di aver impostato correttamente i parametri di compatibilità.

Assicuriamoci di aver impostato correttamente la lingua:

Ma soprattutto di aver inserito il parametro per il beta testing:

Adesso apriamo Entitlements.plist e assicuriamoci di inserire anche qui il medesimo parametro:

Spostiamoci sulle proprietà della nostra app e configuriamola nel modo seguente:

In questo modo l’esportazione avverrà nella cartella bin\iPhone\Ad-Hoc dentro la radice del progetto, dove verrà creato un file con estensione *.ipa.

Assicuriamoci anche che sia visibile l’identità giusta della firma ed il corretto profilo di provisioning. A tale proposito, qualora non fosse possibile vederli, consiglio di aprire e chiudere Visual Studio o lanciare una compilazione sul Mac collegato in rete.

Assicuriamoci anche di aver configurato la giusta impostazione di compilazione, che nel mio caso risulta così:

Se abbiamo fatto tutto come si deve troveremo nella suddetta cartella, bin\iPhone\Ad-Hoc, il nostro file *.ipa.

Spostiamolo sul nostro Mac e apriamo Application Loader.

Clicchiamo su Delivery Your App e poi su Choose. Scegliamo il file *.ipa da caricare e attendiamo la fine del caricamento.

Se tutto è andato bene la nostra app diventerà disponibile per il test agli utenti che abbiamo selezionato precedentemente.

Errori comuni

Di seguito riporto alcuni errori comuni che sono stati generati da Application Loader o inviati via email al momento dell’invio della app in testing:

  1. Missing beta entitlement – Your app does not include the beta-reports-active entitlement. If you intend to distribute this build via TestFlight for beta testing, please re-build this app with an App Store Distribution provisioning profile. Do not use ad-hoc profiles.
    SOLUZIONE: inserire <key>beta-reports-active</key> nei file Info.plist e Entitlement.plist come descritto precedentemente
  2. the bundle contains a key that is not included in the provisioning profile beta-reports-active
    SOLUZIONE: c’è un errore nel profilo di compilazione, assicurarsi che sia di Distribuzione, come detto prima; maggiori informazioni si trovano qui
  3. Your app does not include the beta-reports-active entitlement
    SOLUZIONE: vedere punto 1, stesso problema
  4. Errore Invalid architecture: ARMv7. 32-bit architectures are not supported when deployment target is 11 or later
    SOLUZIONE: questo è un errore di Visual Studio, per risolverlo è necessario configurare correttamente la Compilazione iOS nelle impostazioni del Progetto, come illustrato in precedenza, inoltre bisogna inserire UIRequiredDeviceCapabilities in Info.plist
  5. ipa file too large
    SOLUZIONE: in questo caso non dipende assolutamente dal file, ma può dipendere dai certificati (vedi all’inizio) oppure dalla velocità della connessione da cui facciamo l’upload; assicuriamoci che il profilo di Provisioning e i certificati siano installati sulla macchina con Xcode.
Vedi articolo

Installare macOS 10.13 High con VirtualBox su Windows

Cercando un modo di installare il Mac su una macchina virtuale su Windows ho trovato questa fantastica guida online:

Steps to Install macOS 10.13 High Sierra on VirtualBox on Windows

Gli unici unici problemi che mi si sono presentati riguardavano la fase di avvio, quando la macchina virtuale partiva con schermo nero senza fare altro apparentemente.

Nel mio caso il problema è stato risolto modificando nella maniera seguente le impostazioni suggerite:

Versione: Mac OS X (64–bit) e non quelle suggerite in automatico

Chipset: PIIX3 (la dimensione della RAM invece è a piacere e non inficia il funzionamento della macchina, a parte la velocità ovviamente)

Cambiando questi due parametri la macchina virtuale si è avviata senza problemi.

Piccola curiosità:

Le istruzioni al passaggio 5 possono essere seguite da CMD oppure da PowerShell. Nel caso della PowerShell basta anteporre il i caratteri ./ all’eseguibile, ottenendo la seguente serie di comandi:

./VBoxManage.exe modifyvm “macOS 10.13 High Sierra” –cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/efi/0/Config/DmiSystemProduct” “iMac11,3”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/efi/0/Config/DmiSystemVersion” “1.0”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/efi/0/Config/DmiBoardProduct” “Iloveapple”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/smc/0/Config/DeviceKey” “ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC” 1

Queste istruzioni vanno a modificare un file macOS 10.13 High Sierra.vbox (dipende come avete chiamato la macchina) che si trova nella sua cartella in VirtualBox VMs.

Si tratta di un file XML dove appariranno istruzioni del tipo:

 

 

Vedi articolo

Leggere il filesystem OS Journaled (HFS) del Mac su un computer Windows

Soluzione: usare il programma HFSExplorer scaricabile da qui

Per leggere il contenuto di un disco o una chiavetta formattati con il filesystem proprietario del Mac, è sufficiente utilizzare un qualche programma come HFSExplorer, che permette di leggere HFS (Mac OS Standard), HFS+ (Mac OS Extended) e HFSX (Mac OS Extended con case sensitive).

Il programmino gira su Java, che quindi è eventualmente necessario installare sul proprio computer.

Vedi articolo