2017-01-02 207 views
1

在我的AndroidManifest.xml文件我有會動態填入下面的元數據標籤:manifestPlaceholders值不是字符串

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="${FACEBOOK_APP_ID}"/> 

我gradle這個文件看起來像這樣:

manifestPlaceholders = [ 
       GOOGLE_PROJECT_ID: "A888844613784", 
       FACEBOOK_APP_ID: "888570042741264" 
     ] 

後「構建&組裝」,在清單文件中的FACEBOOK_APP_ID看起來是這樣的:

<meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="1481023616.000000" /> 

不幸的是,這不是一個字符串,而是一個浮點值。這是不正確的或我想要的。

我知道還有另外一種方法來定義string.xml文件中的FACEBOOK_APP_ID。但是,由於我有很多口味,如果我們將所有口味相關的參數放在build.gradle文件中而不是strings.xml文件中,它將會很好並易於維護。

有誰知道如何避免字符串浮動轉換?

回答

5

您可以使用下面的代碼字符串值從的build.gradle文件添加到您的字符串資源:

resValue 'string', 'FACEBOOK_APP_ID', 'facebook_application_id' 

但我不知道,如果AndroidManifest.xml文件不支持特定的味道字符串(我記得如果你嘗試,你會得到一個警告,但我不確定)。

你也可以嘗試空終止符添加到您的FACEBOOK_APP_ID manifestPlaceholder在 this回答提示:

FACEBOOK_APP_ID: "888570042741264\0" 

編輯:

代碼空終止方法似乎不直接從build.gradle文件中使用,但它在使用null結束符時仍然有效他AndroidManifest.xml文件:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="${FACEBOOK_APP_ID}\0"/> 
+1

謝謝。 resValue有效並且沒有警告。但FACEBOOK_APP_ID:「888570042741264 \ 0」不起作用。 – User9527

+0

感謝Rolf,現在android:value =「$ {FACEBOOK_APP_ID} \ 0」也可以。你太棒了! – User9527