Domanda

E 'bene avere coerenza nei nomi dei file.

MyActivity.java contiene la classe pubblico MyActivity

Vorrei il file xml con il suo layout di essere chiamato res / layout / MyActivity.xml

ma ottengo un messaggio di errore che dice "il nome del file non valido: deve contenere solo [a-z0-9 _.]"

Quindi due domande:

  1. Perché è il set di caratteri in modo limitato (nemmeno maiuscolo Andiamo?!) - Ah - questa restrizione è probabilmente a posto in modo da non essere avvitato dal file system che non fa distinzione tra superiore e minuscole, come di Apple HFS + (anche se vedi Wikipedia per la cruenta storia http: / /en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77 )

  2. Quali nomi di file sono limitati - tutti res? res solo / layout? res / layout di più alcune altre cartelle?

Qualcuno può confermare 1, e fornire dettagli sul 2?

Grazie,

Peter

È stato utile?

Soluzione

  

Perché è il set di caratteri in modo limitato

Poiché il nome deve essere un identificatore Java valido, in modo da poter utilizzare le costanti come R.layout.foo per identificare il layout in fase di esecuzione.

  

Quali nomi di file sono limitati - tutto   di res? res solo / layout? res / layout di   più alcune altre cartelle?

Tutto ciò in res/

Altri suggerimenti

Non sono sicuro del motivo per #1. Mai visto una spiegazione in ogni letture sulle risorse. Per #2 dalla mia esperienza tutto ciò che può essere utilizzato come un id in Java per esempio, R.drawable.marker, R.string.default_message deve seguire le regole della [a-z0-9_].

Quando si utilizza MacOS X come piattaforma di sviluppo, quasi ogni sviluppatore che fare con il codice cross-platform prima o poi correre la questione che il codice sorgente di un progetto Linux / UNIX non può essere costruita dopo il download / checkout / clone perché il progetto ha due file con lo stesso nome in una singola directory che variano solo in caso; e su OS X che mezzi si finisce con un solo file come il secondo sovrascrive il primo.

Naturalmente HFS + può essere maiuscole e minuscole, ma questo può essere configurata solo quando si formatta una partizione e per impostazione predefinita tutti i Mac sono dotati preinstallato OS X su una partizione preformattato con un case-insensitive HFS + (come quella è la modalità di default per HFS +). Così si avrebbe prima dovuto riformattare il Mac appena acquistato e reinstallare OS X per raggiungere tale obiettivo. E poi essere pronti per problemi come molte applicazioni si basano su caso-insensibilità su Mac; un esempio famoso è a vapore (non è possibile eseguire a vapore da un maiuscole e minuscole HFS +).

E non si tratta solo MacOS. FAT è case-insensitive e mentre NTFS può essere (proprio come HFS +) tra maiuscole e minuscole, non è per impostazione predefinita. Inoltre penso SMB non è come da protocollo spec (almeno le vecchie versioni). Il filesystem utilizzato sui CD non è, e così via.

Quindi credo che per evitare problemi dritto fin dall'inizio, Google ha pensato che è una buona idea per i file di forza di essere tutti in minuscolo, nel qual caso non importa che cosa filesystem che si sta utilizzando o come si è configurato. Naturalmente, questo è un po 'stupido, se è ancora possibile eseguire in quel problema con i file di codice sorgente, tuttavia, che questi possono essere maiuscole e minuscole è una decisione che precede Android e che sono stati compiuti da Sun molti anni prima di Google neppure sognato di quel sistema .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top