标签: java-binding

Xamarin Android Java绑定:缺少类(XMLReader)

当我在Xamarin.Android项目上并使用Java绑定库时,我几乎总是会遇到一些警告.我收到以下警告:

7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type 
System.Xml.XmlReader in method CreateFromXml in managed type Android.Content.Res.ColorStateList.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type 
System.Xml.XmlReader in method CreateFromXml in managed type Android.Content.Res.ColorStateList.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type 
System.Xml.XmlReader in method ParseBundleExtras in managed type Android.Content.Res.Resources.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type 
System.Xml.XmlReader in method CreateFromXml in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: Unknown parameter type 
System.Xml.XmlReader in method CreateFromXml in managed type Android.Graphics.Drawables.Drawable.
7>BINDINGSGENERATOR : warning BG8800: …
Run Code Online (Sandbox Code Playgroud)

xamarin.android xamarin java-binding xamarin-binding

8
推荐指数
1
解决办法
463
查看次数

Xamarin.Android绑定调用java Object方法

我通过名为Xamarin.GradleBinding的visual studio扩展创建了java绑定库.我添加了ru.rambler.android:swipe-layout:1.0.14包,并在使用它时SwipeLayout,一切正常.但不幸的是,它没有创建相应的C#类或类似的东西.我尝试手动添加包但仍然没有.

我检查了GitHub上源代码.SwipeLayout有一个没有参数的public void方法reset():

public void reset()
Run Code Online (Sandbox Code Playgroud)

我尝试从c#中调用此方法JNIEnv.

IntPtr type = JNIEnv.FindClass("ru/rambler/libs/swipe_layout/SwipeLayout");
IntPtr method = JNIEnv.GetMethodID(type, "reset", "()V");
try
{
    JNIEnv.CallObjectMethod(_swiper.Handle, method);
}
catch (Exception ex)
{
    var s = ex.Message;
}
Run Code Online (Sandbox Code Playgroud)

已成功找到类型和方法,但正在调用

JNIEnv.CallObjectMethod(_swiper.Handle, method);
Run Code Online (Sandbox Code Playgroud)

这个方法崩溃了应用程序,它甚至没有进入catch块.

Tt必须是_swiper.Handle第一个参数的原因. _swiper字段是类型,ViewGroup因为SwipeLayout派生自ViewGroup.我找不到如何获取视图的指针来传递该方法.

在调试时,当我调查时_swiper,它似乎是正确的实例SwipeLayout

在此输入图像描述

java xamarin.android xamarin jnienv java-binding

6
推荐指数
1
解决办法
229
查看次数

Monodroid滑动菜单

有人在他们的Monodroid应用程序中导入了这个滑动菜单项目https://github.com/jfeinstein10/SlidingMenu吗?

我在新的JavaLibraryProject中导入了jar文件(com.slidingmenu.lib.slidingmenuactivity.jar).

我创建了一个从SlidingActivity扩展的新活动.

我的项目构建没有任何错误,但在运行时我得到此异常

Java.Lang.NoClassDefFoundError: com.slidingmenu.lib.R$layout 
Run Code Online (Sandbox Code Playgroud)

base.OnCreate(bundle)

public class MainActivity : SlidingActivity
{
    public override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);    //The EXCEPTION is thrown here
        SetContentView(Resource.Layout.activity_main);
    }

    public override void SetBehindContentView(int p0)
    {
        base.SetBehindContentView(p0);
    }        
}
Run Code Online (Sandbox Code Playgroud)

任何人的想法?谢谢 :)

编辑

好.我做了一点修改:

我已将"assets","bin"和"res"文件夹添加到我在AndroidJavaLibrary项目中添加的".zip"文件中.

它编译得很好,但现在我在同一行上得到另一个错误:

Android.Views.InflateException: Binary XML file line #2: Error inflating class com.slidingmenu.lib.SlidingMenu
Run Code Online (Sandbox Code Playgroud)

java android xamarin.android java-binding

5
推荐指数
1
解决办法
3097
查看次数

