构建xamarin android项目不成功,错误XA4212

时间:2017-12-09 11:04:05

标签: android xamarin.android

在Visual Studio 2017 15.4中,一切都很顺利。但在我升级到15.5之后,我的xamarin android项目无法成功构建,显示:

error XA4212: Type `Android.Support.V4.App.JobIntentService/JobServiceEngineImpl` implements `Android.Runtime.IJavaObject` but does not inherit `Java.Lang.Object` or `Java.Lang.Throwable`. This is not supported.

5 个答案:

答案 0 :(得分:27)

按照@Ironman的回答,这发生在Xamarin.Android 8.0上,所以我在下一节的项目.csproj文件中将属性设置为 false

let colormap = require('colormap')
var fs = require('fs');

let colors = colormap({
    colormap: 'jet',
    nshades: 256,
    format: 'hex',
    alpha: [1.0, 0.5, 1.0]
})

var json_text = JSON.stringify(colors);

fs.writeFile("jet.json", json_text, function(err) {
    if(err) {
        return console.log(err);
    }
    console.log("The file was saved!");
}); 

在大多数情况下你应该添加属性,因为默认情况下它不存在。

现在您可以正常构建和运行应用程序,只有警告。

请注意.csproj文件中的其他 PropertyGroup 标记,这些标记特定于构建条件。

您可以在https://github.com/xamarin/xamarin-android/blob/master/Documentation/build_process.md

中查看其他构建属性和配置

答案 1 :(得分:0)

AndroidErrorOnCustomJavaObject:

  

一个布尔属性,用于确定类型是否可以实现   Android.Runtime.IJavaObject没有继承   Java.Lang.ObjectJava.Lang.Throwable

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

如果为True,此类型将生成XA4212错误,否则将生成XA4212警告。

在Xamarin.Android 8.1中添加了对此属性的支持。

默认情况下,此属性为True。

答案 2 :(得分:0)

我必须继承Lava.Lang.object并删除Android.Runtime.IJavaObject来解决问题。

答案 3 :(得分:0)

我通过右键单击解决方案并选择“清理”来修复此问题。如果您在尝试清理后收到要求您验证项目是否已选择在Solution Configuration Manager中部署的消息,则可以找到有关如何解决该问题的说明here

答案 4 :(得分:0)

所以我在更新visual studio时遇到了这个错误。我终于将它追溯到仍然指向mono.android的v4.1版本的csproj。进入并指向最新版本(我写作时的8.1)为我纠正了它。

<Reference Include="Mono.Android"> <HintPath>C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\Mono.Android.dll<HintPath> </Reference>