strumento strumenti

bundletool è lo strumento sottostante che Android Studio, il plug-in Android per Gradle e Google Play utilizzano per creare un Android App Bundle. bundletool può convertire un app bundle nei vari APK di cui è stato eseguito il deployment sui dispositivi.

Gli Android SDK Bundle (ASB) e i relativi APK sono sviluppati con bundletool. È disponibile anche come strumento a riga di comando per consentirti di creare autonomamente app bundle e SDK bundle e ricreare la build lato server di Google Play degli APK della tua app o degli APK dell'SDK abilitato per il runtime.

Scarica bundletool

Se non l'hai ancora fatto, scarica bundletool dal repository GitHub.

Creare e testare un app bundle

Puoi usare Android Studio o lo strumento a riga di comando bundletool per creare il tuo Android App Bundle e poi testare la generazione di APK da questo app bundle.

Creare un app bundle

Utilizza Android Studio e il plug-in Android per Gradle per creare e firmare un Android App Bundle. Tuttavia, se l'utilizzo dell'IDE non è possibile, ad esempio perché stai usando un server di compilazione continua, puoi anche creare il tuo app bundle dalla riga di comando e firmarlo utilizzando jarsigner.

Per saperne di più sulla creazione di app bundle con bundletool, consulta Creare un app bundle utilizzando bundletool.

Genera un set di APK dall'app bundle

Dopo aver creato l'Android App Bundle, verifica in che modo viene utilizzato da Google Play per generare APK e come si comportano questi APK quando viene eseguito il deployment su un dispositivo.

Puoi testare l'app bundle in due modi:

Questa sezione spiega come utilizzare bundletool per testare il tuo app bundle a livello locale.

Quando bundletool genera APK dal tuo app bundle, include gli APK generati in un contenitore chiamato archivio set di APK, che utilizza l'estensione del file .apks. Per generare dall'app bundle un set di APK per tutte le configurazioni dispositivo supportate dalla tua app, utilizza il comando bundletool build-apks, come mostrato:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Se vuoi eseguire il deployment degli APK su un dispositivo, devi includere anche le informazioni di firma dell'app, come mostrato nel seguente comando. Se non specifichi informazioni per la firma, bundletool tenta di firmare gli APK con una chiave di debug per tuo conto.

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

La seguente tabella descrive in maggiore dettaglio i vari flag e le opzioni che puoi impostare quando utilizzi il comando bundletool build-apks:

Tabella 1. Opzioni per il comando bundletool build-apks

Segnala Descrizione
--bundle=path (Obbligatorio) Specifica il percorso dell'app bundle creato con Android Studio. Per scoprire di più, consulta Creare un progetto.
--output=path (Obbligatorio) Specifica il nome del file .apks di output, che contiene tutti gli elementi APK per la tua app. Per testare gli elementi in questo file su un dispositivo, segui i passaggi riportati nella sezione su come eseguire il deployment di APK su un dispositivo connesso.
--overwrite Sovrascrive qualsiasi file di output esistente con il percorso specificato utilizzando l'opzione --output. Se non includi questo flag e il file di output esiste già, viene visualizzato un errore di build.
--aapt2=path Specifica un percorso personalizzato per AAPT2. Per impostazione predefinita, bundletool include la propria versione di AAPT2.
--ks=path (Facoltativo) Specifica il percorso dell'archivio chiavi di deployment utilizzato per firmare gli APK. Se non includi questo flag, bundletool tenterà di firmare gli APK con una chiave di firma di debug.
--ks-pass=pass:password
o
--ks-pass=file:/path/to/file
Specifica la password dell'archivio chiavi. Se specifichi una password in testo normale, qualificala con pass:. Se passi il percorso a un file contenente la password, qualificalo con file:. Se specifichi un archivio chiavi utilizzando il flag --ks senza specificare --ks-pass, bundletool ti chiede di inserire una password dalla riga di comando.
--ks-key-alias=alias Specifica l'alias della chiave di firma che vuoi utilizzare.
--key-pass=pass:password
o
--key-pass=file:/path/to/file
Specifica la password per la chiave di firma. Se specifichi una password in testo normale, qualificala con pass:. Se passi il percorso a un file contenente la password, qualificalo con file:.

Se la password è identica a quella dell'archivio chiavi, puoi omettere questo flag.

