2017-01-27 56 views
0

我有2個應用程序使用相同的圖像和資源,除了AppIcon。 一個常見的解決方案是爲src下的每個應用程序分別創建一個文件夾,並將gradle配置爲使用相應的文件夾。建立變體和不同的AppIcons

在我的情況下,99%的資源都來自兩個應用程序,但只有appicon是不同的。

我是否還必須使用具有不同res文件夾的機制,還是有更簡單的方法,所以我不必克隆所有資源?

我想我可以做這樣的事情: 我有一個AndroidManifest項如下:

<application android:name="bla.bla.MyApplication" android:largeHeap="true" android:icon="@drawable/icon" android:label="@string/app_name"> 

我可以在gradle這個覆蓋名跟隨,工作正常:

demo { 
    resValue "string", "app_name", "This is the Demo" 
    resValue "drawable", "icon", "demoicon" 
} 

有沒有辦法以同樣的方式覆蓋iconname?

正如你在上面的代碼片段中看到的,我已經嘗試過了,但是我得到一個 重複的資源錯誤,因爲我的demoicon保存在res/drawable下是自動生成的。

回答

0

如果你的口味的名稱,如生產,那麼:

android.sourceSets.production 
{ 
    res.srcDirs = ['res', '/path/to/production/res/dir'] 
} 

然後在你的/路徑/到/生產/清晰度/ DIR/drawable- *你有你的啓動器圖標。

+0

但隨後我必須將測試文件夾中的孔洞資源克隆到生產文件夾,並且我將不得不將文件夾資源翻倍,對嗎?我想分享除圖標以外的所有其他內容。 –

0

Isolved它通過以下方式:

我不想克隆的不同構建類型res文件夾,只改變應用程序圖標。

它可以用做manifestPlaceholders:

在我的build.gradle:

buildTypes { 
demo { 

      manifestPlaceholders = [iconpath:"@drawable/icon_timeline_test"] 
     } 

它將取代在AndroidManifest,當如下引用的圖標:

android:icon="${iconpath}"