Android 中 Scala 使用 .r 方法调用正则表达式出错的解决方式

今天尝试在 Android 的项目中使用, Scala 的 String.r 方法直接生成正则表达式, 结果编译无问题…
测试应用的时候, 却报错…
错误信息大致如下:

...
at scala.collection.immutable.StringLike$class.r(StringLike.scala:224)
at scala.collection.immutable.StringOps.r(StringOps.scala:31)
...

网上搜了一圈获得以下两种解决方式:
方式1, proguarde 参数添加:

-keep class scala.collection.SeqLike { *; }

这样的好处就是, 就是可以按照预期执行你的代码, 即使用 String.r 生成正则了, 但是坏处就是结果生成的 apk 文件会远大于之前的文件
PS: 如果采用此种方式, 执行编译前最好先 clean 一下项目

方式2, 使用 Regex
import scala.util.matching.Regex
后使用:

val exp = new Regex(“正则”)

的方式生成正则表达式对象, 但是编译结果的文件大小不会发生变化…

至于选用哪种方式, 就看你们自己了…我只能帮你到这里了…

博主整理编写, 属原创, 转载请注明出处

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.