2014-04-10 91 views
0

這是我的場景,我使用Scala/SBT/android-sdk-plugin開發Android應用程序。在我的申請中,我打算使用ViewPagerIndicator將自定義任務插入到SBT中的內置任務依賴項中

它已經發布到Maven倉庫,所以我可以通過使用SBT的配置文件輕鬆地在我的項目中引用它。

但問題是,它包括它在自己的源代碼樹,這將編譯該項目過程中解壓到target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar依賴android-support-v4.jar

這將導致android:proguard崩潰,因爲SBT本身已經從依賴項導入了android-support-v4.jar。

我所做的是寫一個SBT任務可以刪除該文件,所以我build.sbt現在看起來如下:

import android.Keys._ 

import android.Dependencies.{apklib,aar} 

android.Plugin.androidBuild 

version := "0.0.1" 

scalaVersion := "2.10.4" 

organization := "idv.brianhsu.maidroid.ui" 

libraryDependencies += "com.viewpagerindicator" % "library" % "2.4.1" 

platformTarget in Android := "android-19" 

proguardScala in Android := true 

lazy val cleanupDuplicateJar = taskKey[Unit]("Remove duplicate jar") 

cleanupDuplicateJar := { 
    import java.io.File 
    println("Remove target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar") 
    val file = new File("target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar") 
    file.delete() 
} 

它工作得很好,但我不得不每次android:proguard之前手動運行cleanupDuplicateJar

當我運行android:proguard時,我怎麼能讓cleanupDuplicateJar自動運行?更具體地說,在android:proguard的所有內置依賴關係任務之後的時間點,如compile,以及之前的android:progurad自身。

或者我怎麼能聲明只使用android-sdk-plugins的內置設置忽略哪個jar?

回答

0

經過一番挖掘,我發現我可以通過在build.sbt處設置以下配置來排除JAR文件。

proguardLibraries in Android += new java.io.File("target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar") 
相關問題