OSX Lion – Remove/Unistall Xcode 4
To unistall XCode 4.x from OSX Lion you have to digit this command from a terminal:
sudo /Library/Developer/Shared/uninstall-devtools -mode=all
To unistall XCode 4.x from OSX Lion you have to digit this command from a terminal:
sudo /Library/Developer/Shared/uninstall-devtools -mode=all
Fare un backup del firmware e dei dati del cellulare.
Studiare il funzionamento dello strumento ADB.
Studiare la sintassi dei più semplici comandi Linux: SU, CP, MOUNT, MKDIR, RM, CHMOD, LS, CD, DF.
Attrezzi necessari all’intervento
Piattaforma di sviluppo per android installata sul nostro PC con i driver usb per il nostro dispositivo e ADB.
Cavo usb di connessione PC telefono.
Attivare modalità Debug USB sul cellulare (dalla home selezionare Menu, Applicazioni, Sviluppo: in sviluppo spuntare le voci Debug USB e Resta attivo).
Scaricare dal market:
Z4Root di Ryanza (contiene già il pacchetto BusyBox) necessario per ottenere l’accesso root del telefono
Openvpn installer
Openvpn settings
Scaricare il driver interfaccia tunneling chiamato tun-I9000-JPK.zip scompattarlo e copiarlo su una cartella facilmente raggiungibile ad esempio (per windows) C:\scambio\
Copiare in C:\scambio\ i file di configurazione della nostra openvpn e le chiavi: miavpn.conf, ca.crt, miocert.crt, miakey.key, ta.key
Si può scaricare il pacchetto Busybox ed effettuare il root del telefono in altri modi, ma per il nostro esperimento abbiamo utilizzato Z4Root.
A questo punto abbiamo tutto il necessario.
Partiamo con l’istallazione di Z4Root al termine del processo eseguiamo l’applicazione; a questo punto ci vengono proposte due modalità di root:
root temporaneo
root definitivo
Noi abbiamo utilizzato il root temporaneo; i contro di questa scelta sono che ogni volta che riavviamo il cellulare dobbiamo nuovamente procedere con l’operazione di root se vogliamo che Openvpn funzioni, ma è sicuramente meno impattante del root definitivo; sta a voi decidere.
Per prima cosa colleghiamo il cellulare al nostro PC ed eseguiamo il comando ADB SHELL:
una volta aperta la console, digitiamo il comando SU per ottenere l’accesso come root; se tutto funziona correttamente, il cellulare ci avviserà che l’utente “uknown” ha ottenuto diritti di root;
a questo punto dobbiamo lanciare il comando seguente: mount -o rw,remount /dev/block/mtdblock3 /system
Questo comando rende la cartella /system del nostro cellulare scrivibile.
Fin qui non si dovrebbero incontrare difficoltà; se ci fossero problemi con il comando “mount” da console, possiamo ottenere lo stesso risultato aprendo una seconda finestra terminale (mac) o prompt msdos (windows) e digitando il comando ADB REMOUNT che effettuerà la modifica per noi.
Ora prepariamo le cartelle necessarie per Openvpn installer:
anciamo il comando: “/system/xbin/mkdir /system/xbin/bb” (crea la cartella bb in /system/xbin)
lanciamo il comando: “/system/xbin/mkdir /mnt/sdcard/openvpn” (crea la cartella openvpn in /mnt/sdcard/)
lanciamo il comando: “ln -s /system/bin/busybox /system/xbin/bb/ifconfig”
lanciamo il comando: “ln -s /system/bin/busybox /system/xbin/bb/route”
Una volta ottenuto l’accesso root, eseguiamo Openvpn installer con le seguenti opzioni di installazione che ci verranno chieste durante il processo:
Directory di installazione del binario: /system/xbin
directory per i comandi ifconfig e route: /system/xbin/bb (non chiudete la finestra di report dell’istallazione)
Esaminiamo i log dell’installer (reperibili premendo il tasto menu e show log) cercando di individuare eventuali errori nell’istallazione, se è tutto ok andiamo avanti.
Installiamo “openvpn settings”
Apriamo una seconda finestra terminale da cui lanciare i seguenti comandi per inviare files al nostro dispositivo:
ADB PUSH C:\scambio\tun.ko (o la nostra cartella locale/tun.ko) /mnt/sdcard/openvpn (con questo comando piazziamo il file tun.ko precedentemente scaricato nella cartella openvpn creata in precedenza)
ripetiamo il tutto per i file di configurazione e le chiavi:
ADB PUSH C:\scambio\miavpn.conf /mnt/sdcard/openvpn
ADB PUSH C:\scambio\miakey.key /mnt/sdcard/openvpn
ADB PUSH C:\scambio\miocert.crt /mnt/sdcard/openvpn
ADB PUSH C:\scambio\ca.crt /mnt/sdcard/openvpn
ADB PUSH C:\scambio\ta.key /mnt/sdcard/openvpn
riportiamo la cartella /system in sola lettura con il comando: mount -o ro,remount /dev/block/mtdblock3 /system
Lanciamo openvpn settings e configuriamo:
Il percorso dei files di configurazione e dei certificati che nel nostro caso è /mnt/sdcard/openvpn
alla voce “load tun kernel module” configuriamo: il percorso del driver tun.ko che nel nostro caso è /mnt/sdcard/openvpn
alla voce “tun module settings” configuriamo: “load tun using” con “insmod” e path to tun module “mnt/sdcard/openvpn/tun.ko”
In openvpn configurations ci troviamo il miavpn.conf già visibile: a questo punto se tutto è andato bene, in openvpn settings spuntiamo la voce ” openVPN” e poi “miavpn.conf”.
Il dispositivo cercherà ora di attivare il tunnel vpn e se tutto è configurato correttamente apparirà nella barra delle notifiche: “VPN connecting”, mentre sulla linguetta identificativa “miavpn.con” in sequenza: resolve, Auth, getconfig ed infine connected to “ipserverVPN” as “ipdispositivo” e la chiavetta nella barra
delle notifiche apparirà illuminata, ad indicare che la connessione è correttamente stabilita.
Possibili errori:
Errore 1
“openvpn cannot allocate the device TUN/TAP dynamically” – il modulo tun non è caricato o è caricato un modulo non compatible con il dispositivo.
Soluzione 1: verificare la correttezza dei settari per il caricamento del modulo tun ed in particolare che venga utilizzato il metodo insmod
Soluzione 2: scaricare un modulo compatibile
Errore 2
Qualsiasi cosa clicchiamo in openvpn settings non accade nulla o l’app si chiude – istallazione del binario openvpn non riuscita o binario corrotto. La maggior parte delle volte si è commesso un errore nella fase di istallazione.
Soluzione 1: verificare la correttezza dell’istallazione ripeterla partendo dal root del telefono e seguire passo passo tutti i comandi così come indicato sopra.
Soluzione 2: scaricare un binario funzionante
Errore 3
La vpn sembra partire arriva a “connected to “ipserverVPN” as” ma non viene indicato l’ip del dispositivo dopo la voce “as” e la vpn non sembra funzionare. La maggior parte delle volte l’errore è nel file conf e nelle voci relative al push della configurazione ip da parte del server VPN;
ciò è dovuto al fatto che il modulo tun non supporta le opzioni pull o pus.
Soluzione: verificare il file con e modificarlo nelle voci relative alla richiesta della configurazione di rete, commentando i comandi pull o pus per verificare che funzioni il resto.
Errore 4
“cannot execute command ifconfig”. Ciò è dovuto ad un’errata configurazione o errata creazione dei link simbolici ai file ifconfig e ruote; nello specifico, stiamo utilizzando i file del ns dispositivo che però non sono compatibili con openvpn e che si trovano in /system/bin.
1 – Open command line program with administrator privilegies
2 – navigate to c:\windows\system32
3 – now you ready to install the new Product Key with this command
slmgr.vbs -ipk "insert your new product key here"/code>
4 - wait for a popup that indicate result operation
5 - after you can activate your product with this command
slmgr.vbs -ato
sometimes you need to check the type of device that will use our application in order to identify whether the device is an iphone, ipod or iPad. To check this we can read the [UIDevice currentDevice].model such you are essentially comparing the device name with a hard-coded value. Example
if(![[UIDevice currentDevice].model isEqualToString:@"iPhone"])
{
UIAlertView *alertView = [UIAlertView alloc] initWithTitle:@"Error"
message:@"Call service not avalible on this device"
delegate:self
cancelButtonTitle:@"close"
otherButtonTitles: nil];
[alertView show];
[alertView release];
}
as alternative we can add a control if the device can openURL “tel:xxx-xxxx-xxxx” which is the protocol used to make a call on an iPhone device:
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:RISTOSTREGA_PHONE]]
more in deep we ca use to know exactly the generation of device the class UIDeviceHardware:
UIDeviceHardware *h=[[UIDeviceHardware alloc] init];
[self setDeviceModel:[h platformString]];
[h release];
the class UIDeviceHardware.h:
@interface UIDeviceHardware : NSObject
- (NSString *) platform;
- (NSString *) platformString;
@end
in the implementation file UIDeviceHardware.m:
#include
#include
@implementation UIDeviceHardware
- (NSString *) platform{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine];
free(machine);
return platform;
}
- (NSString *) platformString{
NSString *platform = [self platform];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator";
return platform;
}
@end
If your users behind Endian FW Proxy are getting “read error (104) connection reset by peer” when loading content, try to check if your proxy work fine browsing https://google.com ( works fine with ssl), but you get the 104 error otherwise, you have to update your blacklist for dansguardian because one of the blacklists updated on 10 feb 2011 is totally invalid.
Check for updates, fix manually or you can disable to content filter until you have a chance to update.
Problem:
Hi i get this error when try to debug my app inside connected device. The app was launched regularly but i lost the connection to the debugger.
Solution:
There was an issue of certificates. In effetc i was using an adHoc Certificate that doesn’t support the debugger on device.
here a good implementation of a fully work example of APN service integration inside your App.
http://blog.boxedice.com/2009/07/10/how-to-build-an-apple-push-notification-provider-server-tutorial
Looking around internet i found this interesting article about mapkit http://icodeblog.com/2009/12/21/introduction-to-mapkit-in-iphone-os-3-0/.
Download three20 library with this command git clone git://github.com/facebook/three20.git
1) Copy the three20 folder into your iphone project: goto in [YourProjectsFolders]/[iOSProjectName] and copy three20 folder here
2) from console locate the three20 folder and run this python command
python src/scripts/ttmodule.py -p ../[iOSProjectName].xcodeproj Three20 -c Debug -c Release
3) now go to XCode and build. If yet opened reload project.
After i seek around the web i have a definitive solution to run a batch file in a silent way, that is a vb script, lanched on a task system (example on startup), like this:
Set WshShell = CreateObject("WScript.Shell")
cmds=WshShell.RUN("c:\my_batch_file.bat", 0, True)
Set WshShell = Nothing
Setting intWindowStyle to 0, in the second line, will hide the output window.
Save this as script.vbs file and run it when you need.