2013-04-04 155 views
2

我現在有點絕望。我試圖在Android(在Eclipse中)下使用Akka項目(用scala編寫),但無論我嘗試什麼,我都無法使它工作。
爲了簡單起見,我創建了兩個項目:一個使用sbt eclipse創建並隨後導入到eclipse的Akka項目,以及一個使用項目創建嚮導的標準Android項目。我可以從android代碼中引用Akka代碼,但在運行時,我總是得到一個NoClassDefFoundError
我真的很感激,如果有人可以指出我做錯了什麼,或者一般情況下我可以在我的Android應用程序中使用我的Akka項目。如何使用Android下的Akka項目

+2

這將是極端的幫助,如果你確實包含完整的堆棧跟蹤和異常的消息。 – 2013-04-04 23:55:36

+1

要在黑暗中添加一個鏡頭:將類路徑「壓縮」爲DEX格式時,您將失去反射加載的類;你可能想嘗試搜索proguard指令,因爲它有相同的問題。 – 2013-04-06 12:54:14

回答

0

我沒有看到堆棧跟蹤而盲目開火,但聽起來好像你沒有從Android項目中導出Akka項目。

  1. 在Eclipse中打開您的Android項目。
  2. 在Project Explorer中右鍵單擊您的Android項目。
  3. 從菜單中選擇Build Path - > Configure Build Path。
  4. 當出現對話框時,轉到訂單和導出選項卡,然後確保您的Akka項目已選中。
1

我感到你的痛苦。我花了小時試圖讓SBT,proguard的,斯卡拉,阿卡工作,並建議你看一看在項目/ 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 

相關問題