我有一个Android Scala应用程序,它使用SBT + ProGuard进行构建。
在图书馆项目中我有这个:
package es.fcc.bibl.bd.sincr
class Columna[T] { ... }
class TablaBase {
lazy val columnas: List[Columna[_]] = ....
}
trait Soporte {
this: TablaBase =>
def fabricaSoporte(w: Writer, cols: List[Columna[_]] = columnas) {
}
在我的应用代码中,我有这个:
package es.fcc.incidencias.bd
object sgiein extends TablaBase with Soporte { .... }
在构建我的项目时,我得到了这些神秘的错误:
Warning: es.fcc.incidencias.bd.sgiein: can't find referenced method 'void es$fcc$bibl$bd$sincr$TablaBaseSincronizada$_setter_$cols_$eq(scala.collection.immutable.List)' in program class es.fcc.incidencias.bd.sgiein$
Warning: es.fcc.incidencias.bd.sgiein: can't find referenced method 'scala.collection.immutable.List cols()' in program class es.fcc.incidencias.bd.sgiein$
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
问题与参数cols
的默认值有关。
如果我删除了那个参数,那么一切都可以构建好。
我试图将ProGuard选项更改为这些,但没有运气:
-keepclassmembers class es.fcc.bibl.bd.sincr.TablaBaseSincronizada* {
** *(**);
}
-keepclassmembers class es.fcc.incidencias.bd.* {
** *(**);
}
我不明白为什么我遇到这个问题。
答案 0 :(得分:0)
我得出的结论是,可以安全地忽略这些错误。
ProGuard
必须是一些内部错误。
出于此目的,在-dontwarn
配置中使用ProGuard
指令。