2015-02-13 19 views
10

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

8

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

3

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" /> 
0

è facile utilizzare questo <meta-data android:name="com.google.android.geo.API_KEY" android:value="API_KEY"/>

Problemi correlati