--connected-device Indica a bundletool di creare APK che hanno come target la configurazione di un dispositivo connesso. Se non includi questo flag, bundletool genera APK per tutte le configurazioni dispositivo supportate dalla tua app.
--device-id=serial-number Se hai più di un dispositivo connesso, utilizza questo flag per specificare l'ID seriale del dispositivo in cui vuoi eseguire il deployment della tua app.
--device-spec=spec_json Fornisce un percorso a un file .json che specifica la configurazione del dispositivo che vuoi scegliere come target. Per scoprire di più, vai alla sezione su come generare e utilizzare i file JSON delle specifiche del dispositivo.
--mode=universal Imposta la modalità su universal. Utilizza questa opzione se vuoi che bundletool crei un singolo APK che includa tutto il codice e le risorse dell'app, in modo che l'APK sia compatibile con tutte le configurazioni dispositivo supportate dalla tua app.

Nota: bundletool include solo i moduli delle funzionalità che specificano <dist:fusing dist:include="true"/> nel file manifest di un APK universale. Per saperne di più, leggi informazioni sul manifest del modulo delle funzionalità.

Tieni presente che questi APK sono più grandi di quelli ottimizzati per una determinata configurazione dispositivo. Tuttavia, sono più facili da condividere con i tester interni che, ad esempio, vogliono testare la tua app su più configurazioni dispositivo.

--local-testing Consente di attivare il tuo app bundle per i test locali. I test locali consentono di eseguire cicli di test rapidi e iterativi senza dover caricare i file sui server di Google Play.

Per un esempio di come testare l'installazione dei moduli utilizzando il flag --local-testing, consulta la pagina Testare le installazioni di moduli a livello locale.

Eseguire il deployment di APK su un dispositivo connesso

Dopo aver generato un set di APK, bundletool può eseguire il deployment della giusta combinazione di APK del gruppo in questione su un dispositivo connesso.

Ad esempio, se hai un dispositivo connesso con Android 5.0 (livello API 21) o versioni successive, bundletool esegue il push dell'APK di base, degli APK dei moduli delle funzionalità e degli APK di configurazione necessari per eseguire l'app su quel dispositivo. In alternativa, se sul dispositivo connesso è in esecuzione Android 4.4 (livello API 20) o versioni precedenti, bundletool cerca un APK multiplo compatibile da implementare sul dispositivo.

Per eseguire il deployment della tua app da un set di APK, utilizza il comando install-apks e specifica il percorso del set di APK utilizzando il flag --apks=/path/to/apks, come mostrato nel comando seguente. Se hai più dispositivi connessi, specifica un dispositivo di destinazione aggiungendo il flag --device-id=serial-id.

bundletool install-apks --apks=/MyApp/my_app.apks

Generare un insieme di APK specifico per dispositivo.

Se non vuoi creare un set di APK per tutte le configurazioni dispositivo supportate dalla tua app, puoi creare APK che hanno come target solo la configurazione di un dispositivo connesso utilizzando l'opzione --connected-device, come mostrato nel comando seguente. Se hai connesso più dispositivi, specifica un dispositivo di destinazione includendo il flag --device-id=serial-id.

bundletool build-apks --connected-device
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Genera e utilizza i file JSON delle specifiche del dispositivo

bundletool può generare un set di APK che ha come target una configurazione del dispositivo specificata da un file JSON. Per generare prima un file JSON per un dispositivo connesso, esegui questo comando:

bundletool get-device-spec --output=/tmp/device-spec.json

bundletool crea un file JSON per il tuo dispositivo nella directory dello strumento. Potrai quindi passare il file a bundletool per generare un set di APK che hanno come target solo la configurazione descritta in tale file JSON, come segue:

bundletool build-apks --device-spec=/MyApp/pixel2.json
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Creare manualmente un JSON delle specifiche del dispositivo

Se non hai accesso al dispositivo per cui vuoi creare un set di APK target, ad esempio se vuoi provare la tua app con un dispositivo che non hai a disposizione, puoi creare manualmente un file JSON utilizzando il seguente formato:

{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
  "supportedLocales": ["en", "fr"],
  "screenDensity": 640,
  "sdkVersion": 27
}

Puoi quindi passare questo JSON al comando bundle extract-apks, come descritto nella sezione precedente.

Estrae APK specifici per dispositivo da un set di APK esistente

Se hai già impostato un APK e vuoi estrarre da quest'ultimo un sottoinsieme di APK che hanno come target una configurazione specifica del dispositivo, puoi usare il comando extract-apks e specificare un JSON con le specifiche del dispositivo, come indicato di seguito:

