2012-07-14 28 views
0

我正在嘗試爲BugSense創建一個Java綁定庫,但其中一個方法有一個名爲「params」的參數,它是C#中的一個保留字。我試圖使用Metadata.xml文件來重命名它,但我無法弄清楚如何訪問該類,更不用說該方法或它的參數了。用Mono for Android重命名Java綁定庫中的「params」參數?

這裏的問題是代碼它的產生:

namespace Com.Bugsense.Trace { 

[global::Android.Runtime.Register ("com/bugsense/trace/ActivityAsyncTask", DoNotGenerateAcw=true)] 
internal partial class ActivityAsyncTaskInvoker : ActivityAsyncTask { 

    static IntPtr id_doInBackground_arrayLjava_lang_Object_; 
    [Register ("doInBackground", "([Ljava/lang/Object;)Ljava/lang/Object;", "GetDoInBackground_arrayLjava_lang_Object_Handler")] 
    protected override global::Java.Lang.Object DoInBackground (global::Java.Lang.Object[] params) 
    { 
     if (id_doInBackground_arrayLjava_lang_Object_ == IntPtr.Zero) 
      id_doInBackground_arrayLjava_lang_Object_ = JNIEnv.GetMethodID (class_ref, "doInBackground", "([Ljava/lang/Object;)Ljava/lang/Object;"); 
     IntPtr native_params = JNIEnv.NewArray (params); 
     global::Java.Lang.Object __ret = Java.Lang.Object.GetObject<global::Java.Lang.Object> (JNIEnv.CallObjectMethod (Handle, id_doInBackground_arrayLjava_lang_Object_, new JValue (native_params)), JniHandleOwnership.TransferLocalRef); 
     if (params != null) { 
      JNIEnv.CopyArray (native_params, params); 
      JNIEnv.DeleteLocalRef (native_params); 
     } 
     return __ret; 
    } 
} 
} 

這裏是我的映射,這我覺得應該工作,但只是拒絕。

<attr path="/api/package[@name='com.bugsense.trace']/class[@name='ActivityAsyncTaskInvoker']/method[@name='doInBackground']/parameter[@name='params']" name="managedName">@params</attr> 

我試過了所有我能想到的。請幫忙!

+0

我可以對評論發表評論嗎? ::嘆息:: – DFX 2012-07-14 11:23:05

+0

你可以將BugSense綁定到MonoDroid嗎?然後你想分享一下這些代碼嗎? – Casper 2012-10-15 09:02:36

回答

0

因此,事實證明這只是當前版本的Mono for Android中的一個錯誤。如果你更新到測試版的4.2.4版本,一切都編譯好。