目的

很早就有想编写安卓程序玩玩的念头了,所以这次学习将MAUI程序生成apk包来玩。

本文apk下载地址:https://azrng.lanzouv.com/iBQRe0eeg8wf ,内容很简单,一个时间轴以及一个点击按钮切换背景图的东西,时间轴是学习Masa Blazor教程的,背景图的接口还是网上白嫖的,重点学习发布了apk,下面来简单介绍一下我的发布步骤吧

切记项目目录不要带中文

程序包设置

每个应用都应该指定唯一的包标识符和版本,配置在项目的.csproj文件中

<!-- 显示名 -->
<ApplicationTitle>MauiAppBlazor</ApplicationTitle> <!-- App 标识 -->
<ApplicationId>com.companyname.mauiappblazor</ApplicationId>
<ApplicationIdGuid>48CF021D-51ED-47B9-B8BC-E6005BE37A8A</ApplicationIdGuid> <!-- 版本 -->
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
<ApplicationVersion>1</ApplicationVersion>

创建密钥存储文件

使用密钥存储文件对包进行签名, Java/Android SDK 包含生成密钥存储所需的工具。 生成密钥存储文件后,将它添加到项目中,并将项目文件配置为引用它。提前安装 Java SDK ,以便你可以运行 keytool 工具。

执行下面的步骤创建密钥存储文件

1.打开终端程序并导航到项目文件夹

2.运行keytool工具

keytool -genkey -v -keystore myapp.keystore -alias key -keyalg RSA -keysize 2048 -validity 10000

按照提示输入密码等设置

该工具生成 一个 myapp.keystore 文件,该文件应与项目位于同一文件夹中。

添加对密钥存储文件的引用

修改项目的csproj文件做以下配置

<PropertyGroup Condition="$(TargetFramework.Contains('-android')) and '$(Configuration)' == 'Release'">
<AndroidKeyStore>True</AndroidKeyStore> <!--设置为 True 对应用进行签名-->
<AndroidSigningKeyStore>myapp.keystore</AndroidSigningKeyStore> <!--在上一部分中创建的密钥存储文件: myapp.keystore-->
<AndroidSigningKeyAlias>key</AndroidSigningKeyAlias> <!--传递给 keytool 工具的参数值:键-->
<AndroidSigningKeyPass>1234567</AndroidSigningKeyPass> <!--创建密钥存储文件时提供的密码-->
<AndroidSigningStorePass>1234567</AndroidSigningStorePass> <!--创建密钥存储文件时提供的密码-->
</PropertyGroup>

发布

使用.Net命令行来发布

dotnet publish -f:net7.0-android -c:Release /p:AndroidSigningKeyPass=123456 /p:AndroidSigningStorePass=1234567

参数介绍

-f :目标框架,例如net7.0-android

-c:生成配置,例如Release

/p:AndroidSigningKeyPass:上面AndroidSigningKeyPass项目设置的值,也就是创建密钥文件时候的密码

/p:AndroidSigningStorePass :上面AndroidSigningStorePass项目设置的值,也就是创建密钥文件时候的密码

发布之后会生成到相对路径为:\bin\Release\net7.0-android\publish

包含aab文件和apk文件,有两个 aab 文件,一个未签名,另一个已签名。 签名的变体在文件名中具有 -signed 。

错误处理

如果打包的时候遇到“error XA5300: 找不到 Android SDK 目录。请检查 Visual Studio 中的 Android SDK 管理器是否显示有效的安装。若要使用命令行 生成的自定义 SDK 路径,请将 "AndroidSdkDirectory" MSBuild 属性设置为自定义路径。 ”那么可以修改上面的发布命令为

dotnet publish -f:net7.0-android -c:Release /p:AndroidSigningKeyPass=123456 /p:AndroidSigningStorePass=1234567 /p:AndroidSdkDirectory=D:\Android\android-sdk

这个安卓sdk的地址只能你自己在你电脑上找了。

参考资料

官网资料:https://learn.microsoft.com/zh-cn/dotnet/maui/android/deployment/publish-cli