bundletool extract-apks
--apks=/MyApp/my_existing_APK_set.apks
--output-dir=/MyApp/my_pixel2_APK_set.apks
--device-spec=/MyApp/bundletool/pixel2.json

Misurare le dimensioni di download stimate degli APK in un set di APK

Per misurare le dimensioni di download stimate degli APK in un set di APK come se venissero pubblicati compressi over-the-wire, utilizza il comando get-size total:

bundletool get-size total --apks=/MyApp/my_app.apks

Puoi modificare il comportamento del comando get-size total utilizzando i seguenti flag:

Tabella 2. Opzioni per il comando get-size total

Segnala Descrizione
--apks=path (Obbligatorio) Specifica il percorso del file del set di APK esistente di cui vengono misurate le dimensioni di download.
--device-spec=path Specifica il percorso del file delle specifiche del dispositivo (da get-device-spec o creato manualmente) da utilizzare per la corrispondenza. Puoi specificare un percorso parziale per valutare un insieme di configurazioni.
--dimensions=dimensions Specifica le dimensioni utilizzate per il calcolo delle stime delle dimensioni. Accetta un elenco separato da virgole di: SDK, ABI, SCREEN_DENSITY e LANGUAGE. Per eseguire misurazioni in tutte le dimensioni, specifica ALL.
--instant Misura le dimensioni di download degli APK ad attivazione istantanea anziché degli APK installabili. Per impostazione predefinita, bundletool misura le dimensioni di download degli APK installabili.
--modules=modules Specifica un elenco separato da virgole di moduli nel set di APK da considerare nella misurazione. Il comando bundletool include automaticamente tutti i moduli dipendenti per l'insieme specificato. Per impostazione predefinita, il comando misura le dimensioni di download di tutti i moduli installati durante il primo download.

Crea un app bundle con una dipendenza per SDK bundle (sperimentale)

Puoi creare il tuo Android App Bundle con una dipendenza Android SDK Bundle (ASB) dalla riga di comando e firmarlo utilizzando jarsigner.

Ogni modulo dell'app bundle include un file .pb (Module Protocol Buffer): runtime_enabled_sdk_config.pb. Questo file contiene l'elenco di SDK da cui dipende un modulo app bundle. Per la definizione completa di questo file, consulta il file runtime_enabled_sdk_config.proto.

Per creare un app bundle con una dipendenza per SDK bundle, segui i passaggi nella sezione relativa alla creazione di un app bundle con bundletool e aggiungi un file runtime_enabled_sdk_config.pb al file ZIP di ogni modulo dell'app con codice e risorse compilati.

Alcuni campi importanti nel file runtime_enabled_sdk_config.pb:

  • Digest certificato:il digest SHA-256 del certificato per la chiave utilizzata per firmare gli APK dell'SDK. Corrisponde al certificato nel file SdkMetadata.pb in formato Android SDK Archive.

  • ID pacchetto di risorse: l'ID pacchetto a cui vengono rimappate tutte le risorse in questo SDK durante la generazione di APK per incorporare l'SDK nell'app. Ciò consente la compatibilità con le versioni precedenti.

Un SDK può apparire solo in un modulo. Se più moduli dipendono dallo stesso SDK, questa dipendenza deve essere deduplicata e spostata nel modulo di base. I diversi moduli non possono dipendere da versioni diverse dell'SDK.

Genera APK da un app bundle con una dipendenza per SDK bundle (sperimentale)

Per generare APK dall'app bundle, segui i passaggi descritti nella sezione relativa alla generazione di un set di APK dall'app bundle o nella sezione relativa alla generazione di un set di APK specifico per dispositivo e fornire il comando bundletool build-apks con gli SDK da cui dipende l'app. Questi SDK possono essere forniti in formato bundle SDK o in formato SDK Archive.

Puoi fornire gli SDK come bundle di SDK aggiungendo il flag --sdk-bundles, come segue:

bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \
    --output=app.apks

Puoi fornire gli SDK come archivi di SDK aggiungendo il flag --sdk-archives nel seguente modo:

bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \
    --output=app.apks
Genera APK da un app bundle con una dipendenza per SDK bundle per dispositivi che non supportano la libreria SDK