Java绑定:类型"..."在命名空间"..."中不存在.你错过了一个集会吗?

我正在尝试创建一个Xamarin Java绑定到Spotify Android SDK.SDK现在分为两部分,一部分用于身份验证,另一部分用于播放器.以前的java绑定工作,然而,秒给我一个错误.

最初的问题是在Xamarin论坛上提出的.


嗨,

我正在尝试为Spotify Android SDK创建一个绑定项目.

SDK分为两个.aar文件.一个用于身份验证,一个用于媒体播放(播放器).首先,我尝试在一个绑定项目中同时使用.aar文件,但是忽略了Player.aar.然而,将它移动到它自己似乎工作.

现在,我的问题是有关Java接口NativePlayerNotificationCallback,其产生的IPlayerNotificationCallback(因此缺乏OG通知),但在播放器类它试图实现:global::Com.Spotify.Android.Player.INativePlayerNotificationCallback.

INativePlayerNotificationCallback在反编译文件中找不到其他提及.只有IPlayerNotificationCallback.

我知道这有点难以想象.以下是JD-GUI中的java类文件:

JD-GUI

生成的文件列在这里: 在此输入图像描述

Com.Spotify.Sdk.Android.Player.IPlayerNotificationCallback.cs文件中:

在此输入图像描述

而错误信息本身

错误CS0234:namespaceCom.Spotify.Sdk.Android.Player中不存在类型或命名空间名称INativePlayerNotificationCallback'.你错过了装配参考吗?

在此输入图像描述

我真的很感激任何有关如何使其工作的见解.在我看来,界面的命名有一些不一致,但我不确定.

感谢你帮忙,弗雷德里克

spotify xamarin java-binding

3
推荐指数
1
解决办法
2393
查看次数

Xamarin Android绑定库自定义命名空间无法识别

我正在为包含单个类的现有JAR创建Xamarin Android绑定库,并遵循Xamarin绑定库文档,可以使用以下方法成功重命名名称空间:

<attr path="/api/package[@name='com.company.blah']" name="managedName">Company.Blah</attr>
Run Code Online (Sandbox Code Playgroud)

我还确认了obj / Debug文件夹中生成的类中的名称空间已更改:

namespace Company.Blah {

    // Metadata.xml XPath class reference: path="/api/package[@name='com.company.blah']/class[@name='NativeClass']"
    [global::Android.Runtime.Register ("com/sprylab/android/widget/TextureVideoView", DoNotGenerateAcw=true)]
    public partial class NativeClass 
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我面临两个问题:

  1. 我无法NativeClass从示例Android项目中引用。好像根本看不到名称空间。绑定项目成功构建,没有错误。
  2. 如果删除包名称空间重命名设置,它也将成功构建,然后可以在示例项目中引用它,但它要求我在使用该名称的任何地方完全限定类名:

    private com.company.blah.NativeClass nativeClass;

我希望如果我能修复#1,那么#2将不会再次出现。如果是这样,我也很好奇您如何阻止显示完全合格的类名?

java-native-interface xamarin.android xamarin java-binding

2
推荐指数
1
解决办法
490
查看次数

Xamarin.Android - Java Binding依赖于Google Play服务

我们使用几种不同类型的Ad网络来编写自己的Java绑定.由于Google已经制作了新的"广告"ID,因此所有这些图书馆现在都依赖于Google Play服务.

问题是,在获得最新版本后,我无法正确构建这些绑定项目.我收到有关缺少类的错误,除非将google-play-services.jar(从extras我的Android SDK中的文件夹)添加Reference Jar到项目中.

添加播放服务jar文件后,我收到一个新错误:

missing class error was raised while reflecting com.somepackage.SomeClass : com/google/android/gms/common/GooglePlayServicesRepairableException : Unsupported major.minor version 51.0 JARTOXML
Run Code Online (Sandbox Code Playgroud)

这个错误通常意味着库正在使用Java 7(Xamarin不支持).我该怎么做才能修复这些绑定项目?

android xamarin.android xamarin java-binding

1
推荐指数
1
解决办法
1744
查看次数