标签: xamarin.android

针对Xamarin Android上的64位架构

我收到了Google的电子邮件,我们需要在2019年8月1日之前开始在我们的Android应用程序中支持64位CPU。在其文档中,该文件指出,如果您的apk内容中应该有一个lib / arm64-v8a文件夹,重新正确支持64位。

在此处输入图片说明

在我的Xamarin项目选项>构建>编译器设置中,我的平台目标设置为“任何”,因此我希望它可以构建32位和64位版本。但是,当我生成发行版本并将其打包到apk中时,当我浏览apk时,它只有一个lib / armeabi-v7a文件夹,而没有v8a文件夹。那么,我需要怎么做才能支持64位架构?

编辑:我应该包括此屏幕快照,显示我支持的ABI:

在此处输入图片说明

android xamarin.android xamarin

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

使用一种编程语言(C#)针对多个移动平台进行定位/开发?成本效益?

今天,可以将C#编程用于多个移动平台,例如:

(如果我错过了一些,请随时编辑)当然,它仍然是UI的编程工作,但可以共享主要的应用程序库.

我们都感谢一群聚集在Mono项目和超级英雄Miguel de Icaza的团队,他们的努力是无价的.

困扰我的是,这些选择的好处是什么?在多个移动平台上维护一个应用程序的成本是否较低,然后必须单独编写每个库以获得更好的性能.每种语言的学习曲线?作为所有行业的杰克与.NET忍者

或者知道在原生环境中编写的应用程序二进制文件的大小较小,甚至可能更好地进行优化,而不是忘记您必须等待新平台操作系统更新的支持.

更新:显然还有一件事需要考虑,那就是支持.由于Novell被Attachmate Group收购,所有Mono团队都被解雇了.然而,由Miguel De Icaza领导的团队的核心成员创建了新公司 Xamarin,它将从零开始重塑Mono Mobile开发工具.

.net android xamarin.ios windows-phone-7 xamarin.android

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

Android Intent Chooser仅显示电子邮件选项

我的应用程序集成了电子邮件,用户可以直接从应用程序提交错误报告,反馈等.我正在使用application/octet-stream作为Intent的SetType.当您提交电子邮件时,您将获得内容选择器,并显示来自Evernote,Facebook,电子邮件等的各种项目.

如何让此选择器仅显示电子邮件,以免将用户与适合内容选择器类型的所有其他项目混淆?

谢谢.

android android-intent xamarin.android

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

Android活动背景图片

如何在活动主题/样式中使用背景图像?

如果我使用颜色这样做:

<style name="CustomTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@color/custom_theme_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我用以下代码替换:

<item name="android:windowBackground">@drawable/splash_image</item>
Run Code Online (Sandbox Code Playgroud)

图像显示正确,但所有内容都被压缩到屏幕左上角的一个小块中.状态栏下方的阴影也会被切断或混乱.

我正在使用Mono for Android,图像是一个有效的九补丁png.

android background splash-screen android-manifest xamarin.android

24
推荐指数
4
解决办法
4万
查看次数

MarkerClick有效,但InfoWindowClick无法打开ViewModel

以下MarkerClick实现工作,非常好.我可以打开其他View viaShowViewModel

View.cs

mMap.MarkerClick += MMap_MarkerClick;

private void MMap_MarkerClick(object sender, GoogleMap.MarkerClickEventArgs e)
{
   ViewModel.MapInfoSelected(e.Marker.Title);
}
Run Code Online (Sandbox Code Playgroud)

ViewModel.cs

public void MapInfoSelected(string name)
{
    ShowViewModel<StudentViewModel>(new { studentName = name});
}
Run Code Online (Sandbox Code Playgroud)

InfoWindowClick 不会触发打开其他视图.

View.cs

mMap.InfoWindowClick += MMap_InfoWindowClick;

private void MMap_InfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e)
{
  ViewModel.MapInfoSelected(e.Marker.Title);
}
Run Code Online (Sandbox Code Playgroud)

ViewModel.cs

public void MapInfoSelected(string name)
{
 // it hits here, but does not hit `StudentViewModel` Init() method, the app is frozen and do nothing
    ShowViewModel<StudentViewModel>(new { studentName = name});
}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了SetOnInfoWindowClickListener如下,它也没有打开视图.

 mMap.SetOnInfoWindowClickListener(this);

 public …
Run Code Online (Sandbox Code Playgroud)

android google-maps xamarin.android mvvmcross xamarin

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

如何从System.Diagnostics.Process停止进程并最终获取统计信息

我正在使用此代码但是当我停止进程时它不会获得ping统计信息:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "ping";
p.StartInfo.Arguments = "-c " + count + " -i " + interval + " -s " + buffer + " -W " + timeout + " " + address;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;

string readData = "";

