簡體   English   中英

android studio-庫項目內如何引用應用程序資源

[英]android studio - within library project how to reference app resources

我想將我的應用程序資源公開給我創建的庫項目。 該庫稱為auth(是firebase UI的一個分支),它是android studio中的一個庫模塊。 然后我有我的應用程序代碼來構建應用程序。 但我希望圖書館提供一些資源。 僅將資源復制到庫中會更好嗎? 我認為不是那樣占用更多空間。 我如何僅公開資源? 我的另一個想法是將所有資源都放在一個“公共庫”中,應用程序和auth都可以訪問它? 但這有點搞亂了我的干凈架構。 我可以做的另一件事是使庫依賴於應用程序。 因此將存在循環依賴關系。 可以嗎,因為那時不僅公開了我的資源,還公開了代碼?

我試圖將可繪制對象作為參數傳遞,但是正在尋找另一種解決方案,也許是在gradle中?

我不知道您為什么要完全做到這一點。 我無法想象應該使用任何極端情況,但是如果堅持下去,可以使用Resources.getIdentifier()來完成

int getIdentifier(字符串名稱,字符串defType,字符串defPackage)

范例:

resources.getString(resources.getIdentifier("app_name", "string", "app_package_name"))

我已經嘗試過了,並且效果很好,但是我不推薦它。

PS:我完全同意亨利的評論。

您可以將資源復制到庫中。 如果它們具有相同的名稱,則Android構建將僅合並資源,這樣您就不會重復。 請注意優先級,這取決於構建順序。

我只是想出了一種更聰明的方式來完成所有這些工作。 我們可以從樣式上做到這一點。 如果我在應用程序中覆蓋相同的庫樣式,則將影響庫(只要我們保持相同的名稱)。 這是執行miles_christian答案的一種方式。 這是基本概念:

在您的庫中聲明一種樣式,例如:

<style name="MyApp.my_library_style">
        <item name="drawableStartCompat">@drawable/fui_ic_phone_white_24dp</item>
        <item name="android:background">@drawable/mylibrary_logo</item>
        <item name="android:textColor">#ffffff</item>
    </style>

例如,如果要覆蓋應用程序樣式中的背景,則在應用程序中聲明完全相同的麥粒腫聲明,它將被覆蓋:

<style name="MyApp.my_library_style">
        <item name="drawableStartCompat">@drawable/fui_ic_phone_white_24dp</item>
        <item name="android:background">@drawable/myapp_logo</item>
        <item name="android:textColor">#ffffff</item>
    </style>

暫無
暫無

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

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