我正在尝试使用Gradle发布我的Android应用程序.
一切正常,包括./gradlew clean build assembleRelease命令.
但是,只要我尝试使用proguard,Gradle就无法构建发布版本.
这是我得到的错误(堆栈跟踪激活):
...
:OSkin:validateDebugSigning
:OSkin:packageDebug
:OSkin:assembleDebug
:OSkin:prepareReleaseDependencies
:OSkin:compileReleaseAidl
:OSkin:generateReleaseBuildConfig
:OSkin:mergeReleaseAssets
:OSkin:compileReleaseRenderscript
:OSkin:mergeReleaseResources
:OSkin:processReleaseManifest
:OSkin:processReleaseResources
:OSkin:compileRelease UP-TO-DATE
:OSkin:proguardRelease
ProGuard, version 4.9
Reading input...
Reading program directory [/home/geantvert/workspace/OSkinProject/OSkin/build/classes/release]
:OSkin:proguardRelease FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':OSkin:proguardRelease'.
> Can't read [/home/geantvert/workspace/OSkinProject/OSkin/build/classes/release] (No such file or directory)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task …Run Code Online (Sandbox Code Playgroud) 我编写了一个解析器,它根据一些规则将String转换为Seq [String].这将在库中使用.
我试图将此Seq [String]转换为case类.案例类将由用户提供(因此无法猜测它将是什么).
我曾经想过无形的库,因为它似乎实现了很好的功能,看起来很成熟,但我不知道如何继续.
我发现这个问题有一个有趣的答案,但我找不到如何根据我的需要改造它.实际上,在答案中只有一种类型要解析(String),并且库在String本身内部迭代.它可能需要对事情的完成方式进行深刻的改变,我不知道如何做.
此外,如果可能的话,我想让我的图书馆用户尽可能简化这个过程.因此,如果可能,与上面链接中的答案不同,HList类型将从案例类本身猜测(但是根据我的搜索,似乎编译器需要此信息).
我对类型系统和所有这些美好的东西有点新,如果有人能给我一个如何做的建议,我会很开心!
亲切的问候
---编辑---
正如ziggystar所要求的,这里有一些可能需要的签名:
//Let's say we are just parsing a CSV.
@onUserSide
case class UserClass(i:Int, j:Int, s:String)
val list = Seq("1,2,toto", "3,4,titi")
// User transforms his case class to a function with something like:
val f = UserClass.curried
// The function created in 1/ is injected in the parser
val parser = new Parser(f)
// The Strings to convert to case classes are provided as an argument to the parse() …Run Code Online (Sandbox Code Playgroud)