2016-05-11 11 views
6

Ho un progetto Xcode con sei destinazioni, ogni obiettivo viene creato per creare un'app separata. Sto cercando di installare fastlane per aiutarmi nella pubblicazione di queste app.Come rendere disponibili i metadati di download (fastlane) per più destinazioni?

docs Fastlane suggest utilizzando i file .env al fine di gestire più bersagli (è possibile specificare app_identifier, team_name, ecc in diversi file .env, e poi, per esempio, chiamare fastlane appstore --env ENV_NAME_HERE). Tuttavia non riesco a capire come impostare correttamente deliver.

deliver init scarica metadati per un solo target per impostazione predefinita. Ho bisogno di scaricare i metadati per tutti i miei obiettivi su diverse directory (e quindi utilizzare quelle directory per caricare i dati, ovviamente). deliver download_metadata non accetta il parametro --env (il mio Deliverfile dipende dai file env). Ho provato fastlane deliver --env, ma sembra essere solo una stenografia per deliver, quindi non funziona neanche.

Credo che avrei potuto appena eseguito manualmente deliver con diversi --metadata_path parametri (e tutti gli altri parametri dato che il mio Deliverfile non è valido, perché dipende dal file ENV), e poi specificare le directory utilizzando Deliverfile + .env file. Ma dal momento che ho già installato i file Deliverfile e .env (ora uso deliver per caricare solo il file binario), speravo che ci fosse un modo migliore. È lì?

P.S. Questo è un grande progetto legacy, quindi dividerlo in sei diversi progetti sarebbe fantastico, ma sfortunatamente non è un'opzione.

risposta

7

Ho anche avuto difficoltà con questo e impostare l'invio è facile utilizzando i file .env.

Ma il recupero dei dati iniziali è difficile, ma non impossibile.

Per afferrare i metadati si correva questo comando:

fastlane deliver download_metadata -m "./Targets/Release/Metadata" -u "[email protected]" -a "com.example.ios" 

E per gli screenshot:

fastlane deliver download_screenshots -w "./Targets/Release/Screenshots" -u "[email protected]" -a "com.example.ios" 
+0

Grazie! Sembra che sia l'unico modo per ora davvero. – FreeNickname

+0

Non ho ancora provato, ma forse puoi anche passare '-m' e' -W' e usare l'azione init su deliver. Sto usando questi metodi in uno script e scrivo il file .env. – rckoenes

+0

Ci proverò, grazie per la soluzione! – FreeNickname

3

aggiungendo fino a @rckoenes risposta:

1) Creazione di un .env.yourEnvName file con queste informazioni (ad esempio):

DLV_METADATA_PATH="../Targets/Your_Target/Metadata" 
DLV_ITUNESCONNECT_USERNAME="[email protected]" 
DLV_BUNDLE_ID="com.yourCompany.yourTarget" 

2) Creare un vicolo come questo:

desc "Download metadata" 
lane :metadata do 
    sh('fastlane deliver download_metadata -m "$DLV_METADATA_PATH" -u $DLV_ITUNESCONNECT_USERNAME -a $DLV_BUNDLE_ID') 
end 

3) chiamata Fastlane in questo modo:

fastlane metadata --env yourEnvName 

In questo modo è un po 'più pulito, e si mantiene il Vars nel file .env . Per l'automazione di questa chiamata per più destinazioni, fare riferimento a: https://docs.fastlane.tools/faqs/#multiple-targets-of-the-same-underlying-app

+0

Ho provato questa soluzione, ma ottengo sempre "missing -a in terminal".In seguito è la mia corsia disc “Download metadati di ciascun target” corsia: i metadati fanno sh ('Fastlane fornire download_metadata -m ‘$ DLV_METADATA_PATH’ u $ DLV_ITUNESCONNECT_USERNAME -a $ DLV_BUNDLE_ID') fine e segue è la mia .env presentare DLV_METADATA_PATH =./Obiettivi/NextSampleFastlaneTesting3/Metadata DLV_ITUNESCONNECT_USERNAME=****@****.com DLV_BUNDLE_ID = com. ****. NextSampleFastlaneTesting3 ho fatto qualcosa di sbagliato? –

Problemi correlati