Android Callable Wrapper无法为Crosswalk项目提供支持

时间:2016-05-29 01:41:40

标签: android xamarin binding crosswalk

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

Steam Directory.Initialize().Wait();

这是我收到的构建错误。

/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中删除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 (); } } XWalkSettingsInternal但未解决此问题。

XWalkSettingsInternal.ZoomSupportChangeListener

2 个答案:

答案 0 :(得分:0)

我在这个GitHub项目https://github.com/philieu/XamarinFormsXWalkViewTest中尝试过CrossWalk包装器并且它有效,所以也许你可以看一下,看看你在做什么不同?

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

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

答案 1 :(得分:0)

请注意,当您查看Crosswalk的源代码并查看包xxInternal.java中的一些名为org.xwalk.core.internal的类时,这些类不是外部公开的接口。

当您构建Crosswalk的源代码时,会有一个脚本自动将org.xwalk.core.internal.xxInternal.java转换为org.xwalk.core.xx.java,这是开发人员的最终界面。虽然这对文件之间存在一对一的对应关系,但它们并不完全相同。只有@XWalkAPIxxInternal.java标记的方法才会保留在xx.java中。

您可以通过官方API docs或反编译xwalk_core_library.jar来查看最终界面,public class OrderAndInventoryViewModel { public Order OrderInfo { get; set; } public IEnumberable<Inventories> InventoryInfo { get; set; } } 可以在您正在使用的AAR文件中找到。