簡體   English   中英

課堂上的良好實踐搖籃風味

[英]Good Practice Gradle Flavors With Class

我正在尋找有關如何使用gradle樣式定義Android應用程序行為的信息。

假設我要在我的flavor1中而不是在flavor2中開始新的活動。

由於gradle不會相互覆蓋類,

我必須定義每種口味的活動

app/src/
     |-> flavor1/java/<package>/Activity.java
     |-> flavor2/java/<package>/Activity.java
     |-> main/java/<package>

或者,在我的主文件夾中定義它,並在Constant類中使用一個枚舉,如果我屬於我的flavor1或我的flavor2,則返回該枚舉

app/src/
     |-> flavor1/java/<package>/Constant.java
     |-> flavor2/java/<package>/Constant.java
     |-> main/java/<package>/Activity.java

我的猜測是我必須混合使用兩種解決方案:

  • 如果要在flavor1中創建唯一的活動,則必須在flavor2中創建相同的類,並且可能只是throw RuntimeException("stub!")
  • 如果要從main調用此活動,則必須使用諸如if (Constant.getFlavor() == flavor1)

我認為,這是使用gradle口味的最酷方法。 但是我想確定,到目前為止,沒有其他最佳方法可以在最終實現之前對其進行處理。

有沒有人在博客上寫過一些東西或想發表自己的看法? 我很想讀你!

提前致謝!

您可以在每種口味上放置不同的AndroidManifest文件。 例如,您可以在flavor1內定義(讓我們稱呼它)可選的Activity,在flavor1內擴展可選的Activity的Class,您就完成了! 請注意,風味AndroidManifest文件必須僅指定與主要AndroidManifest的區別:在這種情況下,您應該僅包含<activity/> (當然在空的<application/>

如果要避免if (Constant.getFlavor() == flavor1) ,則可以創建一個工廠類,該工廠類然后為該Activity返回正確的意圖。 然后在每種口味中將其覆蓋。 這樣可以避免使用if語句污染代碼。

暫無
暫無

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

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