【问题标题】:Monodroid issue with jar binding zubhium sdkjar 绑定 zubhium sdk 的 Monodroid 问题
【发布时间】:2012-06-06 20:27:16
【问题描述】:

我正在尝试将 jar(zubhium sdk jar) 文件绑定到我的 mono droid 项目。我按照他们在 xamarins 网站上的指南创建了一个新的绑定项目,我引用了我的 mono droid 项目。 我对包名称有一些问题。我收到以下错误:

Error   3    package com.zubhium.interfaces does not exist
        com.zubhium.interfaces.ZubhiumListener
    C:\Users\jbp\Desktop\ny\CmsApp.Droid\obj\Debug\android\src\mono\com\zubhium\interfaces\ZubhiumListenerImplementor.java  8   25  CmsApp.Droid



 from the genrated source:
package mono.com.zubhium.interfaces;        
public class ZubhiumListenerImplementor
            extends java.lang.Object
            implements
                mono.android.IGCUserPeer,
                com.zubhium.interfaces.ZubhiumListener

这是因为当项目被打包时,它会自动将 mono(.com.zubhium....) 添加到包名中。我找不到如何删除这个单声道,或者我是否可以设置一个规则来添加这个部分。

我试着把<attr path="/api/package[@name='com.zubhium.interfaces']" name="managedName">mono.com.zubhium.interfaces</attr> 在 xmldata.xml 文件中,但这不起作用。

大家有什么建议吗?

问候

【问题讨论】:

    标签: android binding jar xamarin.android


    【解决方案1】:
    package com.zubhium.interfaces does not exist
    

    当您bind a .jar libraryreference the binding project from another project 时,您需要 add the .jar to your Application project 并将其构建操作 设置为AndroidJavaLibrary

    不这样做意味着.jar 不会被添加到javac $CLASSPATH,导致在编译Android Callable Wrapper 时出现javac 编译错误(如您所见),并且@ 987654333@ 不会包含在您的最终.apk 中。这两个都是 Bad™。

    这是因为当项目被打包时,它会自动将 mono(.com.zubhium....) 添加到包名中。

    这是针对“实施者”类型的;你可以忽略它。它被用作事件实现的一部分。如果查看生成的 C# 代码,应该有:

    [global::Android.Runtime.Register ("mono/com/zubhium/interfaces/ZubhiumListenerImplementor")]
    internal sealed class ZubhiumListenerImplementor : Java.Lang.Object, IZubhiumListener {
        // ...
    }
    

    mono.com.zubhium.interfaces.ZubhiumListenerImplementor 是内部 ZubhiumListenerImplementor 类型的 ACW。

    您不能重命名此类型;它是一个不受元数据控制的内部构造。

    【讨论】:

    • 非常感谢您的澄清 - 我会马上试一试:)
    • 非常感谢你,现在我可以编译没有错误了。您对我现在如何访问 jar 文件中包含的任何类和方法有任何指示吗?
    • 您在访问会员时遇到什么问题? Java 绑定项目的输出是一个程序集 (.dll)。当您将项目引用添加到 Java 绑定项目时,程序集将作为程序集引用添加,因此您应该能够只使用其中的类型/方法,只要您使用正确的名称。
    • 显然我在命名空间方面遇到了一些问题。但我可以使用这些方法。非常感谢您的帮助。
    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多