【问题标题】:Android Callable Wrapper fails to buid for Crosswalk projectAndroid Callable Wrapper 无法为 Crosswalk 项目构建
【发布时间】:2016-05-29 01:41:40
【问题描述】:

我为人行横道项目创建了一个绑定项目。它创建了无法构建的 ACW 代码

package mono.org.xwalk.core.internal;


public class XWalkSettingsInternal_ZoomSupportChangeListenerImplementor
    extends java.lang.Object
    implements
        mono.android.IGCUserPeer,
        org.xwalk.core.internal.XWalkSettingsInternal.ZoomSupportChangeListener
{
    static final String __md_methods;
    static {
        __md_methods = 
            "n_onGestureZoomSupportChanged:(ZZ)V:GetOnGestureZoomSupportChanged_ZZHandler:Org.Xwalk.Core.Internal.XWalkSettingsInternal/IZoomSupportChangeListenerInvoker, MethodCRM.Crosswalk\n" +
            "";
        mono.android.Runtime.register ("Org.Xwalk.Core.Internal.XWalkSettingsInternal+IZoomSupportChangeListenerImplementor, MethodCRM.Crosswalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", XWalkSettingsInternal_ZoomSupportChangeListenerImplementor.class, __md_methods);
    }


    public XWalkSettingsInternal_ZoomSupportChangeListenerImplementor () throws java.lang.Throwable
    {
        super ();
        if (getClass () == XWalkSettingsInternal_ZoomSupportChangeListenerImplementor.class)
            mono.android.TypeManager.Activate ("Org.Xwalk.Core.Internal.XWalkSettingsInternal+IZoomSupportChangeListenerImplementor, MethodCRM.Crosswalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "", this, new java.lang.Object[] {  });
    }


    public void onGestureZoomSupportChanged (boolean p0, boolean p1)
    {
        n_onGestureZoomSupportChanged (p0, p1);
    }

    private native void n_onGestureZoomSupportChanged (boolean p0, boolean p1);

    java.util.ArrayList refList;
    public void monodroidAddReference (java.lang.Object obj)
    {
        if (refList == null)
            refList = new java.util.ArrayList ();
        refList.add (obj);
    }

    public void monodroidClearReferences ()
    {
        if (refList != null)
            refList.clear ();
    }
}

这是我收到的构建错误。

/Users/xxxxx/Integration/Mobile/MethodCRM/Droid/obj/Debug/android/src/mono/org/xwalk/core/internal/XWalkSettingsInternal_ZoomSupportChangeListenerImplementor.java(48,48):错误:错误: ZoomSupportChangeListener 在 XWalkSettingsInternal 中不公开;无法从外部包访问 org.xwalk.core.internal.XWalkSettingsInternal.ZoomSupportChangeListener (MethodCRM.Droid)

编译器似乎在抱怨 org.xwalk.core.internal.XWalkSettingsInternal.ZoomSupportChangeListener 是私有接口,但 XWalkSettingsInternal_ZoomSupportChangeListenerImplementor 是一个公共类。如何解决此错误?

更新: 我尝试在 Metadata.xml 中删除 XWalkSettingsInternalXWalkSettingsInternal.ZoomSupportChangeListener 但这并没有解决问题。

<remove-node path="/api/package[@name='org.xwalk.core.internal']/class[@name='XWalkSettingsInternal']" />
<remove-node path="/api/package[@name='org.xwalk.core.internal']/interface[@name='XWalkSettingsInternal.ZoomSupportChangeListener']" />

【问题讨论】:

    标签: android xamarin binding crosswalk


    【解决方案1】:

    我已经在这个 GitHub 项目 https://github.com/philieu/XamarinFormsXWalkViewTest 中尝试过 CrossWalk 包装器,它可以工作,所以也许你可以看看它,看看你在做什么不同?

    更新:我查看了 CrossWalk 源代码,我没有看到 XWalkSettingsInternal 被其他类公开公开的任何地方,所以我将完全删除该节点。

    此链接可能会有所帮助http://forums.xamarin.com/discussion/12627/java-binding-member-cannot-be-accessed-from-outside-package

    【讨论】:

    • 这很有趣。我实际上也在使用相同的绑定项目,它使用的是 Crosswalk v15。我正在尝试将此项目升级到 Crosswalk v18 以解决一些错误,但我被卡住了,因为我无法弄清楚如何解决我的问题中的构建错误。
    • 我已尝试删除 XWalkSettingsInternal 但没有奏效(我更新的问题中有更多详细信息)。
    【解决方案2】:

    请注意,当您查看Crosswalk 的源代码时,在org.xwalk.core.internal 包中看到一些名为xxInternal.java 的类,这些类不是对外暴露的接口。

    当你构建Crosswalk的源代码时,有一个脚本可以自动将org.xwalk.core.internal.xxInternal.java翻译成org.xwalk.core.xx.java,这是给开发者的最终接口。这对文件虽然是一一对应的,但并不完全相同。只有xxInternal.java@XWalkAPI 标记的方法才会保留在xx.java 中。

    你可以通过官方API docs查看最终界面,也可以通过反编译xwalk_core_library.jar查看,可以在你使用的AAR文件中找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多