标签: xamarin.android

Mono for Android如何运作?

我对Android(由Novell)的Mono如何工作感兴趣.

我最大的问题是使用的实际运行时.MfA是否提供了一个Mono运行时,它包装并调用Dalvik运行时,或者在此操作中是否完全绕过了Dalvik?完全是别的吗?

我很好奇,因为我听说Mono运行时在移动设备上有更好的性能(不是我相信我在互联网上读到的任何内容......),而且我只是想了解整个事情.

关于比较和对比Mono/Dalvik运行时主题的任何其他一般知识将不胜感激.

谢谢!

mono android dalvik xamarin.android

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

在MonoDroid上实现IJavaObject

我目前正在尝试在类上实现ILocationListener以接收GPS更新 - 这不是一个Activity,只是一个普通的C#类.

作为ILocationListener合同的一部分,我需要支持I JavaObject:

    public IntPtr Handle
    {
        get { throw new NotImplementedException(); }
    }
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

另外,有没有好的文档和/或博客文章讨论如何在MonoDroid中绑定C#类和Java对象 - 如果我能找到这些文档,那么我可能不需要问这样的问题和我我们希望也能写出更好的代码.

谢谢

xamarin.android

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

MonoGame可靠吗?

我正在寻找一个跨平台的游戏开发框架.MonoGame看起来很容易学习和快速开发,但是我看到他们页面上的大部分游戏都不起作用,或者有很多错误.

任何人都可以解释MonoGame对于ios/droid专业手机游戏开发是否可靠?

mono xna xamarin.ios xamarin.android monogame

28
推荐指数
3
解决办法
2万
查看次数

Splash屏幕之前的黑屏出现在android中

