La libreria di supporto Android aumenta molto le size di APK

Sto utilizzando la libreria di supporto AppCompat nel mio progetto Android. AppCompat ha un sacco di disegni e risorse che non utilizzo nella mia applicazione. Questi file inutili aumentano la mia applicazione di 900K sopra i 2M , che non mi piace.
Esiste un modo per escludere questi file durante la creazione del file APK? Oppure dovrei obfuscare la libreria nel mio codice anziché fare una dipendenza? Sto utilizzando Gradle in Android Studio.

Grazie

  • Nessun internet su emulatore Android - perché e come risolvere?
  • get la latitudine e la longitudine utilizzando il codice postale
  • Errore SQLite '_id non è univoco' quando inserisce in una tabella vuota
  • L'emulatore dello studio Android non riesce a iniziare con un messaggio di errore relativo al limite di memory
  • Caricare l'image utilizzando okHttp
  • Ottenere un gestore da una discussione da servizio a attività
  • EDIT 1 Sto usando già proguard. ma proguard non può sapere che non voglio avere drawable-xxxhdpi o values-it ad esempio.

    EDIT 2 Sto usando anche Android Lint, che non mi può aiutare, perché non acceda direttamente al codice lib, e android li aggiunge quando crea il file APK.

  • Android Come disegnare una linea liscia dopo il dito
  • È ansible trasferire dati NFC da un dispositivo Android all'altro senza la schermata "Tocco a bundle"?
  • Condividere un'image con l'applicazione Google+ utilizzando Intent.ACTION_SEND e Intent.EXTRA_STREAM
  • È ansible applicare la chiave primaria nei campi di text nel database android
  • Come crittografare e decrittografare i file in Android?
  • Qual è la differenza tra ActivityCompat e ContextCompat?
  • 4 Solutions collect form web for “La libreria di supporto Android aumenta molto le size di APK”

    Da Android Gradel Build System, dalla versione 0.7.0:

    Nuova opzione sul prodotto Sapore (e defaultConfig ) consente di filtrare le risorse tramite l'opzione -c di aapt È ansible passare un valore singolo ( resConfig ) o più valori ( resConfigs ) tramite il DSL. Tutti i valori della configuration predefinita ei sapori vengono combinati e passati aapt . Vedere il campione "di base". Nel campione "base":

     defaultConfig { ... resConfig "en" resConfigs "nodpi", "hdpi" } 

    Quindi, prova a seguire quanto segue:

     productFlavors { ... frOnly { resConfig "fr" } ... } 

    Si noti che si potrebbe anche includere *dpi , port , land , ecc.

    La risposta è da: Android Studio esport le stringhe dalla libreria di supporto a APK , grazie a Primoz990

    A partire dalla versione 24.2.0, la libreria di supporto v4 è stata suddivisa in più moduli più piccoli .

    Quindi, oltre a utilizzare shrinkResources e proguardFiles , assicurati di utilizzare solo i moduli specifici necessari per l'applicazione. per esempio

    Se l'applicazione utilizza solo Compat util come NotificationCompat, ContextCompat o ResourcesCompat ecc., Utilizzare solo il module compat come:

     compile 'com.android.support:support-compat:24.2.0' 

    shrinkResources può anche essere un'opzione per voi. E 'disponibile a partire da 0,14 – ma fai attenzione – ha ancora qualche pozzo come proteggere le risorse quando si utilizza shrinkResources

    Sebbene OP abbia chiarito che utilizza proguard, vorrei inserire un codice se aiuta qualcuno perché posso ridurre la mia applicazione da 3,8 MB a 3,1 MB utilizzando la risposta accettata e poi solo a 1,8 MB tramite il proguard. Ho usato questa configuration nel mio file build.gradle di livello app:

     buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.