0

まとめようとしているAndroidプロジェクトがいくつかありますが、理解できないランタイム例外に直面しています。

プロジェクトは次のように構築されます。


C/C++ プロジェクト ProjCore (.c および .h ファイルを含む)


Android プロジェクト ProjB -> uses -> ProjCore

注: ProjB はServiceを実装し、Aidl で生成された Java クラスを介して ProjCore を使用します。ProjCore はjniフォルダー内にあります。NDKがインストールされています。ProjB は ndk-build を自動的に実行するように構成されています。ProjCore のコンパイルにより、.so ファイルを含むlibs dir が生成されます。


Android プロジェクト ProjA -> uses -> ProjB

注: ProjA はアクティビティを実装し、ProjB Service クラスを使用します。


ProjA と ProjB (ProjCore を含む) が正常にビルドされ、apk が生成されますが、実行時に ProjA のアクティビティを実行すると、次のエラー メッセージが表示されます。

W/dalvikvm(5357): Unable to resolve superclass of Lcom/signove/health/servicetest/HealthServiceTestActivity$1; (16)

W/dalvikvm(5357): Link of class 'Lcom/signove/health/servicetest/HealthServiceTestActivity$1;' failed

E/dalvikvm(5357): Could not find class 'com.signove.health.servicetest.HealthServiceTestActivity$1', referenced from method com.signove.health.servicetest.HealthServiceTestActivity.<init>

私が学んだことから、これらのメッセージは多くの場合、外部 jar を使用するプロジェクトに関連付けられており、人々はこれらの jar を libs フォルダーに入れるのを忘れています。ただし、クラッシュしているプロジェクト (ProjA) はプロジェクト ProjB とのみ依存関係があり、依存関係はプロジェクト プロパティで構成されます。

私は使用しています: - Kubuntu 10.04 - Eclipse Indigo - Android NDK-r8 - Eclipse CDTがインストールされています

誰が問題が何であるか知っていますか?

4

1 に答える 1

2

私は自分のプロジェクトで問題を見つけました。Eclipse androidプラグインは、aidlフォルダーをソースフォルダーとして認識しないため、aidlからJavaクラスを生成しません。

私はこれをProjBで修正しましたが、ProjA(aidlファイルもあります)で修正するのを忘れました...

同じ問題を抱えている人がいる場合は、[プロジェクト]-> [プロパティ]に移動し、[Javaビルドパス]を選択して[ソース]タブに移動し、aidlフォルダーを追加します。[注文とエクスポート]タブで、[aidl]フォルダーを[src]フォルダーの前に移動します。

それが他の人を助けることを願っています。

于 2013-02-20T21:20:17.740 に答える