2014-02-07 52 views
1

我正在使用本機擴展的Android版Flex移動應用程序。我試圖在Java代碼中使用Retrofit,但是Retrofit調用失敗。在Flex移動應用程序中使用改造

我有以下接口定義:

public interface GitHubService { 

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

然後,我必須在我的Java代碼中的適當位置調用的AsyncTask。它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在本機擴展中進行改造工作?

+0

嗨你解決了這個問題嗎?因爲我面對同一個? – ShahrozKhan91

+0

我能找到的唯一解決方案是重寫Java代碼,以便不使用註釋(任何註釋,而不僅僅是Retrofit)。 – Brian

+0

如果其他人想要解決這個問題,我已經記錄了Adobe的一個錯誤:https://bugbase.adobe.com/index.cfm?event=bug&id=4071110 – Michael

回答

0

目前這是不可能的。 ADT在dalvik的編譯過程中去除了java類的所有註釋。

相關問題