Bir android projesinden kullanılmayan tüm kaynakları kaldırın


386

Kullanılmayan tüm düzenleri, dizeleri, çekilebilirleri, renkleri vb. Android res dizinimden kaldırmak istiyorum. Bana bir dosya listesi verecek herhangi bir araç var mı ve artık kullanılmayan belirli dosyaları (örneğin kullanılmayan dize girişleri) içindeki depom ve öğelerden kaldırabilir miyim?

Yanıtlar:


734

Kullanılmayan kaynakları Android Studio'dan kolayca arayabilirsiniz. Sadece basın CtrlAltShiftive " kullanılmayan kaynakları yazın " (tırnak işaretleri olmadan) yazın. Bu tüy bırakacak. Lif komutlarını (ve IDE'den diğer şeyleri) çalıştırmanın süper kolay yolu.

VEYA

In Android Studio Menüsü > Refactor > Kullanılmayan Kaynaklar dır ...

Kaldırmak istediğiniz kaynakları seçin. Kaynak öğesine sağ tıklayarak korumak istediğiniz kaynakları hariç tutabilirsiniz.

Tüm Kaynakları bir kerede kaldırmak için Do Refactor'u kullanın .

Güncelleme:OptionShifti mac için kullanın


55
cmd + Alt + Mac için Shift
Jesus Dimrix

5
@MikeMilla Silmek istediğiniz dosyalara sağ tıklayın ve "Lint Fixes Uygula" yazan seçeneğe tıklayın. Tek seferde birden fazla dosyayı silmek için seçin.
Saket Jain

28
Bu yaklaşımı kullanmanın programlı olarak kullanılan kaynakları da kaldıracağını unutmayın.
Prokash Sarkar

23
Tüm projemi
kırdım

7
AS 3.0 ile bu özellik kullanılan bazı düzen dosyalarını kaldırır. Bunu denemeden önce bir yedekleme veya git taahhüdü yapsanız iyi olur.
StoneLam

99

ADT 16'dan beri Android Lint'i kullanabilirsiniz . Gerçekten harika bir araç.

Android Lint, Android proje kaynaklarını potansiyel hatalar için tarayan ADT 16 (ve Araçlar 16) için yeni bir araçtır.

