2011-08-07 90 views
0

當使用Android庫時,如果多個項目(主或庫)定義了相同的資源,則使用較高優先級項目的副本並替換前一個。自定義構建腳本以避免庫名稱衝突?

編寫可重用的庫時,這是一個問題,因爲它會強制您爲每個資源名添加前綴以避免衝突。有關該主題的更多信息,請參閱Android Parcel Project

現在我想要做的是一個腳本,它在編譯之前會將所有庫中的每個資源的名稱與它們的包名稱相加。爲此,我打算使用生成的ant構建腳本併爲其添加一個自定義步驟。

你知道這可能嗎?你看到更好的解決方案來解決這個問題嗎?

回答

1

你知道這是否可能嗎?

如果你有源代碼庫,我想你可以這樣做。我懷疑,任何你動態地引用資源ID(反射,getIdentifier()等)的地方都必須手動調整。考慮到您修改了代碼,您可能無法從圖書館作者那裏獲得幫助。

我也試圖說服圖書館作者在其圖書館的未來版本中添加資源前綴。

+0

我正在使用可插入的「模塊」(每個都是Android庫)製作可擴展的應用程序。所以在我的情況下,我可以要求模塊編寫者不要使用反射等。然後我會做一些類似於你的ParcelHelper的東西,但是在查找ID時會自動添加包名稱。這樣模塊開發人員可以完全忽略衝突問題。 – MasterScrat

+0

您的模塊開發人員別無選擇,只能自己處理前綴,除非您還要強制他們使用您的Ant腳本。畢竟,他們需要測試他們的模塊。 – CommonsWare

+0

好的,但是在任何情況下他們都需要SDK等,所以使Ant腳本成爲強制性的並不是一個真正的問題。我認爲這樣更方便,而不必使用前綴。 – MasterScrat