【问题标题】:android + scala + preinstalled scala libraries + disabled proguard throws ClassNotFoundExceptionandroid + scala + 预装的 scala 库 + 禁用的 proguard 抛出 ClassNotFoundException
【发布时间】:2013-02-25 12:02:17
【问题描述】:

此壮举的最终目的:通过快速编译使用android设备进行开发,而无需每次都使用proguard(这会导致巨大的延迟)

第一次尝试是在 索尼爱立信 Xperia Mini Pro

我已经在其中安装了 Cyanogenmod,它已经 root 并且根检查器应用程序已对其进行了验证。

这是我用来在android设备中嵌入Scala库 2.9.1的应用程序:
https://github.com/jbrechtel/Android-Scala-Installer
uses-library android:name="scala_... 行现在包含在 AndroidManifest 中

在完成上述操作后,我在 "project/Build.scala" 中做了一些小改动,如下行:useProguard in Android := false,

我可能遗漏了一些东西,因为在重新编译并执行 android:start-device 之后,我得到了 java.lang.ClassNotFoundException
当您没有完成前面的步骤(生根设备并在设备内安装 scala 库)时,这是您期望得到的错误

欢迎任何想法!谢谢

PS:Intellij 是当前项目选择的 IDE,所以 eclipse 和相关插件不是一个选项

【问题讨论】:

  • 我可能在这里,但是您是否在嵌入式 scala 库上使用了 Proguard?如果是这样,它是否删除了该库的内容?
  • 哪个类没有找到?
  • @EmilH 是的,我和其他使用 jberkel 的 android 插件的人一样使用 proguard,它工作得很好,是的,我想我想这样做是为了将 scala 库缩小到当前项目的最小值保持 .apk 文件的大小正常。如果您需要更多信息,请告诉我
  • @RexKerr 找不到的类是 MainActivity (显然是在 android manifest 中设置的第一个启动的活动)

标签: android scala classnotfoundexception rooted-device


【解决方案1】:

我上面说的没有错!

但是 Android Scala Installer 中有一个命令,它请求将“/system”文件夹挂载为可写。不幸的是,这在我的姜饼安卓手机上不起作用,这可能是一般情况。

我只是将 mount /system 的操作注释为可写(并且命令 mount /system 为只读)并且库安装成功!
请注意,我手动设置了 /system 的权限在安装库之前可写

事实上,我分叉了 github 存储库,因此您可以在这里找到我的实现: https://github.com/pligor/scala-android-libs

总结一下。是的,您的 scala android 源代码中需要的唯一更改是将 Build.scala 文件中的设置设置为 proguard 为 false,并在 Android Manifest 中包含使用 <uses-library android:name="scala_...

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2019-12-21
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2016-09-04
    • 2019-03-01
    相关资源
    最近更新 更多