2013-12-15 10 views
11

È possibile configurare Gradle per creare alcuni file di apk di Android in cui ognuno utilizza una sola cartella di tipo risorsa?Build di gradle per ogni cartella di risorse

voglio dire:

  • accumulo hdpi.apk
  • accumulo mdpi.apk
  • accumulo xhdpi.apk

So che avrei potuto semplicemente eliminare alcune cartelle prima di costruire , ma sarebbe bello se potessi realizzarlo "automagicamente".

Sarebbe possibile utilizzare "sapori" gradle?

+0

perché dovrebbe avete bisogno? – panini

+0

La mia app contiene grandi quantità di foto e voglio distribuirle come 3 app separate, in modo da poter ridurre la dimensione del file. Il download di risorse da parte dell'utente dopo l'installazione dell'app è fuori discussione perché voglio che sia pronto per l'uso. – scana

risposta

9

Ora possiamo anche usare API divide http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits

Esempio Dal link docs:

android { 
    ... 
    splits { 
     density { 
     enable true 
     exclude "ldpi", "tvdpi", "xxxhdpi" 
     compatibleScreens 'small', 'normal', 'large', 'xlarge' 
    } 
} 
  • abilitazione: consente esimo e meccanismo di split densità
  • escludi: Per impostazione predefinita tutte le densità sono incluse, è possibile rimuovere alcune densità.
  • include: indicare le densità da includere
  • reset(): reimposta l'elenco delle densità da includere in una stringa vuota (ciò consente, in congiunzione con include, di indicare quale utilizzare anziché quali) ignorare)
  • compatibleScreens: indica un elenco di schermi compatibili. Questo inietterà un nodo corrispondente nel manifest. Questo è opzionale.

Esempio in AOSP: https://android.googlesource.com/platform/tools/base/+/2101d189d85dd46f865726b9b7aa0012832a6d9c/build-system/tests/regular/densitySplit/build.gradle

+0

Grazie per un collegamento all'esempio !!! Di solito così difficile da trovare ... – speedynomads

+0

Felice, ho potuto aiutare –

+0

Molto bello, cercavo lo stesso da ultimi giorni. – Smeet

8

Non è ancora possibile, ma 0.7.0 avrà questa funzione.

Avrete bisogno di creare 3 sapori di prodotto (o più se volete supportare tutte le densità), e avrete una proprietà flavor per limitare ciò che pacchetto nell'apk.

0.7.0 sarà fuori a breve.

Si noti che il supporto Multi APK nel Play Store non supporta la densità come filtro, che si presenterebbe come 3 diverse app nello store che non è ciò che si vorrebbe. Edit: questo è in realtà supportato da APK multiple: http://developer.android.com/google/play/publishing/multiple-apks.html

Edit2:. Ora che 0.7 + è fuori, è possibile effettuare le seguenti operazioni:

android { 
    productFlavors { 
    mdpi { 
     resConfigs "mdpi", "nodpi" 
    } 
    hdpi { 
     resConfigs "hdpi", "nodpi" 
    } 
    xhdpi { 
     resConfigs "xhdpi", "nodpi" 
    } 
    } 
} 
+0

Sei sicuro con quel filtro densità? http://developer.android.com/google/play/publishing/multiple-apks.html dice che posso usare: Dimensioni dello schermo (e, facoltativamente, densità dello schermo) – scana

+0

Hmm Immagino che tu abbia ragione! –

+0

Accetto la tua risposta, ma sarebbe bello se tu (o io :)) potessi fornire un semplice esempio di utilizzo degli aromi per limitare le cartelle. Ci lavorerò tra qualche giorno, quindi cercherò di pubblicare alcuni risultati qui. – scana

Problemi correlati