2014-04-10 1 views
0

여기에 제 시나리오가 있습니다. 스칼라/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 플러그인의 기본 설정을 사용하여 무시할 항아리를 선언 할 수 있습니까?

답변

0

파기가 끝난 후 다음 설정을 build.sbt에 설정하여 JAR 파일을 제외 할 수 있음을 발견했습니다.

proguardLibraries in Android += new java.io.File("target/apklibs/com.viewpagerindicator-library-2.4.1/libs/android-support-v4.jar") 
관련 문제