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
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
erhaltentry {
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
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" />
ist einfach mit diesen <meta-data android:name="com.google.android.geo.API_KEY" android:value="API_KEY"/>