Ecco un buon motivo per non usare Mac.
Sto usando un vecchio portatile MacBook Pro con installato El Capitan 10.11.6 (piu' recente sistema installabile). Per adesso lo ho usato quasi solo come macchina da scrivere ma adesso volevo provare ad usare Cordova ed avevo la necessita' di installare XCode
Primo problema: XCode per le versioni "vecchie" non si installa da Apple Store. Si deve scaricare il pacchetto a parte (e bisogna sapere quale e' il pacchetto giusto...nel mio caso XCode 7.3.1) ma per fare cio' bisogna anche essere sviluppatori registrati e quindi aver pagato l'abbonamento
Fatto cio' ho provato a compilare un semplice codice e ad installarlo sul telefono (un iPhone SE con iOS 11.4.1) ed e' saltato fuori l'errore Could not find Developer Disk Image...e quindi ??? . Tutto cio' nonostante avessi esplicitamente messo come target IOs 9.3 ovvero il massimo per XCode 7
Dopo un bel po' di giri su Internet ho scoperto che si possono scaricare le Developer Disk Image in modo non ufficiale (ma firmate) da questo sito
https://github.com/xushuduo/Xcode-iOS-Developer-Disk-Image
e poi devono essere copiate nella cartella
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
ed alla fine funziona
Visualizzazione post con etichetta Xcode. Mostra tutti i post
Visualizzazione post con etichetta Xcode. Mostra tutti i post
martedì 21 agosto 2018
martedì 7 febbraio 2017
Integrazione GitHub e XCode
L'integrazione tra GitHub e XCode e' piuttosto semplice.
Per prima cosa dall'interfaccia Web si crea un nuovo progetto e nella root del progetto si digitano i seguenti comandi (come da istruzioni a video)
-----
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/[nome_utente]/[nome_progetto].git
git push -u origin master
-----
fatto cio' aprendo il menu Source Control di XCode si trova gia' il tutto configurato. Da qui in poi si puo' gestire tutto da XCode
Per prima cosa dall'interfaccia Web si crea un nuovo progetto e nella root del progetto si digitano i seguenti comandi (come da istruzioni a video)
-----
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/[nome_utente]/[nome_progetto].git
git push -u origin master
-----
fatto cio' aprendo il menu Source Control di XCode si trova gia' il tutto configurato. Da qui in poi si puo' gestire tutto da XCode
giovedì 7 gennaio 2016
Scrivere file con Cordova su Android Studio/XCode
Con Apache Cordova e' possibile scrivere dati sulla memoria del dispositivo mobile ma, a causa delle enormi differenze della gestione dello storage nei vari sistemi operativi, non e' possibile avere una soluzione unica ma si devono effettuare adattamenti ad hoc
Per prima cosa si deve aggiungere il plugin File con il comando
cordova plugin add org.apache.cordova.file
IOS
Il filesystem in IOS ovviamente non viene esposto e lo scambio dati avviene solo tramite ITunes
Il progetto Xcode di Cordova deve essere modificato come segue
1) deve essere aggiunto una chiave file info.plist
Application supports Itunes file sharing = YES
(UIFileSharingEnabled = YES)
2) deve essere aggiunto al file config.xml (dopo gli allow) il seguente codice
-------------
<feature name="File">
-------------
3) il codice HTML5 deve essere leggermente modificato rispetto agli esempi di Cordova (in particolare si deve puntare sulla directory Documents che su IOS e' persistente ed in lettura/scrittura. Per un esempio si puo' leggere anche questo post
-------------
Android
Su Android le cose sono decisamente piu' semplici
si dichiara in config.xml che si vuole usare il plugin
-------------
<feature name="File">
<param name="android-package" value="org.apache.cordova.FileUtils" />
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.FileTransfer" />
</feature>
-------------
Si settano in permessi di scrittura in AndroidManifest.xml
-------------
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-------------
Di nuovo il codice HTML5 dell'esempio di Cordova in cui e' evidenziata in giallo la modifica per Android
-------------
/* globals console,document,window,cordova */
document.addEventListener('deviceready', onDeviceReady, false);
var logOb;
function fail(e) {
console.log("FileSystem Error");
console.dir(e);
}
function onDeviceReady() {
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(dir) {
console.log("got main dir",dir);
dir.getFile("log.txt", {create:true}, function(file) {
console.log("got the file", file);
logOb = file;
writeLog("App started");
});
});
document.querySelector("#actionOne").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionOne here
//
//Now log it
writeLog("actionOne fired");
}, false);
document.querySelector("#actionTwo").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionTwo here
//
//Now log it
writeLog("actionTwo fired");
}, false);
}
function writeLog(str) {
if(!logOb) return;
var log = str + " [" + (new Date()) + "]\n";
console.log("going to log "+log);
logOb.createWriter(function(fileWriter) {
fileWriter.seek(fileWriter.length);
var blob = new Blob([log], {type:'text/plain'});
fileWriter.write(blob);
console.log("ok, in theory i worked");
}, fail);
}
function justForTesting() {
logOb.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
console.log(this.result);
};
reader.readAsText(file);
}, fail);
}
-------------
Per prima cosa si deve aggiungere il plugin File con il comando
cordova plugin add org.apache.cordova.file
IOS
Il filesystem in IOS ovviamente non viene esposto e lo scambio dati avviene solo tramite ITunes
Il progetto Xcode di Cordova deve essere modificato come segue
1) deve essere aggiunto una chiave file info.plist
Application supports Itunes file sharing = YES
(UIFileSharingEnabled = YES)
2) deve essere aggiunto al file config.xml (dopo gli allow) il seguente codice
-------------
<feature name="File">
<param name="ios-package" value="CDVFile" />
</feature>
<feature name="FileTransfer">
<param name="ios-package" value="CDVFileTransfer" />
</feature>
<preference name="iosPersistentFileLocation" value="Library" />
<preference name="BackupWebStorage" value="local" />-------------
3) il codice HTML5 deve essere leggermente modificato rispetto agli esempi di Cordova (in particolare si deve puntare sulla directory Documents che su IOS e' persistente ed in lettura/scrittura. Per un esempio si puo' leggere anche questo post
-------------
/* globals console,document,window,cordova */
document.addEventListener('deviceready', onDeviceReady, false);
var logOb;
function fail(e) {
console.log("FileSystem Error");
console.dir(e);
}
function onDeviceReady() {
window.resolveLocalFileSystemURL(cordova.file.documentsDirectory, function(dir) {
console.log("got main dir",dir);
dir.getFile("log.txt", {create:true}, function(file) {
console.log("got the file", file);
logOb = file;
writeLog("App started");
});
});
document.querySelector("#actionOne").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionOne here
//
//Now log it
alert("tasto 1");
writeLog("actionOne fired");
}, false);
document.querySelector("#actionTwo").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionTwo here
//
//Now log it
alert("tasto 2");
writeLog("actionTwo fired");
}, false);
}
function writeLog(str) {
if(!logOb) {
alert("errore write log");
return;
}
var log = str + " [" + (new Date()) + "]\n";
console.log("going to log "+log);
alert("Luca");
logOb.createWriter(function(fileWriter) {
fileWriter.seek(fileWriter.length);
alert("Luca");
var blob = new Blob([log], {type:'text/plain'});
fileWriter.write(blob);
console.log("ok, in theory i worked");
}, fail);
}
function justForTesting() {
logOb.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
console.log(this.result);
};
reader.readAsText(file);
}, fail);
}
-------------Android
Su Android le cose sono decisamente piu' semplici
si dichiara in config.xml che si vuole usare il plugin
-------------
<feature name="File">
<param name="android-package" value="org.apache.cordova.FileUtils" />
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.FileTransfer" />
</feature>
-------------
Si settano in permessi di scrittura in AndroidManifest.xml
-------------
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-------------
Di nuovo il codice HTML5 dell'esempio di Cordova in cui e' evidenziata in giallo la modifica per Android
-------------
/* globals console,document,window,cordova */
document.addEventListener('deviceready', onDeviceReady, false);
var logOb;
function fail(e) {
console.log("FileSystem Error");
console.dir(e);
}
function onDeviceReady() {
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(dir) {
console.log("got main dir",dir);
dir.getFile("log.txt", {create:true}, function(file) {
console.log("got the file", file);
logOb = file;
writeLog("App started");
});
});
document.querySelector("#actionOne").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionOne here
//
//Now log it
writeLog("actionOne fired");
}, false);
document.querySelector("#actionTwo").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionTwo here
//
//Now log it
writeLog("actionTwo fired");
}, false);
}
function writeLog(str) {
if(!logOb) return;
var log = str + " [" + (new Date()) + "]\n";
console.log("going to log "+log);
logOb.createWriter(function(fileWriter) {
fileWriter.seek(fileWriter.length);
var blob = new Blob([log], {type:'text/plain'});
fileWriter.write(blob);
console.log("ok, in theory i worked");
}, fail);
}
function justForTesting() {
logOb.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(e) {
console.log(this.result);
};
reader.readAsText(file);
}, fail);
}
-------------
venerdì 19 giugno 2015
Crash su sottomissione ad Apple Store
Oggi una sorpresa. Mandando in verifica una app su Apple Store con la stessa procedura che ho fatto solo un paio di giorni fa XCode ha crashato in modo non recuperabile
Chiudere ed aprire Xcode non serve a niente e nemmeno reinstallarlo
La soluzione arriva da questo link: si deve archiviare l'applicazione, lanciare Organizer, chiudere il progetto nella finestraa principale di XCode lasciando aperto Organizer e solo a questo punto si effettua l'upload su Apple Store
Ancora devo capire perche' continuo a pagare soldi per questo tipo di servizio....
mercoledì 9 luglio 2014
Associare IPhone ad XCode
Per poter provare le applicazione IOS direttamente dentro ad un telefono reale (e non il simulatore) oltre a pagare Apple per registrarsi come developer si deve anche registrare il dispositivo all'interno del proprio profilo (c'e' un limite di 100 dispositivi per sviluppatore)
Per prima cosa si deve aprire XCode (con l'IPhone collegato ed aprire Window/Devices)
L'identificativo del dispositivo e' una stringa di 40 caratteri
a questo punto si va sul proprio profilo sviluppatore sul sito Apple e si inserisce il codice copiato in precedenza
Per prima cosa si deve aprire XCode (con l'IPhone collegato ed aprire Window/Devices)
L'identificativo del dispositivo e' una stringa di 40 caratteri
a questo punto si va sul proprio profilo sviluppatore sul sito Apple e si inserisce il codice copiato in precedenza
Fatto cio' e' possibile testare le applicazioni sul proprio IPhone
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...