首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

今天的学习内容? 也只讲一个,如何打包生成安卓可安装的APK并精简大小. 正文 我记得,之前在写安卓方面的文章的时候,有人就问过我.Xamarin.Android为什么打包出来这么大?...(默认为无) Xamarin.Android中的链接器采用静态分析来确定Xamarin.Android应用程序使用或引用了哪些程序集,类型和类型成员。...ProGuard通常用于减少APK中大型附加库(如Google Play服务)的占用空间来获得较小的应用程序。 ProGuard会删除未使用的Java字节码,这就会让生成的应用程序更小。...一般,在小型Xamarin.Android应用程序上使用ProGuard通常可以减少大约24%的大小 如果,在具有多个库依赖性的较大应用程序上使用ProGuard通常可以实现更大的尺寸缩小。...生成过程是首先使用Xamarin.Android链接器来优化应用程序中的托管(C#)代码,然后使用ProGuard(如果启用)在Java字节码级别优化APK。

3K80

.NET 8 中 Android 资源生成的改进和变化

旧系统使用了名为 UpdateIdValues 的方法,该方法在启动时调用。该方法将遍历所有库项目并更新资源 Id以匹配应用程序中的资源 Id。根据应用程序的尺寸,这可能会导致严重的启动延迟。...该程序集将保存在IntermediateOutputPath 中,并且它会自动添加到应用程序或库的References列表中。 对于库项目,我们生成引用程序集而不是完整程序集。...view=net-7.0 我的 NuGet 包仍然有效吗? 有些人可能担心通过此更改,现有的包引用将停止工作。不用担心,新系统引入了一个修剪步骤,它将会升级旧系统的程序集引用以使用新系统。...如果您需要支持 .NET 7 或 Classic Xamarin.Android,请考虑使用多目标定位。...如果您需要支持这两个系统,您可以使用Xamarin.Legacy.Sdk来同时支持 Xamarin.Android 和 net8.0-android。

25110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    国内 Mono 相关文章汇总

    2.0/System.XML 2.0/System.Drawing/Linq/GTK#等类库的实现。...其中,C#编译器对C# 3的支持已经完整;标准库方面,WinForms 2.0的API已经完整支持,LINQ和ASP.NET的支持也比之前更为完善;执行引擎开始共享泛型代码后占用内存量减少了,同时Mono...) 让Jexus支持高并发请求的优化技巧 iOS学习系列 - MonoTouch绑定原生Obj-C静态库的实现 Linux上搭建Asp.net MVC3环境(CentOS + Nginx + Mono)...2.0:基于Mono跨平台开发框架 Xamarin向iOS和Android引入C# Async支持 我有罪啊,我用了一下午时间,终于无师自学,用C#开发了俺的第一个Android 浏览器APP,我对不起....NET开发环境 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录 Xamarin.Android快速入门 MONO x64 amd_x64 Xamarin.Android多界面

    11.4K60

    datahub 中血缘图的实现分析,在react中使用airbnb的visx可视化库来画有向无环图

    之前在公司也做过一些案例,也看过很多友商的产品,阿里的DataWork,领英的Datahub, datawork的血缘图使用的是 G6,自家的产品 Datahub使用的是 爱彼邻的 可视化库 visx...该血缘图的特性如下 上下游 自定义节点 节点可点击,操作 线的样式有多种 鼠标放置线上有辅助信息 可以展开上下游 最基本的放大,缩小视图 F12 节点的源码,发现使用的是SVG 实现的 标签的类前缀都是...vx,但直接搜没有搜到,于是去项目的package.json中寻找使用的库。...使用 VISX 可以方便地将设计元素添加到 React 应用程序中。它是由 Airbnb 构建的。...提前关键词,该库具有的特征 为react 低级元素 可视化 低级元素是说它不直接提供一个个完整的图表,而且要使用多个元素组装实现,这也意味着 要使用它,还是有一点门槛的,但人家的审美确实在线。

    85730

    1. 什么是Xamarin

    利用 Xamarin 我们可以管理不同平台 APP 的共享代码与基础平台代码的通信,并且 Xamarin 上开发的 APP 是在托管环境中运行的,也就是说它会帮助我们来管理内存分配、垃圾回收等事情。...Xamarin 可以让开发人员跨平台共享应用程序的代码,这样就可以使用一种编程语言开发所有平台的 App 。 Tip:编译、部署 IOS 应用程序必须在 MacOS 种进行。...互操作性: Xamarin 可以直接调用 Object-C 、 Java 、 C 以及 C++ 所开发的库,并且可以使用声明性语法绑定本机的 Object-C 以及 Java 库。...Xamarin.Android 开发的应用程序是运行在 Mono 环境中的,Mono 环境与 Android 运行时虚拟机并行运行。...Xamarin.Forms 使用 XAML 来创建 UI 界面。这些 UI 会在不同平台上呈现为本机控件。

    4.4K10

    Xamarin.Forms 阐述和环境搭建

    最近几年M$又把这个库收入自己麾下。在 visual studio 系列开发套件中提供免费版的。为广大C#码农提供了更便利的跨iOS,android,windows系统的开发工具。...必须是Xamarin.Forms!!!,什么Xamarin.Android,什么Xamarin.iOS啥的,我觉得根本没有必要考虑。...用Xamarin.Android的C#开发android平台的专用App,我看还不如学习一下Java或者Kotlin,虽然对于C#码农来说这两个语言可能(牛人不在此列)陌生,但是学习它俩的成本,也许不比填...Xamarin.Android各种坑来的多。...有填Xamarin.Android的各种坑的时间,Java或者Kotlin都已经滚瓜烂熟了!iOS的OC或者Swift也是同理!          所以我们重点还是学习Xamarin.Forms吧!

    1.7K20

    C#移动跨平台开发(2)Xamarin移动跨平台解决方案是如何工作的?

    ) Applications 应用程序层(由Java编写并且在Dalvk虚拟机来运行)   现在做Android开发的同学只要熟悉这些应用框架层的一些接口和类库就可以给方便的来实现自己的Android应用程序...对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域。   大家注意第2点和第7点有助于我们理解Xamarin.Android的工作机制。...Java编写的Android应用程序通过调用 Android.* 和 Java.* 这些命名空间下的类来实现一些系统的功能包括:声音、显示、OpenGl等一些通过Java API不能实现的功能或者说是与硬件...,当然在Xamarin.Forms不能够满足你的要求的时候,可以使用Xamarin.Android和Xamarin.IOS的UI控件,这些也是Native的,也就是说在UI方面不会有性能的影响。   ...就目前来看C#来开发IOS应用更具有优越性,我们要在VS中开发Iphone的应用程序需要配一台Mac来做编译。

    2.6K110

    Xamarin 社区工具包的现状和未来

    这对大家都有利:维护者不必承担单独维护一个库的负担,库不再那么分散,它将被添加到一个活跃的、由微软支持的、更知名的库中。...他们会不会成为一个很大的库?我认为不会如此。不会比我刚才描述的多。对于这一点,我认为最好是了解一下不同的软件开发工具包(SDK),以及它们如何相互配合。...这样一来,那些对 MVVM 不感兴趣的人就不会获取到他们不使用的代码,但仍然可以非常容易地添加它。 单个大库在依赖性方面也有很大的缺点。...你可以在 Xamarin.Android 或 Xamarin.iOS 项目中使用 Essentials 的所有 API,如果你想那样做的话。...InfoQ:将来的话,在.NET MAUI 社区工具中实现的所有新特性都会在 Xamarin 社区工具包中实现吗?

    2.8K20

    安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少

    这里我只提出几个“必备的”组件: Sherlock Action Bar:作者Jake Wharton。这个工具栏设计扩展了支持函数库,可以通过一个API操作各个版本的安卓工具栏。...该函数库会在合适的时候自动调用原生工具栏,也可以在你布局基础上封装一个自定义实现。这样你就可以很轻松地为各种2.x及以上的安卓版本开发一个带工具栏的应用。...我的最爱(以及常用的工具)包括: Android Universal Loader:高度可定制图片下载和加载函数库。支持从缓存或文件加载,配置非常简单。...毕竟,我们必须确保开发的程序能正常工作。能遵循测试驱动开发(TDD)当然最好,但是有时候我们只需要一些简单的测试。这只是我个人的看法,最终选择权始终在你手上。...我得说:Gradle是新的安卓官方构建工具,相关的安卓插件在不久的将来应该会很快开发并支持,所以继续关注。 我总是会鼓励开发者使用并重用经过检验的概念、模式、框架和函数库。

    1.2K70

    为你的 Python 程序写个启动工具箱

    为了方便他人使用,我们常把图形界面打包成 exe 文件。但是如果我们只是为了自己使用方便的话,我们有必要把程序打包成几十乃至上百兆的 exe 文件吗?没有必要。我们只要能够快速启动图形界面就可以了。...用 Python 实现启动工具箱 下面,我将演示如何使用 PyQt5 实现一个启动工具箱。...主要实现了以下功能: 通过工具栏可以直接执行 python 程序 九宫格右键保存或者删除快速启动链接 九宫格左键点击显示图形界面 为了方便使用,我们可以把这个软件打包成 exe 文件,或者重命名为 pyw...如果使用了相对路径,必须在你的“PDF阅读器”源代码关于路径的地方加上下面这行代码。下面这行代码把当前路径更改为你的“PDF阅读器”所在目录。...数据库保存的信息,就是关键点三中提到的 button 的属性。

    1.4K20

    .NET 类库

    您可以使用三种类型的类库: 特定于平台的类库可以访问给定平台(例如,.NET Framework、Xamarin iOS)中的所有 API,但只能由面向该平台的应用和库使用。...可移植类库可以访问 API 的子集,并且可供面向多个平台的应用程序和库使用。 .NET Standard类库将特定于平台的和可移植的库概念合并到一个模型中,该模型提供了两者的优点。...即使出现了其他 .NET 实现,特定于平台的库仍然是主要的库类型。 可移植类库 多个 .NET 实现支持可移植库。...NET 实现必须完全支持或根本不支持每个契约。因此,每个实现都支持一组 .NET Standard 协定。推论是每个 .NET Standard 类库都在支持其契约依赖项的平台上受支持。...以下平台支持 .NET Standard 库: .NET 核心 .NET 框架 单核细胞增多症 Xamarin.iOS、Xamarin.Mac、Xamarin.Android 通用 Windows 平台

    73020

    C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码

    今天主要学习Xamarin.Forms中提供的各类页面,如图: 效果如下: 正文 1.创建跨平台的可移植项目    首先我们先新建一个项目,具体如图: 第二步我们选择如下: 注意:这里一定要选择可移植的类库...项目创建完成,我们就可以编写我们的代码了. 1.ContentPage(内容页) 进入我们的项目我们会发现已经帮我们创建好了一些必须会使用到的页面如图: 每个xaml下面都对应着一个cs文件,是不是和我们的...效果如图: 这是一个很有用的基础页面,我们在很多APP中应该都见过. 我们看看来如何使用它. 我们直接新建项.如图选择: 点击添加,会添加4个文件,如图: 我们一个个来讲解....写在最后 前面我写过一个系列是关于Xamarin.Android的,导致很多朋友都以为,Xamarin只能开发安卓  - -,我很方.....地址如下: C#开发移动应用系列(4.调用系统应用,以及第三方应用(调用与被调用)) 说一下为什么先写Xamarin.Android,因为你要开发移动APP,对于一些移动开发概念的了解是必须的,并不是说

    5.5K61

    跨平台应用框架_安卓前端框架

    而且,由于直接使用了系统原生控件来呈现界面,它能为用户提供近乎原生平台应用的使用体验。 我要不要使用跨平台开发这项技术?...在设计移动应用程序时应要考虑这些,但是,你可以使用跨平台框架来实现类似的效果。 时间和成本 有一点是肯定的,原生开发成本不低、效率也不高。...Beta版中的Web支持。 这不是一个完整的清单,因为Flutter的目标是让每年发布的四个版本中的每一个版本都能为框架的可用性提升一个台阶。...前一种方法优先考虑共享业务逻辑,并通过使用本机接口控件实现近乎本机的性能。...微信和钉钉则采用纯HTML5实现,开发者无需针对特定平台定制开发,即可拥有支持多终端的企业级移动应用。

    2.6K20

    张高兴的 Xamarin.Forms 开发笔记:Android 快捷方式 Shortcut 应用

    Shortcut 是受启动器限制的,也就是说国内大厂的定制系统大多数是不支持的,那些所谓的可以 pin 在桌面上的应用功能的快捷启动图标本质上就是 Shortcut 。 ?...二、Shortcut 在 Xamarin.Forms 中的实现分析 本文讨论的是动态 Shortcut 实现。...原因是传入的 Forms Page 类并不是 Java 的原生类型。查阅 Xamarin.Android 的相关文档发现,这个 Type 是必须继承 Activity 类的。...三、代码实现 下面新建一个空的 Cross-Platform 项目 ShortcutDemo ,使用 Shared Project 共享代码。...,由于 Forms 的初始化以及加载已被剥离至 FormsActivity.cs 中,可将 MainActivity.cs 的继承改为 Activity 类。

    1.6K70

    自己开发一个 vsts agent 的 task

    vsts 中支持自定义Build/Release的过程Task 目标:做一个可以读取 Xamarin.Android 所生成的 APK 的 基本信息的 task ,包括 package(包名) / application...,如 d:\code\home 4.通过 npm 安装编译工具 tfx-cli  npm i -g tfx-cli 5.在自己的项目文件夹中建立一个 vss-extension.json 文件,这个文件中说明了当前扩展包的信息... extract-xamarin-android-manifest(我的任务) 的插件,文件夹结构是这样的 extension-icon.png (vsix的图标) vss-extension.json...- task.json (任务的配置文件) 其中 task.json 是最主要的文件,我当前的这个扩展是读取 Xamarin.Android 的项目,并且读取出生成 apk 的基础信息,包含 application...,我这里是执行了一个powershell脚本,有兴趣的同学可以看下,就是读取了apk的AndroidManifest的xml结构 "PowerShell": { "target":

    83110

    WPF 画布工具栏的可扩展设计

    我在写一个和 PS 差很多的工具,这个工具中间有一个画布,而我需要写一个扩展很好做的工具栏集合,这个工具栏设计上需要支持可以让小伙伴愉快的拆卸,功能足够独立,使用方便。...本文就来告诉大家我的这个设计方案 大概的软件的界面如下图 我期望在代码上,这个库可以方便被大家使用,而小伙伴使用的时候最多的是扩展工具栏。如添加一个自己的工具栏。...毕竟工具栏的作用就是更改画布的内容等 当然,最简单的方法是在后台代码里面使用属性赋值的方法,但是属性赋值的方法意味着在 XAML 写完还必须在后台代码里面添加属性赋值的代码 如我有一个用来管理画布的类,...而通过 EndInit 方法判断设置又解决不了属性赋值问题 而另一个方式是通过全局静态属性的方法获取,这是当前我团队的一个古老的项目使用的方法,这样就提升了耦合度,存在的坑是我需要在这个项目里面多添加一个画布的时候就发现原有的工具栏无法进行复用...其实可以使用附加属性的方法 附加属性可以支持继承,也就是上层容器,如 Grid 等这些容器控件设置的属性,将会被容器内的所有控件获得。

    47910

    张高兴的 Xamarin.Forms 开发笔记:Android 快捷方式 Shortcut 应用

    Shortcut 是受启动器限制的,也就是说国内大厂的定制系统大多数是不支持的,那些所谓的可以 pin 在桌面上的应用功能的快捷启动图标本质上就是 Shortcut 。 ?...二、Shortcut 在 Xamarin.Forms 中的实现分析 本文讨论的是动态 Shortcut 实现。...原因是传入的 Forms Page 类并不是 Java 的原生类型。查阅 Xamarin.Android 的相关文档发现,这个 Type 是必须继承 Activity 类的。...三、代码实现 下面新建一个空的 Cross-Platform 项目 ShortcutDemo ,使用 Shared Project 共享代码。...,由于 Forms 的初始化以及加载已被剥离至 FormsActivity.cs 中,可将 MainActivity.cs 的继承改为 Activity 类。

    1.4K20
    领券