[com.mycom.mylib.myapp] res\drawable\main_background.xml:0: error: Resource entry main_background is already defined.
[com.mycom.mylib.myapp] res\drawable\main_background.png:0: Originally defined here.
Non credo che si possa avere lo stesso nome di file anche con estensioni diverse. Prova a nominare il png qualcos'altro.
Ora, non ho usato l'override, quindi questo sembra strano come ci si aspetterebbe che questo sia il modo in cui si sostituisce la risorsa. Comunque penso che tu abbia o meno le due risorse nella tua lib nominate allo stesso modo. E che nel tuo progetto potrebbe essere ok avere una risorsa con lo stesso nome. Vorrei comunque controllare che sia ok per avere tipi diversi. XML è diverso da png, e se accedi alla risorsa dal codice potresti ottenere errori di tipo.
Permettetemi di chiarire il punto precedente. Comprendo che un progetto di libreria può avere un articolo con lo stesso ID di risorsa di un elemento nell'applicazione.
Tuttavia, l'errore precedente suggerisce che sia main_background.png che main_background.xml si trovano nello stesso progetto ([com.mycom.mylib.myapp]) che non credo sia corretto.
Ulteriore lettura
Questa pagina descrive i diversi tipi di progetti, tra cui il progetto di libreria http://developer.android.com/tools/projects/index.html
Ora io non so dove ho avuto l'impressione di aver guardato di nuovo, ma semplicemente non lo fa indicare ovunque che è possibile sovrascrivere una risorsa utilizzando lo stesso nome di risorsa. Dio solo sa perché ho pensato che fosse una caratteristica.
Quindi no, la stessa regola si applica per quanto posso dire, che le risorse devono essere denominate in modo univoco anche attraverso i progetti di libreria, altrimenti gli ID di risorsa generati entreranno in conflitto. (L'errore si ottiene)
Ciò che viene spiegato è come vengono gestiti i conflitti di risorse.
Resource conflicts Since the tools merge the resources of a library project with those of a dependent application project, a given resource ID might be defined in both projects. In this case, the tools select the resource from the application, or the library with highest priority, and discard the other resource. As you develop your applications, be aware that common resource IDs are likely to be defined in more than one project and will be merged, with the resource from the application or highest-priority library taking precedence.
Il sistema utilizzerà la risorsa con la massima priorità, scartando tutto il resto. Che strano, è che si potrebbe pensare che un errore di compilazione non si verificherebbe in quanto il compilatore dovrebbe scartare la risorsa. Ciò mi fa pensare che il poster originale avesse le risorse con lo stesso nome nello stesso stesso progetto, e non attraverso la lib e il progetto.
Non ho letto da nessuna parte che questa sia effettivamente una funzione prevista. Hai qualche link per dire altrimenti? (commentali)
hai ancora qualche soluzione a questo problema? – Sam
Siamo spiacenti. Ho rinunciato a questo. Alla fine ho fatto un png che sembrava il mio xml. Sono ancora sconvolto dal fatto che ho dovuto sprecare quei kB :) – l33t