[ad_1]
La distribuzione delle applicazioni nel Galaxy Store viene solitamente gestita tramite il portale venditori del Galaxy Store. Tuttavia, quando disponi di molte applicazioni, aggiornarle e distribuirle manualmente tramite l’interfaccia del Portale venditori può essere una seccatura. L’API Content Publish, una parte fondamentale dell’API Galaxy Store Developer (GSD), consente di gestire la distribuzione e la gestione delle applicazioni in modo programmatico senza utilizzare l’interfaccia del Portale venditori.
L’articolo precedente della serie, Gestione delle app utilizzando l’API Galaxy Store Developer e Python, ti ha mostrato come visualizzare, modificare, inviare e cambiare lo stato delle tue applicazioni registrate nel Portale venditori con l’API. Questo articolo si basa sulle informazioni presentate in precedenza e mostra come creare un sistema di gestione dei rilasci automatizzato utilizzando Jenkins e Python per accedere all’API di pubblicazione dei contenuti.
L’attività viene eseguita in tre fasi separate:
- Configura Jenkins sul tuo computer e connettilo al tuo server GitHub.
- Crea un progetto Jenkins per generare un file APK di rilascio ogni volta che viene eseguita una nuova unione o impegno nel progetto dell’applicazione.
- Crea un secondo progetto Jenkins per eseguire uno script Python che carica e invia in modo programmatico il file APK a Galaxy Store per la revisione.
Infine, questo articolo illustra come risolvere i problemi comuni riscontrati durante l’utilizzo delle funzionalità dell’API Galaxy Store Developer tramite script Python.
Prerequisiti
Prima di seguire i passaggi di questo tutorial:
- Installa Python sul tuo computer.
- Installa Jenkins. Segui le istruzioni nella documentazione Jenkins per il tuo sistema operativo e assicurati che i plugin consigliati siano installati e aggiornati.
- Crea un account venditore Galaxy Store nel portale venditori Galaxy Store. Per ulteriori informazioni, consulta la Guida per l’utente del portale venditori Galaxy Store.
- Ottieni un ID account di servizio dal Portale venditori.
- Recupera un token di accesso dal server di autenticazione del Galaxy Store. Per ulteriori informazioni, consulta Come creare un token di accesso per l’API per sviluppatori Galaxy Store utilizzando Python.
Configura Jenkins
Per configurare Jenkins in modo che funzioni con il tuo server GitHub, procedi nel seguente modo:
- Nel dashboard Jenkins, seleziona “Gestisci Jenkins > Configura sistema”.
- Nella sezione “Posizione Jenkins”, definisci l’URL Jenkins. Si consiglia di definire un nome host specifico anziché il valore predefinito “localhost”.
-
Definire le variabili d’ambiente. Seleziona la casella di controllo “Variabili d’ambiente” e aggiungi i seguenti nomi e valori delle variabili:
- ANDROID_HOME: percorso della cartella di installazione dell’SDK Android
- JAVA_HOME: percorso della cartella di installazione del Java Development Kit (JDK).
- GRADLE_USER_HOME: percorso di una cartella in cui Jenkins può archiviare la cache Gradle. La cache può aiutare a evitare alcuni errori di compilazione dell’APK.
NotaÈ necessario definire le variabili di ambiente utilizzando questi nomi specifici.
Figura 1: variabili d’ambiente
-
Crea un token di accesso GitHub personale. Questo passaggio è particolarmente importante se sei un utente GitHub Enterprise o se desideri ulteriore sicurezza per il tuo progetto. In GitHub, vai su “Impostazioni > Impostazioni sviluppatore > Token di accesso personali” e seleziona “Genera nuovo token”. Definisci l’ambito del tuo token, assicurandoti di includere gli ambiti amministrativi correlati all’hook appropriati. Copia il token in un luogo sicuro.
Figura 2: token di accesso GitHub
-
Torna alle impostazioni di Jenkins e seleziona “Aggiungi server GitHub”. Definisci il campo URL API con il valore appropriato:
- Se utilizzi GitHub Enterprise, inserisci “https://your-enterprise-url.com/api/v3”
- Altrimenti, inserisci “https://api.github.com”
-
Nella sezione “Credenziali”, fai clic su “Aggiungi”. Nel popup, definisci il tipo di credenziali come “Testo segreto” e incolla il token di accesso GitHub nel campo “Segreto”. Per salvare le credenziali e chiudere il popup, fare clic su “Aggiungi”.
Figura 3: pop-up Aggiungi credenziali
-
Nel menu a discesa “Credenziali”, seleziona la credenziale che hai appena creato.
Figura 4: server GitHub configurato
- Per verificare che la connessione sia configurata correttamente, fare clic su “Verifica connessione”.
- Poiché i webhook vengono utilizzati per attivare la creazione del file APK dell’applicazione, seleziona la casella di controllo “Gestisci hook”.
Generazione di un APK firmato
Il primo progetto Jenkins per questa attività genera un APK firmato ogni volta che viene eseguita un’unione o un commit nel progetto dell’applicazione in GitHub.
Nella dashboard di Jenkins, fai clic su “Nuovo elemento”. Seleziona “Progetto Freestyle”, definisci un nome per il progetto e seleziona “OK”. Si apre la pagina “Configura”.
Tutti i dettagli necessari per costruire il progetto sono definiti nella pagina “Configura”, come la gestione del codice sorgente:
- Vai alla sezione “Gestione del codice sorgente” della pagina “Configura” e seleziona “Git”.
- Seleziona “Aggiungi repository” e inserisci i dettagli del tuo repository:
- URL del repository: l’indirizzo HTTPS del tuo repository. Assicurati di includere l’estensione “.git” alla fine dell’URL.
- Credenziali: seleziona le tue credenziali dall’elenco, se non sono già selezionate. Se stai lavorando su un progetto GitHub pubblico, puoi omettere questo passaggio.
- Rami da creare: specificare il ramo di rilascio da creare. Se non si specifica un ramo di rilascio, viene creato il ramo principale.
NOTA: Jenkins clona il repository nel suo spazio di lavoro.
- Conferma la configurazione facendo clic su “Applica” e “Salva”.
Per testare la creazione del progetto, fai clic su “Crea ora”. Puoi rivedere i dettagli dei risultati della build nella scheda “Cronologia build”.
La sezione “Build Triggers” è fondamentale in quanto definisce quando deve essere creato il progetto Jenkins. Per rilevare quando è presente un nuovo commit o rilascio nel ramo di rilascio specificato, puoi utilizzare un webhook GitHub. Nella sezione “Crea trigger”, seleziona la casella di controllo “Trigger hook GitHub per polling GITScm”.
Nel tuo repository GitHub, vai su “Impostazioni > Hooks > Webhook” e crea un webhook:
- Fai clic su “Aggiungi webhook”.
- Nel campo “URL payload”, inserisci il tuo indirizzo Jenkins, aggiungendo “/github-webhook/” alla fine dell’indirizzo. Il finale “https://developer.samsung.com/” è obbligatorio.
- Per “Tipo di contenuto”, seleziona “application/json”.
- Per maggiore sicurezza, puoi definire un “Segreto”. Questo passaggio è facoltativo.
- Nella sezione “Quali eventi desideri attivare questo webhook?” campo, seleziona l’opzione desiderata.
Se sei protetto da un firewall, ad esempio su una rete aziendale o NAT, devi esporre il tuo URL Jenkins su GitHub. Per bypassare il firewall, puoi utilizzare Smee o Nginx.
Ora sei pronto per implementare la funzionalità per il progetto, che viene definita tramite passaggi di creazione in Jenkins.
Il primo passaggio crea il tuo progetto Android Studio:
- Nella sezione “Passaggi di creazione”, dal menu a discesa “Aggiungi passaggio di creazione”, seleziona “Richiama script Gradle”.
- Seleziona “Usa Gradle Wrapper” e seleziona la casella di controllo “Rendi eseguibile gradlew”.
- Nel campo “Posizione wrapper”, inserisci il percorso dell’area di lavoro Jenkins per il tuo progetto di applicazione. Per recuperare la posizione della directory dello spazio di lavoro Jenkins, vai su “Dashboard > Gestisci Jenkins > Configura sistema”.
- Nel campo “Attività”, inserisci “clean build –stacktrace”.
Il passaggio successivo firma il file APK. Per capire quali informazioni sono necessarie per questo passaggio, puoi cercare in Android Studio. La figura seguente mostra la finestra di dialogo “Genera bundle o APK firmato” in Android Studio.
Tutti i campi in questa finestra di dialogo sono obbligatori. Se non disponi di un archivio chiavi esistente, devi crearne uno.
Per firmare il file APK in Jenkins, aggiungi un altro passaggio di creazione, selezionando “Esegui comando batch Windows”. Nella casella di testo, inserisci il seguente comando:
jarsigner -keystore <pathToKeyStore> -storepass <storePassword> -keypass <keyPassword> -signedjar <pathToSaveSignedAPK> <pathToUnsignedAPK> <KeyAlias>
Per archiviare l’APK generato, nella sezione “Azioni post-compilazione”, dal menu a discesa “Aggiungi azione post-compilazione”, seleziona “Archivia gli artefatti”. Nel campo “File da archiviare”, inserisci il percorso dell’APK firmato.
Il tuo progetto Jenkins è pronto per generare automaticamente un APK firmato quando apporti modifiche al progetto dell’applicazione in GitHub.
Carica sul Galaxy Store
Il secondo progetto Jenkins attiva uno script Python che carica e invia l’APK firmato al Galaxy Store.
In Jenkins, crea un nuovo progetto freestyle. Nella sezione “Trigger di creazione”, seleziona “Crea dopo la creazione di altri progetti” e nel campo “Progetti da monitorare”, inserisci il nome del progetto precedente.
Poiché questo progetto deve essere compilato solo quando il progetto precedente è stato compilato correttamente ed è stabile, seleziona l’opzione “Attiva solo se la compilazione è stabile”.
Definire la funzionalità per il progetto Jenkins. Nella sezione “Passaggi di compilazione”, dal menu a discesa “Aggiungi passaggio di compilazione”, seleziona “Esegui comando batch di Windows”. Nella casella di testo, scrivi un semplice comando che passa allo script Python e lo esegue.
Infine, crea lo script Python per gestire il caricamento. Per informazioni dettagliate sulla scrittura dello script, consulta Gestione delle app utilizzando l’API per sviluppatori Galaxy Store e Python.
Problemi comuni con lo script Python
I seguenti suggerimenti possono aiutarti a risolvere i problemi comuni relativi all’implementazione dello script Python:
-
Errore “SSL: CERTIFICATE_VERIFY_FAILED” della richiesta HTTP
Se ricevi questo errore, devi specificare esplicitamente il parametro “verify” nella tua richiesta HTTP.- Per definire la posizione del certificato:
request.get(api_url, headers=headers,data=payload, verify=”/path/to/certificate”) - Per saltare la verifica (non consigliato):
request.get(api_url, headers=headers,data=payload, verify=False)
- Per definire la posizione del certificato:
-
Errore di “mancata corrispondenza del tipo di contenuto” nel caricamento del file
Se ricevi questo errore, controlla le intestazioni nella tua richiesta HTTP. Sostituisci ‘Accetta’: ‘application/json’ con ‘Content-Type’: ‘application/json’ -
Errore “verifica convalida (input essenziale)” nell’invio dell’applicazione
Se ricevi questo errore, mancano i parametri obbligatori nel payload della richiesta HTTP. Alcuni parametri comunemente trascurati includono:- publishingType: per i valori disponibili, consulta la guida di riferimento dell’API di pubblicazione dei contenuti.
- usExportLaws: certifica che la tua applicazione è conforme alle leggi statunitensi sull’esportazione. Per convalidare e distribuire l’applicazione, il valore deve essere “true”.
Riepilogo
Puoi automatizzare facilmente la gestione delle applicazioni nel Galaxy Store utilizzando Jenkins per creare e firmare file APK dal tuo progetto GitHub e caricarli tramite l’API Galaxy Store Developer con uno script Python. Se hai domande o hai bisogno di aiuto con le informazioni contenute in questo tutorial, puoi condividere le tue domande sul Samsung Developers Forum. Per un supporto più specializzato, puoi contattarci tramite il supporto per sviluppatori Samsung.
Articoli di blog in questa serie
[ad_2]
Source link