DateTime dt = DateTime.Now.AddSeconds(5);
if (p.Start())
{
    Scanner scanner = new Scanner(p.StandardOutput.BaseStream);

    while (scanner.HasNextLine)
    {
        readData =  scanner.NextLine().ToString();
        Console.WriteLine(readData.ToString());

        if (!string.IsNullOrEmpty(readData) && !readData.StartsWith("---"))
        {
            Match M = Regex.Match(readData, @"^[\d]+ bytes from ([^:]+): …
Run Code Online (Sandbox Code Playgroud)

c# mono android xamarin.android xamarin

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

Visual Studio 2017 - Xamarin - 文件"obj\Debug\android\bin\packaged_resources"不存在

我已经对这个问题进行了2天的斗争,但找不到任何解决方案.

我在Visual Studio 2017中有一个Xamarin Android应用程序,包含三个项目:

  1. Xamarin.Android项目(主要)
  2. 特定于Android的单元测试在设备上运行 - NUnit 3 Test Project (Android)使用NUnit Templates for Visual Studio创建的类型项目
  3. 独立于平台的单元测试项目(类型项目Unit Test Project (.NET Framework))

一切都运作良好,直到现在.当我选择我的主项目作为启动项目时,我的应用程序已部署到设备/模拟器.当我选择特定于Android的单元测试项目时,部署测试项目并在设备/模拟器上由nUnit Xamarin Runners执行单元测试.

但是几天前我用最新的可用更新更新了我的Visual Studio 2017,现在,当我尝试构建这个特定于android的单元测试项目时,我收到以下错误:

The file "obj\Debug\android\bin\packaged_resources" does not exist.

我到处搜索,包括这个这个 SO主题.我还完全重新安装了包含Android SDK的Visual Studio 2017和Xamarin.什么都没有帮助.根据我的阅读,我怀疑我安装的Android SDK Build-tools版本有问题.这是我目前在SDK Manager中安装的内容: 在此输入图像描述

正如其他SO线程建议的那样,我尝试卸载最新的Android SDK Build-tools(25.0.2)并安装了版本23.0.3(我的所有项目都针对Android 6.0),但它也没有帮助,我仍然有相同的错误.

也许值得补充一点,当我尝试在我的应用程序中阅读教程时实现RecyclerView时,这个问题可能已经开始发生,他们建议在SDK Manager中安装Android 7.1.1(API 25).然而,在此之后我撤消了我的所有更改,甚至重新命名了VS2017 + Xamarin.

你知道为什么会这样吗?我真的很感激任何帮助.谢谢!

编辑2017-04-09:

呃,我删除了VS2017,用全新的Android SDK安装VS2015仍然是同样的问题:(

android xamarin.android xamarin visual-studio-2017

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

如何在Xamarin.Android中注册我自己的Application子类?

我有

public class MyApp : Application
Run Code Online (Sandbox Code Playgroud)

在Java中,我会在清单中添加一行,并将其传递给我的应用程序的名称空间和名称:

<application android:icon="@drawable/icon" android:label="@string/app_name"
    android:name="com.devahead.extendingandroidapplication.MyApplication">
Run Code Online (Sandbox Code Playgroud)

在Xamarin中,有[Application]属性,但文档声明该Name成员不受支持.那么如何让我的子类注册?在哪里应用属性?

如果我将属性添加到我的子类,我得到:

System.NotSupportedException: Unable to activate instance of type TestClient_Android.MyApplication from native handle 14d00019
Run Code Online (Sandbox Code Playgroud)

android xamarin.android

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

无法在Visual Studio 2015中创建新的空白应用程序(Android)

我正在尝试使用已安装的Xamarin,Android SDK和Android模拟器在Visual Studio 2015中创建一个新的空白应用程序(Android).在尝试创建新项目时,我只是弹出一条消息:

值不能为空.参数名称:path1

解决方案资源管理器为空,只在Projects文件夹中创建一个空文件夹.

我该如何解决?

android xamarin.android xamarin visual-studio-2015

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

手机进入睡眠状态后,保持wifi在前台服务中处于活动状

我想在手机锁定时从wifi接收数据包.问题是,当我锁定屏幕时,我的前台服务停止接收数据包.我正在使用Foreground Service,如下所示:

public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
    var notification = new Notification.Builder(this)
        .SetContentTitle(Resources.GetString(Resource.String.app_name))
        .SetContentText(Resources.GetString(Resource.String.notification_text))
        .SetSmallIcon(Resource.Drawable.ic_stat_name)
        .SetContentIntent(BuildIntentToShowMainActivity())
        .SetOngoing(true)
        .AddAction(BuildRestartTimerAction())
        .AddAction(BuildStopServiceAction())
        .Build();


    // Enlist this instance of the service as a foreground service
    StartForeground(Constants.SERVICE_RUNNING_NOTIFICATION_ID, notification);

    /*DO THIS EVEN WHEN SCREEN IS LOCKED*/

    var powerManager = (PowerManager)GetSystemService(PowerService);
    _wakeLock = powerManager.NewWakeLock(WakeLockFlags.Partial, "WakeLockTag");
    _wakeLock.Acquire();

    var wifiManager = (WifiManager)GetSystemService(WifiService);
    _wifiLock = wifiManager.CreateWifiLock(WifiMode.FullHighPerf, "xamarin_wifi_lock");
    _wifiLock.Acquire();

    if (!powerManager.IsIgnoringBatteryOptimizations("com.xamarin.xample.foregroundservicedemo") ||
        !_wakeLock.IsHeld || !_wifiLock.IsHeld)
        throw new InvalidOperationException("OPTIMIZATIONS NOT ACTIVE");

    string msg = timestamper.GetFormattedTimestamp();
    Log.Debug(TAG, msg); …
Run Code Online (Sandbox Code Playgroud)

c# android xamarin.android xamarin xamarin.forms

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