在路径上找不到类“android.support.constraint.ConstraintLayout”:Xamarin.Android中的DexPathList

时间:2017-06-01 12:45:17

标签: c# xamarin xamarin.android android-constraintlayout

我有非常简单的xamarin经典应用程序,其中包含以下.axml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
   <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Hello World!"/>
</android.support.constraint.ConstraintLayout>

并关注.cs文件

[Activity(Label = "sa", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.Main);//error throws here
    }
}

我找到了.gradle的下一个代码来启用约束布局

dependencies {
              compile 'com.android.support.constraint:constraint-layout:1.0.2'
           }

但是,当然,它在Xamarin.Android中不起作用。我试着安装 Xamarin Android Constraint Layout 1.0.0-beta5

但它不适用于Mono.Android 6.0。

我如何解决我的问题?任何猜测?

3 个答案:

答案 0 :(得分:1)

由于某种原因,类android.support.constraint.ConstraintLayout没有制作dex列表。

有些原因可能是:

  • 未安装
  • 它正在被链接
  • 它不是主要的dex列表,而只是第二个dex列表。

使用Classy Shark确定发生了什么(https://github.com/google/android-classyshark)。确保将链接器设置设置为None,以确保Mono链接器不会将其删除。

答案 1 :(得分:0)

所有我需要的是改变单声道框架版本是android.csproj         V7.0

答案 2 :(得分:0)

我最近(实际上是今天)遇到了这个问题,并且能够通过在我的linker settings

中添加例外来解决
<assembly fullname="Xamarin.Android.Support.Constraint.Layout">
  <type fullname="*" />
</assembly>

<assembly fullname="Xamarin.Android.Support.Constraint.Layout.Solver">
  <type fullname="*" />
</assembly>

很显然,各个班级已经联系在一起了(正如乔恩·道格拉斯所建议的那样)。通过添加此异常,可以防止类被链接掉。