2017-07-04 11 views
8

Postanowiłem spróbować apk sliptting, aby zmniejszyć rozmiar mojej apk. Dodałem następujący plik do mojego pliku tworzenia gradleAPK podzielone według gęstości nadal zawiera wszystkie zasoby

splits { 

    // Configures multiple APKs based on screen density. 
    density { 

     // Configures multiple APKs based on screen density. 
     enable true 

     // Specifies a list of screen densities Gradle should not create multiple APKs for. 
     exclude "ldpi" 

     // Specifies a list of compatible screen size settings for the manifest. 
     compatibleScreens 'small', 'normal' 
    } 
} 

Pomyślnie wygenerowano osobne apki dla różnych gęstości. Zauważyłem jednak, że wszystkie apki były tej samej wielkości, żadna z nich nie była mniejsza niż uniwersalna apk. Więc załadowałem jeden (app-hdpi-release.apk) do analizatora apk i odkryłem, że zawiera on wszystkie zasoby. Żadne nie zostały usunięte.

Tak więc cała konfiguracja miała na celu wygenerowanie tego samego pliku APK z różnymi nazwami plików. Czy czegoś brakuje? Czy istnieją inne opcje kompilacji, które potencjalnie mogą blokować usuwanie zasobów?

+0

Czy jesteś pewny, że zasoby dzielone w rozciągliwych-xxx folderów poprawnie? – MatPag

+1

Tak, i działają one również poprawnie. Przetestowałem to, zaznaczając różne wersje obrazów o różnych gęstościach i sprawdzając, czy te odpowiednie są wyświetlane na różnych urządzeniach. – aaronmarino

Odpowiedz

0

Zrobiłem kilka trafień i prób i ostatecznie to się stało. Przed dzieleniem na podstawie gęstości ekranu TYLKO. Następnie dodałem tag $ compatibleScreens $ i zadziałało.

Oto ostateczny rozłam blokowych

android { 
  ... 
  splits { 

    density { 
      enable true 

      reset() 
      include "mdpi", "hdpi", "xhdpi",  "xxhdpi" 

      // This is the line of code which got it right 
      compatibleScreens 'small', 'normal', 'large', 'xlarge' 
    } 
  } 
} 
Powiązane problemy