İşte aradığı hata türlerine bazı örnekler:

  • Eksik çeviriler (ve kullanılmayan çeviriler)
  • Düzen performansı sorunları (eski düzen aracı'nın bulmak için kullandığı tüm sorunlar ve daha fazlası)
  • Kullanılmayan kaynaklar
  • Tutarsız dizi boyutları (diziler birden çok yapılandırmada tanımlandığında)
  • Erişilebilirlik ve uluslararasılaşma sorunları (sabit kodlu dizeler, eksik içerik Açıklama, vb.)
  • Simge sorunları (eksik yoğunluklar, yinelenen simgeler, yanlış boyutlar vb.)
  • Kullanılabilirlik sorunları (metin alanında giriş türü belirtmemek gibi)
  • Bildirim hataları ve daha fazlası.

Ancak, bazı sorunları var (zaten sabit olup olmadıklarını bilmiyorum) ve yüzlerce sözde kullanılmayan kaynağı silmek istiyorsanız, Lint'in olmadığından emin olmak için projeyi kaynak kaldırma sırasında birkaç kez derlemenizi tavsiye ederim gereken bir şeyi kaldırın.


10
Özellikle xml yerine kodunuzda çok fazla kaynak araması yaparsanız, Lint'in kullanılmayan kaynaklar olarak ne önerdiğine çok fazla güvenmem. Lint, bu durumda, gerçekte oldukları sırada kullanılmayan birçok kaynağı bulacaktır.
MrJre

61
Android Studio'da, Kullanılmayan Bildirimler ve YöntemlerAnalyze > Inspect Code... de dahil olmak üzere bir dizi şeyi bulmak için kullanabilirsiniz .
Joshua Pinter

8
Komut satırını kullanmak istiyorsanız bir örnek:lint --check UnusedResources <project-path>
espinchi

41
Ama onları nasıl silebilirim?
Martin Pfeffer

1
Hepsini Extra Translationsbirlikte / otomatik olarak silmenin bir yolu var mı ?
rishabhmhjn

41

Eclipse'deki ADT desteği sona erdiğinden, Android Studio'yu kullanmalıyız.

Android Studio 2.0 ve üstü sürümlerde Refactor > Remove Unused Resources...

resim açıklamasını buraya girin


2
Öyle görünüyor ki bu şekilde kullanılan kaynaklar programlı olarak kaldırılıyor
THZ

1
Bir sonraki adımda Gözden Geçirmeyi unutmayın, aksi takdirde kullanılan bazı dosyalar da silinir.
Karan Sharma

38

Android için Gradle derleme sistemi "kaynakların küçülmesini" destekler: paketlenmiş uygulamada, derleme sırasında kullanılmayan kaynakların otomatik olarak kaldırılması. Projenizde çalışma zamanında gerçekten ihtiyaç duyulmayan kaynakları kaldırmanın yanı sıra, bu, kaynakları uygulamanız tarafından gerçekten gerekip gerekmediğine bağlı olduğunuz kitaplıklardan da kaldırır.

Bunu etkinleştirmek için sınıf dosyanızdaki shrinkResources true satırını ekleyin.

   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

Buradaki resmi belgelere bakın,

http://tools.android.com/tech-docs/new-build-system/resource-shrinking


2
shrinkResources öğesinin etkinleştirilmesi için bir koruma gerekir. i hv koruma sağlayan sorunlar :-(
Tixeon

shrinkResources sadece minifyEnabled doğruysa dikkate alınır minifyEnabled true
Eldhopj


15

Tiftik çalıştırırken birden fazla lezzet kullanıyorsanız dikkatli olun. Tiftik seçtiğiniz lezzete bağlı olarak yanlış kullanılmayan kaynaklar verebilir.


Bundan nasıl kaçınılır?
NickUnuchek

Şimdiye kadar bunu yapmanın bir yolunu bulamadım. Her lezzet için lif bırakma ve ardından her iki lezzet üzerinde kullanılmayan eşyaları işaretleme hariç.
MRodrigues

8

Android Studio 2.0 ve sonraki sürümlerde menüde Refactor'u seçin -> Kullanılmayan Kaynakları Kaldır'ı tıklayın ...

(veya)

kısayol da mevcuttur

Ctlr + Alt + Shift + i tuşlarına basın bir iletişim kutusu görünecek, sonra kullanılmayan yazacak, kullanılmayan kaynakları seçip kaldıracak birçok seçenek bulacaksınız


7

Android Studio'da,

Analiz Et -> Denetimi İsme Göre Çalıştır

(Windows / Linux'ta Mac shift + command + seçenek + i, Ctrl + Shift + A için kısayol).

Ve 'kullanılmayan kaynaklar' yazın.

Bu şekilde kullanılmayan kaynakları, değişkenleri, sembolleri, yerelleştirmeyi, kütüphaneleri kaldırabilirsiniz. Vb.

Listeden istediğiniz denetimi seçin, ardından inceleme kapsamını seçin -> Tamam resim açıklamasını buraya girin


6

Android Wear geliştiricilerinin dikkatine : "Kullanılmayan Kaynakları Kaldır", yetenek adını (res / değerleri / wear.xml) bildirdiğiniz xml dosyasını siler ve telefon saate bağlanamaz. Benim app bu hatayı anlamaya çalışırken saat geçirdim.


Ayrıca, örneğin yuvarlak mipmap simgelerini de kaldırır.
artem

Doğru. Genel olarak, 'Kullanılmayan Kaynakların Kaldırılması' çok fazla takip edilemeyen hata oluşturabileceği için önerilmemelidir.
steliosf

4

String.xml dosyasını kontrol etmek için.

Çok kolay (en azından Eclipse versiyonumda)

Eclipse for Android (v22.6.2-1085508 sürümüne sahibim)

  • "Paket gezgini" içinde proje adına sol tıklayın
  • "Android Araçları" nı seçin.
  • "Tiftik Çalıştır: Yaygın Hataları Kontrol Et" i seçin.

Şimdi strings.xml dosyasını açtığınızda, kullanılmayan dizenin vurgulandığını göreceksiniz.

Diğer olası sorunları çözebilirsiniz.


+1 güzel çözüm dostum. (: Proje Explorer'da sağ tıklayıp, seçeneğini Android Studio ile ps hemen hemen aynı .... tam olarak ne gerekli - O da seçilmiş çekler için tiftiği çalışmasını sağlar Analiz , seçmek Kodu kontrol edin veya İsme Göre Çalıştır Denetimi ): D
Trinimon

Bu, kullanılmayan dizelerin kaldırılmasında fazla yardımcı olmaz. Bunları eskisi gibi manuel olarak kaldırmanızı önerir misiniz?
Stan

"Lint" gerçekten "projenizi temizlemek" için mükemmel bir yoldur. Bunları hala manuel olarak kaldırmanız gerekir, ancak vurgulanır ve hemen kullanılmadığını görürsünüz. Orta büyüklükte bir proje için birkaç dakikalık çalışma. :)
Gabriel Klein

3

Belki de kullanışlı Andround Kullanılmayan Kaynaklar projenizi kullanılmayan kaynaklar için tarayacak bir Java uygulamasıdır. Kullanılmayan kaynaklar gereksiz yere yer kaplar, üretim süresini artırır ve IDE'nin otomatik tamamlama listesini karıştırır.

Bunu kullanmak için, çalışma dizininizin Android projenizin kökü olduğundan emin olun ve çalıştırın:

java -jar AndroidUnusedResources.jar

https://code.google.com/p/android-unused-resources/


1
Nereye koyarsam, doğru proje kökü olmadığını söylemeye devam ediyor
kingston

2

Shrink kaynaklarını o zaman doğru olarak tanımladığımızda, hangi kaynakları saklamak istediğimizi ve hangilerinin keep.xml adlı res / raw klasörüne xml dosyası eklemediğimizi de tanımlayabiliriz.

daha fazla gitmeden önce tek bir imzalı yapı oluşturmak ve check-in apk drawer-xhdpi-v4 bu test için kaldırmak istiyorum messenger_button_send_round_shadow.png vardır gösterecektir check-in aracı oluşturmak

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
       tools:shrinkMode="strict"
       tools:discard="@drawable/com_facebook_button_icon_blue.png,
       @drawable/com_facebook_button_icon_white.png,
       @drawable/com_facebook_button_like_icon_selected.png,
       @drawable/messenger_button_send_round_shadow.png,
       @drawable/messenger_*"  />

messenger_ * yaparak, çizilebilir klasördeki ad messenger'dan başlayan tüm dosyalar kaldırılacak veya başka bir şekilde kaldırılacak belirli bir dosyayı tanımladım

böylece bu şekilde kendi kütüphaneden dosyaları kaldırabilirsiniz kendi düzenleri de @ düzen / düzen adına göre düzenleri kaldırabilirsiniz eğer çizilebilir düzen tarafından kullanılmış ve böylece ....


1

Burada iyi araçlar öneren mükemmel cevaplar var

Ancak png çizilebilirleri (veya diğer görüntü dosyalarını) kaldırmak istiyorsanız ) istiyorsanız, tüm drawable-xxxx klasörlerini projenizden geçici bir klasöre taşımayı, ardından yeniden oluşturmayı ve derlemeye bir göz atmayı düşünmelisiniz. hangilerinin eksik olduğunu söyleyen bir mesaj listesi.

Bu, hangi kaynakları etkili bir şekilde kullandığınıza genel bir bakış almak ve belki de bunları bir ikon yazı tipi veya svg kaynaklarıyla değiştirmek istiyorsanız, muhtemelen Android Iconics kütüphanesinin yardımıyla özellikle yararlı olabilir .


bu zaman alıcıdır, ama bunun da bir çözüm olduğuna katılıyorum. Bunu şu anda yapıyorum
Dika

0

Android Varlıklar Görüntüleyicisi, .apk'nizde paketlenmiş grafikleri (çizilebilir olarak) görsel olarak incelemeye yardımcı olmak için tasarlanmıştır (ayrıca isterseniz res klasörünüzün bir zip dosyasını da yükleyebilirsiniz):

http://www.cellebellum.net/AndroidAssetsViewer/

Bu nedenle, kullanılmayan kaynakları kaldırmak için, olması gereken her şeyin olduğundan emin olmak için Lint kontrollerine paralel olarak iyi sonuç verebilir. Ayrıca, çekmecelerinizle ilgili birkaç olası sorunu daha belirlemenize yardımcı olur: yanlış kova, yanlış grafik vb.


0

Android Studio'da Lint'i çalıştırıp kullanılmayan tüm kaynakları bulduktan sonra, Denetleme sekmesinden bunlardan birine tıklayabilirsiniz. Sorun hakkında bazı ayrıntılar ve sorunu gidermek için birkaç seçenek sunar. Bunlardan biri Kullanılmayan Tüm Kaynakları Kaldır. Bu seçeneğin belirlenmesi, kullanılmayan tüm kaynakları siler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.