gpt4 book ai didi

java - Xamarin Binding Jar 给出错误 : does not implement inherited abstract member AsyncTask. DoInBackground(params Object[])

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:02 24 4
gpt4 key购买 nike

我想使用 Xamarin.Android 项目中的 .jar 文件。

在我创建绑定(bind)项目并尝试构建后,我收到此错误:

obj\Debug\generated\src\Com.Acrcloud.Rec.Sdk.Utils.ACRCloudGetIPAddressAsyncTask.cs(23,23):错误 CS0534:“ACRCloudGetIPAddressAsyncTask”未实现继承的抽象成员“AsyncTask.DoInBackground(参数对象 [])' (CS0534)

使用反编译器,我检查了 ACRCloudGetIPAddressAsyncTask 的内容,发现了这个:

package com.acrcloud.rec.sdk.utils;

import android.os.AsyncTask;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class ACRCloudGetIPAddressAsyncTask
extends AsyncTask<String, Integer, String>
{
private static final String TAG = "ACRCloudAsynGetIPAddressTask";

protected String doInBackground(String... params)
{
String ip = "";
try
{
InetAddress x = InetAddress.getByName(params[0]);

ip = x.getHostAddress();
}
catch (UnknownHostException e)
{
e.printStackTrace();
ip = "";
}
catch (Exception e2)
{
ip = "";
}
return ip;
}

protected void onPostExecute(String ip)
{
super.onPreExecute();
ACRCloudLogger.d("ACRCloudAsynGetIPAddressTask", ">>>>>>>>>>>>>>> " + ip);
com.acrcloud.rec.sdk.recognizer.ACRCloudRecognizerRemoteImpl.serverIP = ip;
}
}

为什么我什至需要实现 DoInBackground(params Object[])?生成的 C# 代码实现了 protected virtual unsafe string DoInBackground (params string[] @params) 以匹配 Java 代码中的内容...我对 Java 了解不多,所以我可能遗漏了有什么...知道如何解决这个问题吗?

最佳答案

您可以查看这篇精彩的帖子:Approaching a Xamarin.Android Bindings Case , 通过检查 Adding Types部分,它使用 <add-node>当我们想要添加一个类、更改构造函数或切换泛型类型时。

对于您的库,您可以打开 Metadata.xmlTransforms下文件夹,然后添加此代码:

<add-node path="/api/package[@name='com.acrcloud.rec.sdk.utils']">
<class abstract="false" deprecated="not deprecated" final="false" name="ACRCloudLocalRecognizerInitAsyncTask" static="true" visibility="public" extends="java.lang.Object">
</class>

<class abstract="false" deprecated="not deprecated" final="false" name="ACRCloudGetIPAddressAsyncTask" static="true" visibility="public" extends="java.lang.Object">
</class>
</add-node>

然后就可以编译成功了,但是我没有测试引用这个lib到Xamarin.Android项目,你可能需要进一步研究才能使用这个lib。不管怎样,那个帖子很有帮助。

您还可以在 SO 上查看类似案例:Java Binding Abstract class not being generated .

关于java - Xamarin Binding Jar 给出错误 : does not implement inherited abstract member AsyncTask. DoInBackground(params Object[]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com