I dispositivi precedenti ad Android 13 non supportano l'installazione di librerie SDK o l'esecuzione nel runtime dell'SDK. Bundletool nasconde la complessità della compatibilità con le versioni precedenti e genera più varianti del set di APK dallo stesso app bundle quando esegui bundletool build-apks con l'opzione --sdk-bundles o --sdk-archives. Le varianti multiple hanno come target dispositivi con diverse funzionalità:

  • Esiste una variante per i dispositivi più recenti, in cui l'SDK viene installato come pacchetto separato dall'app e gli APK dell'app non includono contenuti SDK.
  • Esistono una o più varianti per i dispositivi meno recenti, in cui gli APK dell'SDK vengono aggiunti all'APK dell'app impostato come ulteriori suddivisioni dell'APK. Gli APK dell'SDK appartengono al pacchetto di app. In questo caso, il runtime dell'SDK viene emulato nel runtime dell'app sul dispositivo.

In modo simile a come generi APK per gli app bundle senza dipendenze dall'SDK, bundletool extract-apks e bundletool install-apks restituiscono un insieme filtrato di APK della variante migliore per il dispositivo connesso o per la configurazione del dispositivo fornita.

Per casi d'uso avanzati in cui ti interessa generare suddivisioni APK solo da un archivio SDK per un'app specifica per dispositivi meno recenti, utilizza il comando bundletool build-sdk-apks-for-app come segue:

bundletool build-sdk-apks-for-app --app-properties=app-properties.json \
    --sdk-archive=sdk.asar --output=sdk.apks

Il file app-properties deve contenere i campi descritti nel file runtime_enabled_sdk_config.proto. Ecco l'aspetto del file app-properties:

{
  "package_name": "com.my.app",
  "version_code": 1234,
  "min_sdk_version": 21,
  "resources_package_id": 0x7e
}

Il comando bundletool build-sdk-apks-for-app genera il sottoinsieme di APK delle app che corrisponde ai contenuti dell'SDK sotto il nome del pacchetto dell'app. Puoi combinare questi APK con altri APK con i contenuti dell'app. Ad esempio, se li crei separatamente e in modo incrementale e li hai installati insieme su un dispositivo che non supporta il runtime dell'SDK.

Creazione e test di un bundle SDK (sperimentale)

Puoi utilizzare bundletool per creare un ASB e testare la generazione dei file necessari per l'installazione e la distribuzione.

Crea un bundle SDK

Puoi creare il tuo ASB dalla riga di comando e firmarlo utilizzando jarsigner.

Per creare un bundle SDK:

  1. Genera il manifest e le risorse del bundle SDK in formato proto seguendo gli stessi passaggi previsti per un app bundle.

  2. Pacchetti le risorse e il codice compilato dell'SDK in un file ZIP di base, come faresti con un modulo dell'app.

  3. Genera un file SdkModulesConfig.pb.json e un file SdkBundleConfig.pb.json, corrispondenti al formato descritto nella specifica bundle SDK Android.

  4. Crea il tuo ASB utilizzando il comando bundletool build-sdk-bundle, come segue:

bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \
    --sdk-modules-config=SdkModulesConfig.pb.json \
    --modules=base.zip --output=sdk.asb

La seguente tabella descrive in maggiore dettaglio i vari flag e le opzioni che puoi impostare quando utilizzi il comando bundletool build-sdk-bundle.

Tabella 3. Opzioni per il comando bundletool build-sdk-bundle

Segnala Descrizione
--modules (Obbligatorio) Il file del modulo da cui vuoi creare l'ASB finale.
--output (Obbligatorio) Il percorso in cui vuoi creare l'ASB.
--sdk-modules-config (Obbligatorio) Il percorso di un file JSON che descrive la configurazione dei moduli SDK. Per scoprire come formattare il file JSON, consulta la sezione Specifica dei bundle SDK Android.
--sdk-bundle-config Il percorso di un file JSON che descrive la configurazione del bundle SDK. Per scoprire come formattare il file JSON, consulta la sezione Specifica dei bundle SDK Android.
--metadata-file Il file in cui includere i metadati per l'ASB. Il formato del valore del flag è <bundle-path>:<physical-file>, dove <bundle-path> indica la posizione del file all'interno della directory dei metadati del bundle SDK e <physical-file> è un file esistente che contiene i dati non elaborati da archiviare. Il flag può essere ripetuto.
--overwrite Se impostata, questa opzione sovrascrive qualsiasi output esistente in precedenza.

Generare APK da un bundle SDK

