Sto scrivendo una libreria utilizzata dagli sviluppatori e ho elementi di configurazione come apiKey
, environment
e altri. Voglio che lo sviluppatore stabilisca questi valori, il mio primo pensiero era usare il file delle proprietà Java che carica nella classe Application, ma ho visto Google Play e Google Map SDK chiedere agli sviluppatori di aggiungere il loro apiKey nel tag dei meta-dati in Android Manifesto. Qual è il modo consigliato?Configurazione Android nei metadati o nel file delle proprietà?
risposta
Il modo in cui Android consigliata per permettere all'utente di definire i valori per la libreria dal modulo applicativo è attraverso meta-tag
E 'facile come utilizzare questo codice a Android-manifesto
<meta-data android:name="com.yourproject.apikey" android:value="apikey"/>
e si può ottenere questi valori dalla libreria come questo
try {
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = applicationInfo.metaData;
String apiKey = bundle.getString("com.yourproject.apikey");
} catch (NameNotFoundException e) {
//Resolve error for not existing meta-tag, inform the developer about adding his api key
}
I principali vantaggi di questo approccio sono
1) Che si può consentire all'utente di definire diversi valori per il tipo di dispositivo esempio telefono, tablet o SDK versione (questo potrebbe non essere applicabile per il vostro caso, ma è un buon punto di sicuro)
2) È possibile aggiungere dati complessi come il valore nella vostra meta-tag, ed è possibile utilizzare questo se si desidera aggiungere un array di stringhe con tutto il valore che si desidera dichiarare.
3) Dal momento che i meta-tag sono fondamentalmente un fascio è più facile per voi per
leggere questi valori sul codice della libreria.
Hanno valori predefiniti se l'utente non ha dichiarato i meta-tag richiesti .
(credo che l'analisi di oggetti di beni richiede più codice senza alcuna grande vantaggio)
4) È inoltre possibile aggiungere configurazione meta-tag per le attività, i fornitori e broadcastreceiver sul AndroidManifest.
5) Suppongo anche che sia più semplice richiedere ai consumatori della tua libreria di aggiungere alcune meta informazioni sul suo Android Manifest, piuttosto che aggiungere un file di proprietà nella loro cartella di risorse. E credo che questo sia il principale motivo Molte librerie conosciute utilizzano questo approccio come google-play-service, google-maps, librerie di segnalazione degli arresti anomali e molte librerie che forniscono l'analitica dell'utente.
Good Luck
Sembra che l'utilizzo del tag meta-data sia il modo Android per raggiungere questo obiettivo, anche se non riesco a trovare alcuna documentazione ufficiale per discutere il motivo.
Utilizzando i meta-dati è possibile definire il valore della proprietà utilizzando una risorsa anziché un valore statico, in questo modo è possibile ottenere valori diversi per la stessa proprietà in base al qualificatore delle risorse. Questo è molto utile se la tua proprietà ha bisogno di interiorizzazione.
Es:
<meta-data android:value="foo.bar" android:name="@string/hello" />
è facile utilizzare questo <meta-data android:name="com.google.android.geo.API_KEY" android:value="API_KEY"/>
- 1. Memorizzazione della mappa nel file delle proprietà
- 2. La proprietà non esiste errore nel file di configurazione checkstyle
- 3. contesto Primavera configurazione delle proprietà-placholder ehcahe
- 4. Leggi la configurazione di Celery dal file delle proprietà Python
- 5. Android, come impostare i metadati nel file MP4?
- 6. C# Applicazione - memorizzazione delle preferenze nel database o nel file di configurazione?
- 7. Come si scappano i due punti (:) nel file delle proprietà?
- 8. Java: come scrivere "arabo" nel file delle proprietà?
- 9. Errore durante la configurazione delle proprietà nel passaggio "Invia e-mail" nel processo CRM 2013
- 10. Configurazione di ibernazione sia nel file che nel codice
- 11. Recupero dei parametri dal file delle proprietà
- 12. Variabili d'ambiente o file di configurazione YAML
- 13. Come posso rendere obbligatorie le proprietà nei file delle proprietà in primavera?
- 14. Spring Boot come nascondere le password nel file delle proprietà
- 15. Libreria di file delle proprietà per C (o C++)
- 16. wildfly: lettura delle proprietà dalla directory di configurazione
- 17. Come posso evitare che i nomi delle proprietà nei diagrammi delle classi vengano ordinati?
- 18. Definizione delle proprietà nel file di intestazione rispetto all'obiettivo del file di implementazione c
- 19. Ordine delle righe nei file manifest Java
- 20. Proprietà Maven nei file apt del sito
- 21. Aggiornamento delle proprietà dell'oggetto nel ramoscello
- 22. Posso definire le Proprietà di sistema nei file di configurazione di Spring Boot?
- 23. Leggere le proprietà pdf/metadati in python
- 24. Utilizzo delle proprietà nei modelli di acquisizione in modalità org
- 25. Spring - Sostituzione dei valori delle proprietà del bean con i nuovi valori del file delle proprietà
- 26. Java - Configurazione file di proprietà Spring per il file jar
- 27. Stringhe WinForms nei file di risorse, cablate nel designer
- 28. L'attributo ApiMember non viene visualizzato nei metadati generati da ServiceStack
- 29. MongoDB - textSearchEnabled - specificare nel file di configurazione
- 30. Configurazione valore dipendente nel file Info.plist