这是我的场景,我正在使用Scala / SBT / android-sdk-plugin来开发Android应用程序。在我的申请中,我打算使用ViewPagerIndicator。
它已发布到maven资源库,因此我可以使用SBT的配置文件轻松地在我的项目中引用它。
但问题是它在自己的源代码树中包含了它的依赖项android-support-v4.jar
,在编译项目期间它将被解压缩到target/apklibs/com.viewpagerindicator-library-2.4.1/libs/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()
}
它工作得很好,但我必须在每次cleanupDuplicateJar
之前手动运行android:proguard
。
如何在运行cleanupDuplicateJar
时自动运行android:proguard
?更具体地说,在android:proguard
的所有内置依赖项任务之后的时间点,如compile
,以及android:progurad
之前的自我。
或者我怎么能通过使用android-sdk-plugins的内置设置来声明要忽略哪个jar?
答案 0 :(得分:0)
经过一番挖掘,我发现我可以通过在build.sbt
设置以下配置来排除JAR文件。
proguardLibraries in Android += new java.io.File("target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar")