Come identificare il jailbreak in Swift

Per verificare se il dispositivo che sta eseguendo la vostra app ha il jailbreak, le operazioni da fare, per poterlo identificare, sono davvero molteplici.

Quando si parla di sicurezza informatica, poi, c’è davvero ogni corrente di pensiero possibile e le alternative operabili sono senza limiti.

Posso suggerirvi qualche risorsa e qualche repository su GitHub che tratta l’argomento, ma sappiate che non esiste un qualcosa di perfettamente funzionante, in quanto appunto sono delle sorta di reverse engineering per capirlo.

https://github.com/avltree9798/isJailbroken

È ad esempio immune sia a Shadow & Liberty Lite che a UnSub.
Ma ciò non significa che sia impenetrabile, quindi nel caso, dovete effettuare delle verifiche ulteriori, nel caso sia di vitale importanza il fatto che il dispositivo non sia jailbroken (nel caso di app bancarie o con informazioni sensibili).

Photo by James Harrison on Unsplash

Un’altra risorsa importante, di cui vi consiglio la lettura, è la seguente:

https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/

Come aggiungere una UITests in Swift

Se volete effettuare un test per la UI (che vi potrebbe servire ad esempio con fastlane), dovrete aggiungere un Target nel vostro progetto e potrete farlo come nello screenshot qui sotto, aggiungendo UI Testing Bundle:

Scegliete un nome coerente e cliccate su Finish:

Dato che probabilmente Xcode non vi avrà aggiungo lo Scheme, aggiungetelo voi:

Cliccate poi sul Target del test e poi su Ok per confermare!

Ora assicuratevi che abbia la spunta Run nelle impostazioni:

E ora potete cliccare sulla funzione (dovrebbe esservi spuntato un piccolo rombo a lato):

func testExample() {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()
}

E cliccare sul tasto registra in basso a sinistra per registrare il vostro test da eseguire!

Come convertire un progetto da Swift 4.2 a 5

Avevamo visto come convertire un progetto da Swift 3 a Swift 4, oggi molto semplicemente vedremo come convertirlo:

Conversione a Swift 5 disponibile

Prima di tutto dovrete armarvi di Xcode beta, attualmente alla versione 10.2 dal sito developer.apple.com e sappiate già in partenza che non sarà indolore!

Sappiate anche che una volta convertito, non potrete pubblicare app sullo store di Apple con una versione beta di Xcode, quindi prestate molta attenzione se modificate un progetto in fase di product.

Detto questo, come al solito aprite un progetto e nel caso non dovesse comparirvi la richiesta di aggiornamento, potete forzarlo andando su:

Edit -> Convert -> To Current Swift Syntax...

Nel caso non venga cambiato, cercate nel progetto la stringa:

SWIFT_VERSION

E modificatela opportunamente… aspettandovi decine se non centinaia di warning dal nostro caro e amato Xcode.

Come gestire i problemi di versione con Carthage

Nel caso abbiate problemi a compilare o aggiornare un progetto pieno di dipendenze gestite con Chartage e quindi vi dia vari problemi come ad esempio:

Cercando di aggiornare un progetto con Carthage

In questo caso sto utilizzando Swift 4.2 nel progetto ma una dipendenza è stata compilata con Swift 3.3!

Vi basterà (salvo imprevisti del caso) ricompilare anche le dipendenze con la versione di Swift attuale.

carthage update --platform iOS --no-use-binaries

Come cancellare la cache e liberare spazio su Xcode

Se utilizzate Xcode e volete alleggerire il vostro hard disk, o SSD che sia, vi basterà cancellare queste cartelle:

~/Library/Developer/Xcode/DerivedData
~/Library/Developer/Xcode/Archives
~/Library/Developer/Xcode/iOS DeviceSupport
~/Library/Developer/CoreSimulator
~/Library/Caches/com.apple.dt.Xcode
~/Library/Application Support/MobileSync/Backup

Mi raccomando ovviamente di controllare prima che all’interno non ci sia qualcosa che vi necessiti (controllate l’ultima cartella perché è dove dovreste avere i vecchi backup di iTunes).

Come alleggerire CocoaPods

Molti di voi probabilmente li hanno utilizzati o li utilizzano ancora tutt’oggi. Io già un anno fa vi avevo avvisati (l’articolo non è mio, però condivido il pensiero) che CocoaPods avesse qualcosa che non andava.

Beh arrivo al dunque brevemente come al solito e non mi dilungo troppo: se avete utilizzato delle dipendenze nei vostri progetti con CocoaPods e avete problemi di spazio (online c’è anche chi si lamenta d’avere più di 20 GB di file), ecco a voi come alleggerire la cartella dei progetti (nel caso vogliate alleggerire anche Xcode, due anni fa ho scritto come cancellare la cache di Xcode in inglese).

La cartella è nascosta, quindi dovete accedervi da terminale con:

cd ~/.cocoapods/

E cancellatela ovviamente con:

sudo rm -R ~/.cocoapods/

Screenshot di DaisyDisk nel quale mi sono accorto che… lasciamo stare

Nella speranza che usiate altri metodi per le vostre dipendenze (ehm… Carthage), alla prossima!

Come installare Carthage

Andate qui e scaricate l’ultima versione https://github.com/Carthage/Carthage/releases altrimenti compilatevelo da zero Installatelo normalmente e aprite il terminale.

Spostatevi nella cartella del vostro progetto ed eseguite:

nano Cartfile

E incollate (modificando il nome in base a quello che state creando):

github "Utente/Progetto"

Salvate ed eseguite:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
carthage update --platform iOS
open Carthage

Poi andate dentro la cartella /Carthage/Build/iOS, selezionate il file .framework e trascinatelo dentro il vostro progetto.

Run script

Ora andate su Build Phases, cliccate sul + in alto a sinistra e poi su Run Script. Dentro Shell mettete:

/usr/local/bin/carthage copy-frameworks

E su Input Files il percorso del framework che avete appena creato:

Linked frameworks and libraries

E voilà, ora andate e importatene tutti! Vi basterà importare le vostre dipendenze semplicemente con:

import Progetto