5

Scala 2.9.1 と SBT 0.13 と Android-Plugin を使用して Android アプリケーションを作成しようとしています。
ただし、ProGuard の実行は非常に遅くなる可能性があります。
代わりに、以前のビルド以降に新しいクラス/メソッドを使用していないときは、classes.dex を自分の dexed android-app クラス (MainActivity.scalaなど) とマージしようとしています。

私が(Android 4.0.xで)得る問題は、マージがエラーなしで行われることですが、アプリケーションを実行しようとすると、これが発生します"Unfortunately, MyAndroidApp has stopped"

logcat ログは次のとおりです。

  EmbeddedLogger  E  App crashed! Package: com.my.app v0 (0.1)
  300         EmbeddedLogger  E  Application Label: MyAndroidApp
 24137        AndroidRuntime  E  FATAL EXCEPTION: main
 24137        AndroidRuntime  E  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app/com.my.app.MainActivity}: java.lang.ClassNotFoundException: com.my.app.MainActivity
 24137        AndroidRuntime  E   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2118)
 24137        AndroidRuntime  E   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237)
 24137        AndroidRuntime  E   at android.app.ActivityThread.access$600(ActivityThread.java:139)
 24137        AndroidRuntime  E   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
 24137        AndroidRuntime  E   at android.os.Handler.dispatchMessage(Handler.java:99)
 24137        AndroidRuntime  E   at android.os.Looper.loop(Looper.java:156)
 24137        AndroidRuntime  E   at android.app.ActivityThread.main(ActivityThread.java:5005)
 24137        AndroidRuntime  E   at java.lang.reflect.Method.invokeNative(Native Method)
 24137        AndroidRuntime  E   at java.lang.reflect.Method.invoke(Method.java:511)
 24137        AndroidRuntime  E   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
 24137        AndroidRuntime  E   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
 24137        AndroidRuntime  E   at dalvik.system.NativeStart.main(Native Method)
 24137        AndroidRuntime  E  Caused by: java.lang.ClassNotFoundException: com.my.app.MainActivity
 24137        AndroidRuntime  E   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
 24137        AndroidRuntime  E   at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
 24137        AndroidRuntime  E   at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
 24137        AndroidRuntime  E   at android.app.Instrumentation.newActivity(Instrumentation.java:1039)
 24137        AndroidRuntime  E   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2109)
 24137        AndroidRuntime  E   ... 11 more
  300        ActivityManager  W    Force finishing activity com.my.app/.MainActivity
  5864        OpenGLRenderer  D  Flushing caches (mode 1)
  300           ViewRootImpl  D  @@@- disable SystemServer HW acceleration

生成された apk とその中の classes.dex を手動で開き、パッケージをナビゲートして MainActivity を見つけました。

どんな助けでも大歓迎です。

4

2 に答える 2

2

わかりました、何が悪いのかわかりました。

定義により、すべての Scala クラスは を実装しscala.ScalaObjectます。
私のdexedcom.my.app.MainActivityも実装しscala.ScalaObjectました。

ただし、scala.ScalaObject以前のclasses.dexファイルには含まれておらず、新しいファイルにも含まれていなかったため、DVM は の署名を持つクラスを見つけることができませんでしたpublic class com.my.app.MyAndroidApp extends android.app.Activity implements com.my.app.TypedActivity with scala.ScalaObject

于 2012-07-12T14:13:47.977 に答える
1

私の最善の推測は、dalvikが何らかの理由でクラスを拒否しているということです。アプリケーションをインストールしていた頃にlogcatを調べ、dalvikからのメッセージを探します。拒否するクラスとその理由についての簡単な宣伝文を印刷します。

于 2012-07-11T17:35:01.020 に答える