MAUI发布APK初体验的更多相关文章

  1. MAUI 初体验 联合 WinForm 让家里废弃的手机当做电脑副品用起来

    软件效果图 软件架构草图 效果解释:运行 winform 端后 使用 ctrl+c 先复制任何词语,然后ctrl+空格 就可以将翻译结果显示在 安卓,IOS,windows 甚至 mac 任意客户端 ...

  2. Python 3.8.0 正式版发布,新特性初体验 全面介绍

    Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...

  3. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  4. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

  5. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  6. win7升win10,初体验

    跟宿舍哥们聊着聊着,聊到最近发布正式版的win10,听网上各种评论,吐槽,撒花的,想想,倒不如自己升级一下看看,反正不喜欢还可以还原.于是就开始了win10的初体验了,像之前装黑苹果双系统一样的兴奋, ...

  7. 【尝新】微信小程序初体验

    文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1474644089434 根据文档地址中下载微信开发工具后,按照文档指引可以创建一个快速体验的小d ...

  8. git初体验(三)git分支

    分支的理念就是分身,就像孙悟空拔出猴毛变出很多跟自己一模一样的猴子,然后每个猴子做自己的事情互不干涉,等到所有猴子做完之后,猴子集合来合并劳动成果,然后悟空就把那些猴子猴孙门统统收回了. 你创建了一个 ...

  9. SignalR初体验

    简介 ASP .NET SignalR[1]  是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以 ...

  10. Kali Linux 2016.2初体验使用总结

    Kali Linux 2016.2初体验使用总结 Kali Linux官方于8月30日发布Kali Linux 2016的第二个版本Kali Linux 2016.2.该版本距离Kali Linux  ...

随机推荐

  1. _0x4c9738 怎么还原?嘿,还真可以还原!

    _0x4c9738 变量名还原,噂嘟假嘟? 代码混淆(obfuscation)和代码反混淆(deobfuscation)在爬虫.逆向当中可以说是非常常见的情况了,初学者经常问一个问题,类似 _0x4c ...

  2. 自动化部署实例(donetcore GitLab CICD )

    主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 .net core 项目,来带小伙伴们感受一下自动化的魅力,从此告别手动发布. 准备工作 创 ...

  3. Qt 信号重载问题

    Qt信号重载问题 例如QComBox的currentIndexChanged信号,包括 void QComboBox::currentIndexChanged(const QString &t ...

  4. 虚幻引擎 4 学习笔记 [1] :蓝图编程 Demo

    虚幻引擎 4 学习笔记 [1] :蓝图编程 Demo ​ 最近学习虚幻引擎,主要看的是 Siki 学院的课,课程链接:Unreal蓝图案例 - 基础入门 - SiKi学院|SiKi学堂 - unity ...

  5. LeetCode刷题日记2020/8/22

    题目 24点程序 描述 你有 4 张写有 1 到 9 数字的牌.你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24. 示例 1: 输入: [4, 1, 8, 7] 输出: True 解释: ...

  6. 在QEMU-KVM环境下部署Oracle 19.16 RAC

    KVM环境和其他虚拟化或真实生产最大差异主要就是在实施前期准备工作上: 具体在 DB节点 和存储环境 的准备工作上有差异,本文会详细说明. 而剩余基本软件安装和补丁应用部分无差异,若不清楚可以直接参考 ...

  7. [Java]Java类中的各元素初始化顺序

    Java类中各元素的初始化顺序 初始化的原则是: 先初始化静态部分,再初始化动态部分:(先静再动) 先初始化父类部分,后初始化子类部分:(先父再子) 先初始化变量,次初始化代码块,再初始化构造器:(先 ...

  8. BeginCTF 2024(自由赛道)MISC

    real check in 题目: 从catf1y的笔记本中发现了这个神秘的代码 MJSWO2LOPNLUKTCDJ5GWKX3UN5PUEM2HNFXEGVCGL4ZDAMRUL5EDAUDFL5M ...

  9. EGF:指数型生成函数

    对于一个数列 \(<a_n>\),定义其指数型生成函数(EGF)\(\hat{a}(x)=\displaystyle\sum_{n\ge 0}\dfrac{a_n}{n!}x^n\). 例 ...

  10. 【学习笔记】Tarjan

    更好的阅读体验 前言 凡事都得靠自己 --bobo 催隔壁 @K8He n 天了让他写 \(Tarjan\) 的学习笔记,但貌似还没有动静,所以决定自己写一个. 正文 本文配套题单:14.图论-tar ...