Dopo aver creato l'ASB, puoi testare un bundle SDK a livello locale generando i relativi APK utilizzando il comando bundletool build-sdk-apks, come mostrato nel codice seguente:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks

Quando bundletool genera APK dal tuo bundle SDK, lo strumento include gli APK in un contenitore chiamato archivio set di APK, che utilizza l'estensione del file .apks. bundletool genera un singolo APK autonomo dal bundle SDK che ha come target tutte le configurazioni dispositivo.

Se vuoi eseguire il deployment dell'ASB su un dispositivo, devi includere anche le informazioni di firma dell'app, come mostrato nel seguente comando:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \
    --ks=keystore.jks \
    --ks-pass=file:/keystore.pwd \
    --ks-key-alias=KeyAlias \
    --key-pass=file:/key.pwd

La seguente tabella descrive in maggiore dettaglio i vari flag e le opzioni che puoi impostare quando utilizzi il comando bundletool build-sdk-apks.

Tabella 4. Opzioni per il comando bundletool build-sdk-apks

Segnala Descrizione
--sdk-bundle (Obbligatorio) Il percorso del bundle SDK. Deve avere l'estensione .asb.
--output (Obbligatorio) Per impostazione predefinita, il percorso in cui vuoi creare l'archivio del set di APK. In alternativa, se utilizzi --output-format=DIRECTORY, questo è il percorso della directory in cui vuoi archiviare gli APK generati.
--ks Il percorso dell'archivio chiavi che vuoi utilizzare per firmare gli APK generati.
--ks-key-alias L'alias della chiave da utilizzare nell'archivio chiavi per firmare gli APK generati.
--key-pass

La password della chiave nell'archivio chiavi da utilizzare per firmare gli APK generati.

Se passi la password in testo non crittografato, devi far precedere il valore da pass:. Ad esempio, pass:qwerty. Se la password è la prima riga di un file, devi far precedere il valore da file:. Ad esempio, file:/tmp/myPassword.txt.

Se questo flag non è impostato, viene provato a utilizzare la password dell'archivio chiavi. Se il problema persiste, il terminale a riga di comando ti chiederà una password.

--ks-pass

La password dell'archivio chiavi da utilizzare per firmare gli APK generati.

Se passi la password in testo non crittografato, devi far precedere il valore da pass:. Ad esempio, pass:qwerty. Se la password è la prima riga di un file, devi far precedere il valore da file:. Ad esempio file:/tmp/myPassword.txt.

Se il flag non è impostato, il terminale a riga di comando richiede una password.

--aapt2 Il percorso del programma binario AAPT2 da utilizzare.
--output-format Il formato di output per gli APK generati. Per impostazione predefinita, questa opzione è impostata su APK_SET, che inserisce gli APK nell'archivio del set di APK creato. Se impostato su DIRECTORY, gli APK vengono generati nella directory specificata da --output.
--verbose Se impostata, questa opzione stampa informazioni aggiuntive sull'esecuzione del comando nell'output standard.
--version-code Il codice di versione dell'SDK. Questo è il codice di versione utilizzato dalla piattaforma Android per installare l'APK, non la versione dell'SDK. Questa opzione può essere impostata su un valore arbitrario. Se non viene configurato, il valore predefinito è 0.
--overwrite Se impostata, questa opzione sovrascrive qualsiasi output esistente in precedenza.

Esegui il deployment, estrai e misura le dimensioni degli APK dell'SDK

Puoi seguire gli stessi passaggi utilizzati per le app per implementare APK su un dispositivo connesso, estrarre APK specifici per dispositivo da un set di APK esistente e misurare le dimensioni di download stimate degli APK in un set di APK.

Genera un archivio SDK da un bundle SDK

Dopo aver caricato l'ASB nel canale di distribuzione, ad esempio su Google Play, l'ASB viene trasformato in un archivio SDK Android (.asar) per la distribuzione agli sviluppatori di app tramite Maven. Per ulteriori dettagli sul formato, consulta la sezione sulla specifica del formato di SDK Archive.

Dopo aver creato l'ASB, puoi testare la generazione di un archivio SDK Android in locale utilizzando il comando bundletool build-sdk-asar, come mostrato nel seguente codice:

bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \
    --apk-signing-key-certificate=keycert.txt

La seguente tabella descrive in maggiore dettaglio i vari flag e le opzioni che puoi impostare quando utilizzi il comando bundletool build-sdk-asar.

Tabella 5. Opzioni per il comando bundletool build-sdk-asar

