目的

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

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

切记项目目录不要带中文

程序包设置

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

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

创建密钥存储文件

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

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

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

2.运行keytool工具

按照提示输入密码等设置

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

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

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

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

发布

使用.Net命令行来发布

参数介绍

-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 属性设置为自定义路径。”那么可以修改上面的发布命令为

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。