此刻我有点绝望。我正试图在Android(在Eclipse中)使用Akka项目(用scala编写),但无论我尝试什么,我都无法使它工作。
为简单起见,我创建了两个项目:一个Akka项目,使用sbt eclipse创建然后导入到eclipse,以及一个使用项目创建向导的标准android项目。我可以从android代码中引用Akka代码,但在运行时我总是得到NoClassDefFoundError
我真的很感激,如果有人可以指出我做错了什么,或者我一般可以在我的Android应用程序中使用我的Akka项目。
答案 0 :(得分:1)
我感觉到你的痛苦。我花了小时试图让sbt,proguard,scala,akka工作,并建议你从这里看看项目/ Build.scala:
https://github.com/fehguy/swagger-for-the-home/tree/master/android
特别是proguard
选项:
proguardOption in Android :=
"""
|-dontwarn scala.**
|-keepclassmembers class * {
| ** MODULE$;
|}
|-keep class scala.collection.SeqLike {
| public protected *;
|}
|-keep public class * extends android.app.Activity
|-keep public class * extends android.app.Application
|-keep public class * extends android.app.Service
|-keep public class * extends android.content.BroadcastReceiver
|-keep public class * extends android.content.ContentProvider
|-keep public class * extends android.app.backup.BackupAgentHelper
|-keep public class * extends android.preference.Preference
|-keep public class com.android.vending.licensing.ILicensingService
|-keep public class org.eatbacon.sfth.AnalogUpdateActivity
|-keep public class org.eatbacon.sfth.UpdateDataTask
|-keep public class org.eatbacon.sfth.ShowChartActivity
|
|-keepclasseswithmembernames class * {
| native <methods>;
|}
|
|-keepclasseswithmembernames class * {
| public <init>(android.content.Context, android.util.AttributeSet);
|}
|
|-keepclasseswithmembernames class * {
| public <init>(android.content.Context, android.util.AttributeSet, int);
|}
|
|-keepclassmembers enum * {
| public static **[] values();
| public static ** valueOf(java.lang.String);
|}
|
|-keep class * implements android.os.Parcelable {
| public static final android.os.Parcelable$Creator *;
|}
""".stripMargin
)
答案 1 :(得分:0)
我在没有看到堆栈跟踪的情况下开火,但听起来你没有从Android项目中导出Akka项目。