Segnala Descrizione
--apk-signing-key-certificate (Obbligatorio) Il percorso del certificato di firma dell'APK dell'SDK. Questo è il certificato corrispondente alla chiave che hai utilizzato per firmare gli APK nel comando build-sdk-apks.
--output (Obbligatorio) Il percorso in cui vuoi creare il file .asar.
--sdk-bundle (Obbligatorio) Il percorso del bundle SDK. Deve avere l'estensione .asb.
--overwrite Se impostata, questa opzione sovrascrive qualsiasi output esistente in precedenza.

Formati SDK abilitati per il runtime (sperimentali)

Gli SDK abilitati per il runtime introducono due formati file Android:

  • Il Android SDK Bundle (.asb), utilizzato per pubblicare l'SDK abilitato per il runtime negli app store.
  • Archivio SDK Android (.asar), utilizzato per distribuire l'SDK abilitato per il runtime su Maven.

Il formato del bundle SDK Android

Un bundle SDK è un formato di pubblicazione per gli SDK abilitati per il runtime. Contiene tutto il codice e le risorse dell'SDK, incluso il codice di qualsiasi libreria da cui dipende l'SDK. Non include il codice e le risorse di altri SDK abilitati per il runtime da cui dipende l'SDK.

Un Android SDK Bundle (ASB) è un file ZIP firmato con estensione .asb. Le risorse e il codice SDK sono organizzati in modo simile a ciò che si trova in un APK. Un ASB contiene anche diversi file di configurazione che consentono di generare gli APK installabili.

Figura 1. I contenuti di un bundle SDK Android.

Nell'elenco che segue vengono descritti in modo più dettagliato alcuni dei file ASB:

  • SdkBundleConfig.pb: un file di configurazione in formato proto contenente l'elenco degli SDK abilitati per il runtime da cui dipende l'SDK. Per la definizione completa, consulta il file sdk_bundle_config.proto.

  • modules.resm: un file ZIP contenente tutti i dati necessari per generare gli APK dall'SDK.

  • SdkModulesConfig.pb: un file di configurazione in formato proto. Questo file contiene il nome, la versione e il nome della classe dell'SDK del punto di ingresso dell'SDK per il framework (SandboxedSdkProvider). Per la definizione completa, consulta il file sdk_modules_config.proto.

  • base/: il modulo singolo contenente il codice e le risorse dell'SDK.

    • manifest/: il manifest dell'SDK in formato proto.
    • dex/: il codice compilato in formato DEX. Possono essere forniti più file DEX.
    • res/, lib/, assets/: queste directory sono identiche a quelle di un tipico APK. I percorsi in queste directory vengono conservati durante la generazione degli APK dell'SDK.
    • root/: questa directory archivia i file che vengono successivamente spostati nella directory principale degli APK dell'SDK. Ad esempio, potrebbero includere risorse basate su Java caricate dall'SDK utilizzando il metodo Class.getResource(). Vengono conservati anche i percorsi all'interno di questa directory.
    • BUNDLE-METADATA: questa directory include file di metadati che contengono informazioni utili per strumenti o app store. Questi file di metadati potrebbero includere mappature ProGuard e l'elenco completo dei file DEX del tuo SDK. I file in questa directory non sono pacchettizzati negli APK dell'SDK.

Formato Android SDK Archive

Un Archivio SDK Android è il formato di distribuzione di un SDK abilitato per il runtime su Maven. È un file ZIP con estensione .asar. Il file contiene tutte le informazioni necessarie agli strumenti di creazione delle app per generare un Android App Bundle che dipende dall'SDK abilitato per il runtime.

Figura 2. I contenuti di un Android SDK Archive Bundle.

Nell'elenco che segue vengono descritti in maggiore dettaglio alcuni file di archiviazione dell'SDK Android:

  • SdkMetadata.pb: un file di configurazione in formato proto contenente il nome dell'SDK, la versione e il digest del certificato per la chiave utilizzata per firmare gli APK generati per questo SDK. Per la definizione completa, consulta il file sdk_metadata.proto.

  • modules.resm: un file ZIP contenente tutti i dati necessari per generare gli APK dall'SDK. È uguale al file .resm nel Android SDK Bundle.

  • AndroidManifest.xml: il file manifest dell'SDK in formato XML di testo.

Risorse aggiuntive

Per scoprire di più sull'utilizzo di bundletool, guarda App Bundle: test dei bundle con bundletool e Play Console.