簡體   English   中英

元數據或屬性文件中的Android配置?

[英]Android configuration in meta-data or in properties file?

我正在編寫一個供開發人員使用的庫,我有一些配置項,如apiKeyenvironment等。 我想開發人員設置這些值,我首先想到的是使用我在Application類中加載的Java Properties文件,但我看到Google Play和Google Map SDK要求開發人員在Android的元數據標記中添加他們的apiKey表現。 推薦的方式是什么?

推薦的android方法讓用戶從應用程序模塊定義庫的值是通過元標記

它就像在android-manifest上使用這個代碼一樣簡單

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

你可以像這樣從你的庫中獲取這些值

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
}

這種方法的主要好處是

1)您可以讓用戶為每種設備類型定義不同的值,例如手機,平板電腦或sdk版本(這可能不適用於您的情況,但這肯定是一個好點)

2)您可以在元標記中添加復雜數據作為值,如果要添加包含要聲明的所有值的字符串數組,則可以使用此數據。

3)由於元標記基本上是一個包,因此更容易

  • 在庫代碼中讀取這些值。

  • 如果用戶尚未聲明所需的元標記,則具有默認值。

(我相信從資產中解析屬性需要更多代碼而沒有任何好處)

4)您還可以在AndroidManifest上為活動,提供者和廣播接收者添加配置元標記。

5)此外,我認為更容易請求您的庫的消費者在他的Android Manifest上添加一些元信息,而不是在他們的資產文件夾中添加屬性文件。我相信這是許多已知庫的主要原因使用這種方法,如google-play-service,google-maps,崩潰報告庫和許多提供用戶分析的庫。

祝好運

似乎使用元數據標簽是Android實現這一目標的方式,雖然我找不到任何官方文檔來爭論原因。

使用元數據,您可以使用資源而不是靜態值來定義屬性值,這樣您就可以根據資源限定符為同一屬性獲取不同的值。 如果您的房產需要內部化,這非常有用。

例如:

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

很容易使用這個<meta-data android:name="com.google.android.geo.API_KEY" android:value="API_KEY"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM