我在以下项目中使用pfn / android-sdk-pluginbuild.sbt
:
import android.Keys._
android.Plugin.androidBuild
platformTarget in Android := "android-19"
name := "LDApp"
organization := "com.myapps.app.android.ldapp"
version := "1.0"
scalaVersion := "2.10.4"
useProguard in Android := true
libraryDependencies ++= Seq (
"com.myapps.libraries.android" %% "androidlibs" % "0.1-SNAPSHOT"
)
proguardCache in Android ++= Seq (
ProguardCache("androidlibs") % "com.myapps.libraries.android" %% "androidlibs",
ProguardCache("appcompat-v7") % "com.android.support" % "appcompat-v7"
)
每当尝试执行sbt android:run
时Duplicate entry
,都会出现错误,因为包含了appcompact-v7 myapps.libraries.android
,这就是为什么我没有明确包含在此应用程序中的原因。以下是错误日志
Copying resources from program jar [/Users/android/tmp/tmp/projects/LDApp/bin/classes.jar] (filtered)
java.io.IOException: Can't write [/Users/android/tmp/tmp/projects/LDApp/bin/classes.proguard.jar] (Can't read [/Users/android/tmp/tmp/projects/LDApp/bin/classes.jar(;;;;;;!META-INF/**,!rootdoc.txt)] (Duplicate zip entry [classes.jar:android/support/v7/appcompat/R$styleable.class]))
at proguard.OutputWriter.writeOutput(OutputWriter.java:264)
at proguard.OutputWriter.execute(OutputWriter.java:160)
at proguard.ProGuard.writeOutput(ProGuard.java:372)
at proguard.ProGuard.execute(ProGuard.java:153)
at android.Tasks$$anonfun$77.apply(tasks.scala:1197)
at android.Tasks$$anonfun$77.apply(tasks.scala:1171)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: Can't read [/Users/android/tmp/tmp/projects/LDApp/bin/classes.jar(;;;;;;!META-INF/**,!rootdoc.txt)] (Duplicate zip entry [classes.jar:android/support/v7/appcompat/R$styleable.class])
at proguard.InputReader.readInput(InputReader.java:232)
at proguard.InputReader.readInput(InputReader.java:202)
at proguard.OutputWriter.writeOutput(OutputWriter.java:253)
at proguard.OutputWriter.execute(OutputWriter.java:160)
at proguard.ProGuard.writeOutput(ProGuard.java:372)
at proguard.ProGuard.execute(ProGuard.java:153)
at android.Tasks$$anonfun$77.apply(tasks.scala:1197)
at android.Tasks$$anonfun$77.apply(tasks.scala:1171)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: Duplicate zip entry [classes.jar:android/support/v7/appcompat/R$styleable.class]
at proguard.io.JarWriter.getOutputStream(JarWriter.java:139)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:105)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:105)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.java:92)
at proguard.io.ClassRewriter.read(ClassRewriter.java:68)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.JarReader.read(JarReader.java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
at proguard.InputReader.readInput(InputReader.java:228)
at proguard.InputReader.readInput(InputReader.java:202)
at proguard.OutputWriter.writeOutput(OutputWriter.java:253)
at proguard.OutputWriter.execute(OutputWriter.java:160)
at proguard.ProGuard.writeOutput(ProGuard.java:372)
at proguard.ProGuard.execute(ProGuard.java:153)
at android.Tasks$$anonfun$77.apply(tasks.scala:1197)
at android.Tasks$$anonfun$77.apply(tasks.scala:1171)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
[error] (android:proguard) java.io.IOException: Can't write [/Users/android/tmp/tmp/projects/LDApp/bin/classes.proguard.jar] (Can't read [/Users/android/tmp/tmp/projects/LDApp/bin/classes.jar(;;;;;;!META-INF/**,!rootdoc.txt)] (Duplicate zip entry [classes.jar:android/support/v7/appcompat/R$styleable.class]))
[error] Total time: 34 s, completed 5 Sep, 2014 6:15:10 PM
R$styleable.class
尽管解决方案中遇到的类似问题没有帮助,但它还是作为应用程序的一部分生成的,也是Compact-v7库的一部分,如何解决此问题。
我从“ scala-on-android”的Google组获得了解决方案。作者PFN / Android的SDK-插件提供的解决方案。这是解决方案
由于androidlibs
是库项目,因此build.sbt
必须具有libraryProject in Android := true
,这使插件不包含R.java & TR.scala
库的resource()文件。如果应用程序引用了“紧凑”库资源,则必须将库明确包含在应用程序的“ libraryDependencies”中。typedResources in Android := false
必须包含在本地库中,以防您的库不生成资源文件
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句