10

非常に強力なAndroid アノテーションフレームワークを使用しようとしています。それに基づいて最初のプロジェクトを構成することにかなりこだわっています。wikiのすべての手順に従いましたが、ビルド後にファイルが生成されません。

したがって、マニフェストから生成されたクラスを要求すると、次のようになります。

<activity android:name=".MyActivity_"
   android:label="@string/app_name">

例外があります:

java.lang.ClassNotFoundException

私のアクティビティは、wiki とまったく同じです。

@EActivity(R.layout.main)
public class MyActivity extends Activity {

    @ViewById
    EditText myInput;

    @ViewById(R.id.myTextView)
    TextView textView;

    @Click
    void myButton() {
         String name = myInput.getText().toString();
         textView.setText("Hello "+name);
    }
}

何か案は?

編集:ディレクトリ「.apt_generated」が作成されていることがわかりましたが、ビルド後は空です。

4

2 に答える 2

4

これはAndroidAnnotationsのバグのようであり、専用のバグトラッカー(http://code.google.com/p/androidannotations/issues/entry )で報告する必要があります。AndroidAnnotationsメーリングリストhttp://groups.google.com/group/androidannotationsを使用することもできます

まず、いくつか質問があります:

Eclipse、Netbeans、IntelliJのどのIDEを使用していますか?どのバージョン?

プロジェクトのビルドにMaven、Ant、またはIDEのみを使用していますか?

問題は、アノテーション処理がトリガーされていない、AAのバグ、またはクラスパスの一部ではないフォルダーに生成されたファイルなど、いくつかの原因が原因である可能性があります。

Eclipseでは、[ウィンドウ]>[ビューの表示]>[エラーログ]ビューから詳細情報を取得できます。アノテーション処理がトリガーされると、AndroidAnnotationsに関するいくつかのメッセージが表示されます。

于 2011-08-23T07:54:41.023 に答える
0

これに遭遇し、主要な回答が機能しない他の人については、ビルドを実行してから、プロジェクトのどこかでファイル androidannotations.log を検索してください。このログ ファイルが生成され、何が問題なのかを示唆している可能性があります。

私の場合、AndroidManifest.xml が見つからないという警告メッセージが表示されました。これは単なる警告のように見えましたが、実際にはエラーの原因でした... AndroidManifest.xml ファイルが見つからないため、必要なクラスの一部が生成されませんでした。

xml ファイルがあるかどうかを確認します。そうでない場合、解決策は明らかです。存在する場合、AA がファイルを見つけられない一般的な理由は、ファイルが標準的でない場所にあるためです。AA は、この xml ファイルのファイルを生成する場所の上にある親ディレクトリを再帰的にチェックし、存在しない場合は失敗します。私の場合、AndroidManifest.xml は直接の祖先フォルダーではない [プロジェクト ルート]/app/src/main にあったため、それが問題でした。

プロジェクト build.gradle 内の xml ファイルの場所を指定できます。

android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["androidManifestFile": "specify_location_of_AndroidManifest.xml_here"]
            }
        }
    }

}

于 2020-11-11T17:14:17.747 に答える