여기에 제 시나리오가 있습니다. 스칼라/SBT/android-sdk-plugin을 사용하여 Android 애플리케이션을 개발하고 있습니다. 신청서에 ViewPagerIndicator을 사용할 계획입니다.SBT에서 빌드 태스크의 종속성에 사용자 정의 태스크를 삽입하십시오.
maven 저장소에 게시되었으므로 SBT의 config 파일을 사용하여 프로젝트에서 쉽게 참조 할 수 있습니다.
그러나 문제는 프로젝트를 컴파일하는 동안 target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar
에 압축이 풀리는 자체 소스 트리에 종속성 이 포함되어 있다는 점입니다.
android-support-v4.jar는 이미 SBT 자체에서 종속성으로 가져 오기 때문에 android:proguard
이 중단됩니다.
무엇 내 build.sbt
이제 다음과 같은 그래서 나는, 그 파일을 삭제하는 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
이 자동으로 실행되게하려면 어떻게해야합니까? 더 구체적으로 말하자면, 의 모든 내장 종속성 작업 후, compile
과 같은 시점에, 그리고 android:progurad
전에는 자체입니다.
또는 어떻게 안드로이드 SDK 플러그인의 기본 설정을 사용하여 무시할 항아리를 선언 할 수 있습니까?