2016-11-20 13 views
9

MinifyEnabled ve shrinkResources alt-optimal sonuçları verirken bu konuyla karşılaştım; ben dahil ettiğimde, henüz Google Sign In API'sini kullanmıyorum, görüntülerde çok fazla işaret alıyorum. sign_in_imagesKullanılmayan varlıkları 3. taraf kitaplığından kaldırma

Onları APK'mdan nasıl silebilirim? Onlar adil bir KB'ler eklemek gibi görünüyor.

Yukarıda açıklanan şekilde küçültme ve küçültme kaynaklarıyla proguard kullanıyorum.

+0

Pleasw http://stackoverflow.com/a/40742213/4069985 –

+1

cevabını alacağınız bu bağlantıya bakın. Bunun için yerleşik hiçbir şey yok. Henüz bir çekim yapmadım ama [bu Gradle script] 'i (https://stackoverflow.com/a/34525498/115145) deneyebilirsiniz. – CommonsWare

+0

@SrinivasKeerthiprakasam teşekkürler – Hades

cevap

4

Android geliştirici kullanıcı kılavuzunda here ayrıntılı bir konu var.

Temel olarak, kaynaklarınızı daraltarak gerçekte, apk'nızın boyutunu azaltmak için birçok seçeneğiniz vardır. Ben bunlarla ilgili kısa bir açıklama yaptım ve sanırım 'un sıkı referans kontrolleri probleminizi çözmemelidir, ancak odanızın boyutunu daha da azaltmak için mevcut tüm seçeneklere bakabilirsiniz. Doktor söylediği gibi

tutmak tutmaya karar vermek res/ham/keep.xml, aşağıda xml kullanmak ve korumak için değil ne kaynaklar


Özelleştirme:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools" 
    tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*" 
    tools:discard="@layout/unused2" /> 

Ayrıca, yapı sistemiyle de ilgilenilecek (Farklı yapı varyantları kullanılırken kullanışlıdır).


etkinleştirme sıkı referans kontrolleri

aşağıdaki gibi bir kod veya kütüphane referans kaynakları varsa: Bu durumda kaynak küçültücü içinde,

getResources().getIdentifier("image1", "drawable", getPackageName()) 

Ardından varsayılan ve işaretleri Savunmaya davranır Tüm kaynaklar, potansiyel olarak kullanılan ve kaldırılmak üzere kullanılamayacak eşleşen bir ad biçimine sahip.

Yani, bu sorunu çözmek gerekir ekleme

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools" 
    tools:shrinkMode="strict" /> 

/ham/keep.xml res aşağıdakileri ekleyin.


Kaldır kullanılmayan alternatif kaynaklar

Kaynak Küçültücü vb

Yani, farklı diller için alternatif kaynaklar gibi, alternatif çekilebilir kaynakları farklı ekran yoğunlukları için, alternatif dize kaynakları kaldırmaz, ne yapılacağını kendiniz seçebilirsin, derleme dosyasından diyelim ki, sen 'en' yerelinde dizeleri tutmak istiyorsun:

android { 
    defaultConfig { 
     ... 
     resConfigs "en", "fr" 
    } 
} 

Bu, boyutu önemli ölçüde azaltabilir.


hala kaynaklar, kaynak küçültücü tarafından tutulur, sonra elle ilk tartışılan yöntem kullanılarak onları dışlamak ve derlenmiş alırsa görmek ve eğer değilse, o kaynak küçültücü kaynaklara tutmak nedeni, belli olacak, düzgün inşa bina sırasında atılan istisnadan.

Umut eder! başka bir şey otomatik kurulum sistemine yapmak kullanılmayan kaynakları tespit etmek için çalışırsa

+0

Tüm bu yöntemleri denedim kardeşim. Hiçbir şey işe yaramadı. – Hades

3

, sen yoluyla bu hariç açıkça denemek isteyebilirsiniz packagingOptions DSL gibi:

android { 
    packagingOptions { 
     exclude '/**/common_google_signin*.png' 
    } 
} 
3

uygulama boyutunu azaltmak ve kaldırmak için bazı olasılıklar olabilir Kullanılmayan varlıklar.

Kullanılmayan varlıkları (':lib') proje kitaplığından silebilirsiniz. Bu

compile ('com.facebook.android:facebook-android-sdk:[email protected]'){ 
    exclude module: 'support-v4' 
} 

gibi bir şey yapabilirsiniz daha sen @aar dosyayı ithal varsa

Hala (':lib') için @aar, oradan varlıkları kaldırmak Yenisini alternatif yol bulmak daha @aar dosyasında kullanılmayan dosyaları var.

İlgili konular