2012-11-16 43 views
28

我正在嘗試在我的Andorid應用程序中實現In app billing服務。如何糾正自動生成的IMarketBillingService.java文件中的錯誤?

我已將IMarketBillingService.aidl文件添加到我在Eclipse中的項目中。然後Eclipse自動生成IMarketBillingService.java文件,但有很多錯誤。

@Override public android.os.IBinder asBinder() { return mRemote; } 
- implements android.os.IInterface.asBinder 
- The method asBinder() of type IMarketBillingService.Stub.Proxy must override asuperclass method 

@Override public android.os.Bundle sendBillingRequest(android.os.Bundle bundle) throws android.os.RemoteException 
{ 
android.os.Parcel _data = android.os.Parcel.obtain(); 
android.os.Parcel _reply = android.os.Parcel.obtain(); 
android.os.Bundle _result; 
...... 
} 
- The method sendBillingRequest(Bundle) of type IMarketBillingService.Stub.Proxy must override a superclass method 
- implements com.android.vending.billing.IMarketBillingService.sendBillingRequest 

任何人都可以幫助我嗎?

我使用Mac,Eclipse Juno和最新版本的Android SDK。

回答

78

您可能會嘗試使用默認編譯選項。

  1. 右鍵單擊(或控制單擊)項目,並選擇「屬性」
  2. 選擇「Java編譯器」
  3. 取消選中「啓用項目特定的設置」

Eclipse會提示重新編譯,它應該都很好。

+5

將我的版本從1.5更改爲1.6,此工作。 – easycheese

+2

你是一個邪惡的人。有1000錯誤! – rahulg

+0

爲了將來的參考,它將Java編譯器合規性級別從1.5更改爲1.6+,以修復此錯誤。如果您必須打開或關閉項目特定設置才能這樣做,那是偶然的。 – String

4

也湊了產生IInAppBillingService.java許多錯誤。我嘗試了許多建議的解決方案,但都沒有成功最後,Zedifire的方法的一個變體在我的Eclipse SDK上工作。 (這些步驟是從記憶! - 嘗試各地,直到它的工作原理)

  1. 關閉>項目>自動構建
  2. 刪除/根文件
  3. 然後去>窗口>首選項>的Java>編譯器和發現,在某種程度上符合水平已經默認爲1.5
  4. 改變達標回1.7級
  5. >項目>清潔
  6. >項目>生成所有(仍然錯誤!)
  7. 合適的項目窗口中點擊>機器人工具>修復項目屬性

VOILA -the生成的文件,最後編譯沒有錯誤!

0

原因是,Java 1.5不支持覆蓋接口方法。 https://stackoverflow.com/a/212642/1283492 從Java 1.6開始,它是允許的。因此,正如easycheese所述,需要將Java 1.6或更高版本放入項目屬性的java編譯器設置中。