完全に機能するアプリケーションをライブラリ(Activityクラスを含む)に変換した後、ライブラリ全体のアクティビティを単純にスーパークラスすることによってそのライブラリ全体を使用するアプリケーションを作成しようとしています:ClassNotFoundExceptionによって引き起こされる...
package com.example.baseapp.paid;
import android.os.Bundle;
import com.example.baseapp.LibActivity;
public class PaidActivity extends LibActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Eclipseがエラーなしでこの新しく「再設計」アプリケーションを構築し、私はそれを実行しようとすると、私は例外を取得:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.baseapp.paid/com.example.baseapp.paid.PaidActivity}: java.lang.ClassNotFoundException: com.example.baseapp.paid.PaidActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.baseapp.paid-1.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.example.baseapp.paid.PaidActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.baseapp.paid-1.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
... 11 more
私はこれがあるために起こっている理由はわかりません「クラスが見つかりません」のエラーが発生したときeクラスは、構築された派生クラス(エラーなし)であり、今実行しようとしています。
このトラブルシューティングを行うにはどうすればよいですか?
私には何が欠けていますか?これは、ライブラリプロジェクトのAndroidManifest.xmlをある
:
EDIT(@CaspNZで質問に答える)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.baseapp"
android:versionCode="5"
android:versionName="1.1.2">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
そして、これは使用して、アプリケーションのAndroidManifest.xmlをあります図書館プロジェクト:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.baseapp.paid"
android:versionCode="5"
android:versionName="1.1.2">
<uses-sdk android:minSdkVersion="8" />
<uses-library android:name="AppLibrary" />
<uses-permission android:name="android.permission.INTERNET"/>
<application android:icon="@drawable/icon">
<activity android:name=".PaidActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.baseapp.LibActivity" android:label="com.example.baseapp.LibActivity:string/rx_label">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="EditPreferences"
android:label="com.example.baseapp.LibActivity:string/app_name">
</activity>
</application>
</manifest>
これは私の初めてのtryiであるため、これを解決するためのヒントがありますライブラリプロジェクトを使用することになりました。私は、この作業を行うための "トリック"に精通していません。
proguardを使用していますか?あなたのクラスはあなたのファイル内にありますか? (アンドロイドディストリビューションのdexdumpを使って、classes.dexがあなたのapkにあることを知ることができます)。 – Snicolas
@Snicolasこれはデバッグモードなので、ProGuardはありません。私は(まだ)デクスダンプで何を探すべきかは知らない。しかし、私はEclipseのリ・ファクタリングが大抵の場合私の作品を投稿して発見して以来、いくつかの進歩を遂げましたが、ライブラリのAndroidManifestにいくらかのゴミを注入したのと同じように、 .xml。私はこれを修正しましたが、まだエラーが発生しています。 – an00b
@Snicolasこれは[他のスレッド](http://stackoverflow.com/questions/6324234/converting-an-existing-application-to-a-library)で1番目の提案を実装しようとした私の試みに関連しています。派生アプリケーション用のライブラリのAndroidManifest.xmlを複製する必要がありますか? – an00b