2015-02-13 2 views
10

Ich schreibe eine Bibliothek, die von Entwicklern verwendet wird, und ich habe ein Konfigurationselement wie apiKey, environment und andere. Ich möchte Entwickler diese Werte festlegen, mein erster Gedanke war Java-Eigenschaftendatei, die ich in der Application-Klasse laden, aber ich habe gesehen, Google Play und Google Map SDK bitten die Entwickler, ihre apiKey in Meta-Tag-Tag in Android hinzuzufügen Manifest. Was ist der empfohlene Weg?Android-Konfiguration in Meta-Daten oder in der Eigenschaftendatei?

Antwort

8

Die empfohlene android Weise kann der Benutzer definieren Werte für Ihre Bibliothek aus dem Anwendungsmodul ist durch Meta-Tags

es ist so einfach wie mit diesen Code auf der lassen android-Manifest

<meta-data android:name="com.yourproject.apikey" android:value="apikey"/> 

und Sie können diese Werte aus Ihrer Bibliothek wie diese

erhalten
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 
} 

Die wichtigsten Vorteile dieses Ansatzes sind

1), die der Benutzer verschiedene Werte pro Gerätetyp definieren lassen kann z.B. Smartphone, Tablet oder sdk-Version (dies für Ihren Fall nicht anwendbar sein kann, aber es ist ein guter Punkt für sicher)

2) Sie komplexe Daten als Wert in Ihrem Meta-Tag hinzufügen, und Sie können verwenden Wenn Sie ein Zeichenfolgenarray mit dem gesamten Wert hinzufügen möchten, den Sie deklarieren möchten.

3) Da Meta-Tags sind im Grunde ein Bündel ist es für Sie einfacher zu

  • diese Werte lesen auf Ihrem Bibliothekscode.

  • Haben Sie Standardwerte, wenn der Benutzer die erforderlichen Meta-Tags nicht deklariert hat.

(Ich glaube, dass die Eigenschaften von Vermögenswerten Parsen ohne großen Vorteil mehr Code erforderlich)

4) Sie können auch Konfiguration Meta-Tags für Aktivitäten, die Anbieter und broadcastreceiver auf Ihrem AndroidManifest hinzufügen.

5) Auch ich nehme an, dass es einfacher ist, für die Verbraucher Ihrer Bibliothek zu bitten, ein paar Meta-Informationen auf seinem Android Manifest hinzuzufügen, als eine Eigenschaftendatei auf ihrem Vermögensordner hinzuzufügen. Und ich glaube, dass dies der Hauptgrund ist Grund Viele bekannte Bibliotheken verwenden diesen Ansatz wie Google-Play-Service, Google-Maps, Absturzberichterstattungsbibliotheken und viele Bibliotheken, die eine Benutzeranalyse bereitstellen.

Good Luck

3

Es ist scheint, dass unter Verwendung von Meta-Daten-Tag der Android Weg, dies zu erreichen, obwohl ich keine offizielle Dokumentation, warum streitet nicht finden kann.

Mit Meta-Daten können Sie Eigenschaftswert definieren anstelle eines statischen Wert auf eine Ressource verwenden, auf diese Weise Sie unterschiedliche Werte für die gleiche Eigenschaft auf der Grundlage der Ressourcen-Qualifikation bekommen. Dies ist sehr nützlich, wenn Ihre Immobilie internalisiert werden muss.

Ex:

<meta-data android:value="foo.bar" android:name="@string/hello" /> 
0

ist einfach mit diesen <meta-data android:name="com.google.android.geo.API_KEY" android:value="API_KEY"/>

Verwandte Themen