2

ProGuardステップなしでScalaで記述された単純なダミーのAndroidアプリケーションを作成してテストしようとしています(useProguard:= false)。


私は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を使用せずにデバイスにインストールできましたが、実行しようとすると、次の例外が発生します(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が、私がプッシュしたjarファイルに存在しています。

4

1 に答える 1

2

新しい外部ライブラリ(つまり、アプリ間で共有される)をデバイスに自由に追加することはできません。作成するすべてのアプリにscalajarを含める必要があります。

Scalaを使用してカスタムROMを作成することで実行できますが、アプリを実行したい人は誰でもそのカスタムROMが必要になります。あまり実用的ではありません:)

于 2012-07-26T12:45:13.640 に答える