2

我試圖創建和測試一個簡單的虛擬Android應用程序編寫的Scala沒有ProGuard步驟(useProguard:= false)。另一個「無法實例化活動ComponentInfo」與斯卡拉


我已經推動Scala庫到/system/framework
/system/framework/scala-library-2.9.1.jar

和許可文件/system/etc/permissions
/system/etc/permissions/scala-library-2.9.1.xml


權限的XML內容:

<?xml version="1.0" encoding="utf-8"?> 

<permissions> 
    <library 
     name="scala-library-2.9.1" 
     file="/system/framework/scala-library-2.9.1.jar" 
    /> 
</permissions> 

這裏是我的MainActivity.scala

package com.google.summer 

import _root_.android.app.Activity 
import _root_.android.os.Bundle 
import _root_.android.graphics.Typeface 
import _root_.android.text.Html 

class MainActivity extends Activity with TypedActivity { 
    override def onCreate(bundle: Bundle) { 
     super.onCreate(bundle) 
     setContentView(R.layout.main) 

     // my dummy code here 

    } 
} 

這裏是我的AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.google.summer"> 

    <application 
     android:icon="@drawable/android:star_big_on" 
     android:label="@string/app_name" 
     android:debuggable="true"> 

     <activity android:label="@string/app_name" android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 

     <uses-library android:name="scala-library-2.9.1" /> 
    </application> 

    <uses-sdk android:minSdkVersion="10"/> 
</manifest> 

我設法我的設備上安裝它,而不使用ProGuard,但,當我嘗試運行它時,我得到以下exc主器件接收(捕獲使用logcat的):

dalvikvm I Zip is good, but no classes.dex inside, and no valid .odex file in the same directory 
dalvikvm I Failed resolving Lcom/google/summer/TypedViewHolder; interface 48 'Lscala/ScalaObject;' 
dalvikvm W Link of class 'Lcom/google/summer/TypedViewHolder;' failed 
dalvikvm I Failed resolving Lcom/google/summer/TypedActivityHolder; interface 30 'Lcom/google/summer/TypedViewHolder;' 
dalvikvm W Link of class 'Lcom/google/summer/TypedActivityHolder;' failed 
dalvikvm I Failed resolving Lcom/google/summer/TypedActivity; interface 19 'Lcom/google/summer/TypedActivityHolder;' 
dalvikvm W Link of class 'Lcom/google/summer/TypedActivity;' failed 
dalvikvm I Failed resolving Lcom/google/summer/MainActivity; interface 18 'Lcom/google/summer/TypedActivity;' 
dalvikvm W Link of class 'Lcom/google/summer/MainActivity;' failed 


FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.google.summer/com.google.summer.MainActivity}: java.lang.ClassNotFoundException: com.google.summer.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/scala-library-2.9.1.jar:/data/app/com.google.summer-1.apk] 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1680) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:3835) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.google.summer.MainActivity in loader dalvik.system.PathClassLoader[/system/framework/scala-library-2.9.1.jar:/data/app/com.google.summer-1.apk] 
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1672) 
    ... 11 more 
    Force finishing activity com.google.summer/.MainActivity 

有誰知道哪裏的錯誤可能和怎樣做才能解決這個問題?

在此先感謝:d

順便說一句,這可能是因爲有一個與Scala庫的問題,即被推?
Logcat說它找不到scala.ScalaObject,但它存在於我推動的罐子裏。

+0

它在模擬器中工作還是失敗呢? – 2012-07-26 09:46:34

+0

好吧,既然我不能模擬器,也不能將Scala庫推向模擬器,那麼在那裏工作就沒有辦法了,但這甚至不是這個意圖。 – Lopina 2012-07-26 09:48:58

+0

我看到我錯過了您將Scala添加爲應用程序的庫,而不是系統庫。它是否可以部署您創建的常規Java應用程序?你是否將應用程序安裝在你的SD卡上(似乎是那些有問題的)? – 2012-07-26 10:18:01

回答

2

您不能隨意添加新的外部庫(即應用程序之間共享)到設備。您需要在您創建的每個應用程序中包含scala jar。

它可以通過創建一個Scala自定義ROM來完成,但是然後每個想運行你的應用程序的人都需要這個自定義ROM。不太實際:)

相關問題