1

私は、ネイティブ拡張機能を備えた Android 用の Flex Mobile アプリに取り組んでいます。Java コードで Retrofit を使用しようとしていますが、Retrofit 呼び出しが失敗します。

次のインターフェイスが定義されています。

public interface GitHubService {

@GET("/repos/{owner}/{repo}/contributors")
  List<Contributor> contributors(
      @Path("owner") String owner,
      @Path("repo") String repo
  );
}

次にAsyncTask、Java コードの適切なポイントから呼び出します。そのdoInBackgroundメソッドは次のようになります。

    @Override
protected String doInBackground(String... arg0) {
    Gson gson = new GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
    .registerTypeAdapter(Date.class, new DateTypeAdapter())
    .create();

    RestAdapter restAdapter = new RestAdapter.Builder().setServer("https://api.github.com")
    .setConverter(new GsonConverter(gson))
    .build();

    GitHubService service = restAdapter.create(GitHubService.class);
    List<Contributor> contributors = service.contributors("square", "okhttp");
    for (Contributor contributor : contributors) {
      Log.d("FooTask", contributor.login + " - " + contributor.contributions);
    }
    return null;
}

これらすべてから、LogCat にリストが出力されることを期待しています。代わりに、次の例外が発生します。

FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
...
Caused by: java.lang.IllegalStateException: No Retrofit annotation found on parameter 1 of contributors

Flex Mobile のネイティブ拡張内で Retrofit を動作させる方法はありますか?

4

1 に答える 1

0

これは現在不可能です。ADT は、dalvik のコンパイル プロセスで Java クラスからすべての注釈を取り除きます。

于 2015-06-16T15:06:33.620 に答える