編輯:初步解決方案失敗後,我做了一些清潔,也沒有與Proguard工作。請參閱下面的更新解
要解決此問題,我必須創建自己的自定義註釋處理器。這個處理器的想法是確保處理器爲Lombok和Parceler使用的處理器訂購。
這裏是我跟着來解決這個問題的步驟:
步驟1
根項目下創建一個新的Java模塊。叫它任何名字,例如parceler-lombok
,使用你選擇的任何類名/包。
步驟2
添加Lombok的和Parceler註釋類作爲依賴於新的模塊,並設置源兼容性。
//File: parceler-lombok/build.gradle
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'org.projectlombok:lombok:1.16.16'
compile 'org.parceler:parceler:1.1.9'
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
步驟3
在模塊的主源文件夾中創建以下目錄:的src /主/資源/ META-INF /服務
步驟4
在上面的目錄中創建一個名爲javax.annotation.processing.Processor
的文件。
步驟5
編輯文件,並且添加下列行。
lombok.launch.AnnotationProcessorHider$AnnotationProcessor
lombok.launch.AnnotationProcessorHider$ClaimingProcessor
org.parceler.ParcelAnnotationProcessor
這是模塊中可用的所有註釋處理器的聲明。訂單顯示,龍目島的註解處理器應該之前加載parceler的
步驟6
現在,我們有我們的「自定義註解處理器」,回到你的主應用程序模塊,爲您的build.gradle文件應用程序,請執行下列操作:
- 刪除龍目島的依賴(annotatorProcessor,提供或編譯)指令
- 取出parceler annotationProcessor依賴(即
org.parceler:parceler
),離開API的依賴原樣。
- 現在添加您的自定義註解處理器作爲依賴
- 最後,確保Java的1.7兼容性下面
見片段:
//File: app/build.gradle
android {
//...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
//...
}
dependencies {
// ...
//Remove these ones
//provided 'org.projectlombok:lombok:1.16.16'
//annotationProcessor 'org.parceler:parceler:1.1.9'
//leave parceler API
compile 'org.parceler:parceler-api:1.1.9'
provided project(':parceler-lombok')
}
使用提供保證註解處理器類不捆綁你的應用。
以下文章是非常有益的:
很高興看到有人從 「parcelers」 直接; d是啊,我猜到了。到現在爲止,我自己做了一個無參數構造函數。你推薦Hrisey嗎?它確實將兩個庫的使用合併爲一個。 –
我自己並沒有使用它,但它看起來會做伎倆。 –
顯然似乎Hrisey不再被維護... – ElyashivLavi