2015-03-09 22 views
24

Ho trovato una risorsa di stringa inutilizzato, come:Come eliminare una risorsa stringa non utilizzata per tutte le configurazioni in Android Studio?

<string name="obsoletestring">my name is null!</string> 

Tuttavia è in decine di file, di lingue diverse, in diversi strings.xml i file in values, values-af, values-be, ecc cartelle.

Devo essermi perso qualcosa per non sapere come farlo in Android Studio se non modificandolo a mano uno per uno.

tl; dr Come eliminare una risorsa stringa non utilizzata per tutte le configurazioni?

+5

'Menu -> Analizza -> Esegui ispezione per nome -> Risorse inutilizzate' – Blackbelt

+2

@Blackbelt è un buon modo per trovare risorse inutilizzate, esiste un modo per eliminarle automaticamente? – Apurva

+0

@Apurva perl è una bella opzione – Blackbelt

risposta

9

E 'ora possibile all'interno Android Studio. Dopo che Lint controlla si vede un'opzione a destra Rimuovi tutte le risorse inutilizzate!

enter image description here

Per cancellare una singola risorsa di stringa in tutti i file di localizzazione, è possibile utilizzare la "traduzione Editor". 1. Fare clic con il tasto destro sulla directory res per aprire l'editor di traduzione. 2. Seleziona il selettore "Mostra tutti i tasti" e scegli "Filtra per testo". Fornire il nome della risorsa che si desidera eliminare. 3. Selezionare la risorsa e fare clic sul pulsante "-"

+0

Come lo esegui? – FrenchFalcon

+0

Menu "Analizza" e "Controlla codice"! – chrisonline

+0

Come si elimina una singola risorsa tra più file locali? – inder

0

In effetti, Android Lint dovrebbe segnalare le risorse inutilizzate, ma è anche possibile provare con il plugin bello this.

2

Sfortunatamente, devi farlo manualmente.

Selezionare questa answer per capire che cosa esattamente si deve fare per sbarazzarsi di loro utilizzando Eclipse

Se si utilizza Android Studio trovare in tutta l'applicazione e anche rimuovere manualmente .. Verificare questo answer

20

Per identificare tutte le risorse non utilizzate:

  • Aprire Menu> Analizza> Esegui ispezione per nome ...
  • Selezionare "Risorse inutilizzate"
  • Assicurarsi che Intero progetto sia selezionato, quindi premere OK.
  • Sfoglia l'elenco. È sempre possibile rieseguire l'ispezione con il pulsante Riesegui.

Non esiste un modo veramente semplice in Android Studio (v 1.0) per rimuovere una stringa di risorse per tutte le impostazioni internazionali. Tuttavia, puoi cercare e sostituire i file. Fortunatamente, i file di traduzione usano solo una riga nella maggior parte dei casi, quindi funziona abbastanza bene.

In Android Studio:

  • Inizia senza cambiamenti in corso nel controllo del codice sorgente (rende più modo più semplice per controllare e indietro se questo va male).
  • Aprire Menu> Modifica> Trova> Sostituisci nel percorso ...
  • nel testo da trovare: .*name="obsoletestring".*\n
  • In Sostituire con: (vuoto)
  • controllare espressioni regolari
  • Premere il pulsante Trova.
  • Controllare i risultati. Se ok, premi il pulsante "Tutti i file".
  • Probabilmente sarà necessario rimuovere manualmente il commento in res/values ​​/ strings.xml.
  • Assicurati che il tuo progetto sia ancora pronto.
  • Dai un'occhiata al diff del tuo progetto nel tuo controllo sorgente per assicurarti che il cambiamento sia davvero quello che intendevi ...
5

Fino supporto IDE arriva, qualcosa in questo senso funziona:

find -name strings.xml|xargs -rd\\n sed -ri '/"string_to_delete"/d' 
+0

Risposta stupenda!Sarebbe meglio se venissero gestiti anche i tag di stringa multi-linea. –

+0

Questo non sembra funzionare. Errore: '' 'xargs: illegal option - r''' – inder

+0

' -r' (alias come '--no-run-if-empty') probabilmente non è disponibile nella versione di xargs del tuo sistema. Forse prova il modulo lungo. Secondo [changelog] (http://ftp.gnu.org/pub/gnu/findutils/), sembra che sia disponibile da circa 27 anni e lo vedo sulla versione del mio sistema, v4.7.0-git. –

1
  1. Menu -> Analizzare -> Esegui ispezione per nome -> risorse non utilizzate
  2. Dai risultati selezionare tutte le risorse stringa non utilizzate.

    • pulsante destro del mouse evidenziato file e scegliere "Elimina con @SuppressLint (Java) o strumenti: ignorare (XML)". Ciò aggiungerà gli strumenti di attributo: ignora tutte le stringhe in tutti i file di stringhe.
  3. Menu -> Trova -> Sostituire in Percorso

    • Testo da trovare:.?.?^* Strumenti: ignorano = "UnusedResources" * \ n
    • Tick box espressione regolare
    • Usa ambito: personalizzato
      • editor di campo di applicazione aperto personalizzato e aggiungere modello: file [App]: src/main/res // strings.xml
    • Trova
    • Ecc
3

In Android Studio 2.3 è possibile rimuovere tutte le risorse inutilizzate.

  • Aprire qualsiasi * .xml nella tua res/valori/directory
  • clic destro sul nome di qualsiasi oggetto
  • Refactor -> Remove Unused Resources...
+0

Stai attento a questo. Ha eliminato anche le risorse ancora in uso. :-( – themarketka

0

Attenzione che il comando Remove risorse non utilizzate non può riconoscere una risorsa di programmazione si accede come risorsa usata (come getIdentifier (..) ecc.). Quindi, se si accede alle risorse in questo modo, è altamente rischioso usare quel comando !!

Problemi correlati