我们知道,当应用程序做一些漫长的过程,比如从互联网上下载一些信息时,它可能会在加载应用程序之前显示启动画面,当应用程序完全加载时,它将显示主页面.在启动画面活动中,我们必须在线程中加载长进程,以避免在加载应用程序之前显示黑屏.我做了所有这些.但在显示应用程序之前还会出现黑屏.这是启动画面活动的onCreate方法:

    protected override void OnCreate (Bundle bundle)
    {
        try {
            base.OnCreate (bundle);
            //_dt = DateTime.Now.AddSeconds (_splashTime);
            SetContentView (Resource.Layout.Splash );
            FirstLoadPB= FindViewById <ProgressBar >(Resource .Id.FirstLoadPB );
            FirstLoadingInfo= FindViewById <TextView >(Resource .Id.FirstLoadInfo );
            LoadApplication ();

        } catch (System.Exception ex) {

            Common.HandleException (ex);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是LoadApplication方法的代码:

public void LoadApplication()
    {
        new System.Threading.Thread (new ThreadStart (() =>
                                                      {
        //Some Codes to load applications- Downloading from web and accessing the storage(Because was many codes - about 100 line- i was clear them.

        } …
Run Code Online (Sandbox Code Playgroud)

android splash-screen xamarin.android

28
推荐指数
3
解决办法
3万
查看次数

如何知道执行代码的当前操作系统/平台(Android/iOS)

使用Xamarin.Android和Xamarin.iOS,我现在需要共享代码部分中的当前操作系统.无论是enum,int还是字符串,都没关系.

我试过这个:

System.Environment.OSVersion
Run Code Online (Sandbox Code Playgroud)

对于某些内核版本信息,它始终是"Unix".

有关于Android的信息,例如

Android.OS.Build.VERSION
Run Code Online (Sandbox Code Playgroud)

但它需要在Android特定代码部分.有没有办法知道公共库中的当前操作系统?

c# xamarin.ios xamarin.android xamarin

27
推荐指数
2
解决办法
2万
查看次数

"java.exe"退出代码2 Xamarin.Android项目

所以我有我的Xamarin.Android项目,其中包含几个库.当我尝试构建时,我收到一个错误,其中"java.exe"退出代码2.

经过几个小时的谷歌研究后,我发现我可以启用Multidex.根据Jon Doublas的博客文章,我做了上面提到的步骤. http://www.jon-douglas.com/2016/09/05/xamarin-android-multidex/

根据博客文章Android API Level> 21处理Multidex本身.我的经验是,它没有.我在API级别25上构建并使用相同的信息一次又一次地获得相同的错误.文章中的步骤没有帮助.看起来像Xamarin.Android不支持Multidex.

看来你必须自己处理Multidex,但我还没有找到任何有效的解决方案.有没有人找到一个有效的解决方案?

我正在使用Xamarin 4.6和Visual Studio 2017.

java android xamarin.android xamarin android-multidex

27
推荐指数
6
解决办法
2万
查看次数

实现 Firebase 云消息传递时出现 Java.Lang.NoClassDefFoundError

我正在使用 Firebase Cloud Messaging 实现推送通知,为此我在我的 AndroidManifest.xml 文件中添加了此代码

<!--FCM RECEIVER-->
<receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
  android:exported="false"/>
<receiver
  android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
  android:exported="true"
  android:permission="com.google.android.c2dm.permission.SEND">
  
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
    <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
    <category android:name="${applicationId}"/>
  </intent-filter>    
</receiver>
<!---FCM RECEIVER ENDS HERE-->
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行该应用程序时,它甚至在开始活动之前就抛出了该应用程序

Java.Lang.NoClassDefFoundError: 'Failed resolution of: Lcom/google/android/datatransport/runtime/dagger/internal/Factory;'
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我为此功能安装了两个 NuGet 包:

  1. Xamarin.GooglePlayServices.Base
  2. Xamarin.Firebase.Messaging

我试过了:

  1. 删除 bin 和 obj 文件夹并再次构建解决方案
  2. 将所有相同的家族金块包更新为相同的版本

c# java android-manifest xamarin.android firebase-cloud-messaging

27
推荐指数
2
解决办法
5006
查看次数

DataContractSerializer的输出在.NET和Mono之间有所不同

我在Mono For Android应用程序中序列化数据并使用REST将其发送到使用WCF监听的.NET服务器.到目前为止,这已经运行良好,但是,对于这个特定的数据合同,虽然服务器没有抛出任何错误,但数据合同中的列表显示为空.

使用Fiddler并使用相同的代码创建两个项目,我能够将正常的.NET DataContractSerializer输出与Mono的DataContractSerializer实现的输出进行比较.

.NET输出:

<VisitDataContractEx xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/Organization.Project.DataContracts">
  <_isDirty xmlns="http://schemas.datacontract.org/2004/07/Organization.DataContracts">true</_isDirty>
  <_id xmlns:d2p1="http://schemas.datacontract.org/2004/07/Organization.Domain" xmlns="http://schemas.datacontract.org/2004/07/Organization.DataContracts">
    <d2p1:internalValue>a7b97b48-d3a9-419d-9f4e-330ffc7a01ee</d2p1:internalValue>
  </_id>
  <_key xmlns="http://schemas.datacontract.org/2004/07/Organization.DataContracts">false</_key>
  <_keyIdentifier xmlns="http://schemas.datacontract.org/2004/07/Organization.DataContracts">SurrogateKey</_keyIdentifier>
  <ChecklistComplete>false</ChecklistComplete>
  <Date>2013-03-05T15:43:49.5008406+02:00</Date>
  <GpsAccuracy>1</GpsAccuracy>
  <GpsLatitude>1</GpsLatitude>
  <GpsLongitude>1</GpsLongitude>
  <OrderComplete>false</OrderComplete>
  <PhotoComplete>false</PhotoComplete>
  <StockComplete>false</StockComplete>
  <Sync>2013-03-05T15:43:49.5468406+02:00</Sync>
  <checkListAnswers xmlns:d2p1="http://schemas.datacontract.org/2004/07/Organization.DataContracts">
    <d2p1:_list>
      <d2p1:IdentityDataReferenceOfCheckListAnswerDataContractExX8I0_S_SPU>
        <d2p1:_dataContract z:Id="i2">
          <d2p1:_isDirty>true</d2p1:_isDirty>
          <d2p1:_id xmlns:d6p1="http://schemas.datacontract.org/2004/07/Organization.Domain">
            <d6p1:internalValue>95ae919b-a389-4ea7-a009-af1b91890c36</d6p1:internalValue>
          </d2p1:_id>
          <d2p1:_key>false</d2p1:_key>
          <d2p1:_keyIdentifier>SurrogateKey</d2p1:_keyIdentifier>
          <Answer>false</Answer>
          <checkListQuestion>
            <d2p1:_dataContract i:nil="true" />
            <d2p1:_description i:nil="true" />
            <d2p1:_hasDataContract>false</d2p1:_hasDataContract>
            <d2p1:_id xmlns:d7p1="http://schemas.datacontract.org/2004/07/Organization.Domain">
              <d7p1:internalValue>176cbb31-7df2-4966-baa9-4e3cd2a0c6d5</d7p1:internalValue>
            </d2p1:_id>
          </checkListQuestion>
        </d2p1:_dataContract>
        <d2p1:_description i:nil="true" />
        <d2p1:_hasDataContract>true</d2p1:_hasDataContract>
        <d2p1:_id xmlns:d5p1="http://schemas.datacontract.org/2004/07/Organization.Domain">
          <d5p1:internalValue>95ae919b-a389-4ea7-a009-af1b91890c36</d5p1:internalValue>
        </d2p1:_id>
      </d2p1:IdentityDataReferenceOfCheckListAnswerDataContractExX8I0_S_SPU>
    </d2p1:_list>
  </checkListAnswers>
  <comments xmlns:d2p1="http://schemas.datacontract.org/2004/07/Organization.DataContracts">
    <d2p1:_list />
  </comments>
  <directSalesAgent xmlns:d2p1="http://schemas.datacontract.org/2004/07/Organization.DataContracts">
    <d2p1:_dataContract i:nil="true" /> …
Run Code Online (Sandbox Code Playgroud)

.net c# mono xamarin.android

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

(Android Xamarin)获取资源字符串值而不是int

我刚刚开始使用VS2012使用Xamarin创建一个简单的Android应用程序.我知道有一种资源只用于字符串.在我的资源文件夹中,我有一个像这样的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="RecordsTable">records</string>
   <string name="ProjectTable">projects</string>
   <string name="ActivitiesTable">activities</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我想使用这些资源的值,如:

string recordTable = Resource.String.RecordsTable; //error, data type incompatibility
Run Code Online (Sandbox Code Playgroud)

我知道 Resource.String.<key>返回一个整数,所以我不能使用上面的代码.我希望recordTable变量的值为records.

有没有办法可以将这些资源字符串的值用于我的代码的字符串变量?

android xamarin.android xamarin

26
推荐指数
2
解决办法
2万
查看次数

System.ObjectModel警告Xamarin不在Android上运行

我们在Windows 8.1环境中使用最新的Xamarin在Visual Studio Enterprise上运行"Welcome to Xamarin"示例.

我们正在设法在Windows和Apple上构建和运行,但我们面临着Android的问题.

错误: 找不到引用的组件System.ObjectModel.

错误可以在下面的屏幕截图中看到:

见截图

我们已经尝试在线搜索解决方案,我们找到了一些,我们尝试过,但无济于事.

另一方面,Xamarin是否与Windows 8.1兼容?也许某些Android需求实际上需要Windows 10环境.

任何帮助,将不胜感激.

c# android visual-studio xamarin.android xamarin

25
推荐指数
3
解决办法
2万
查看次数