为 MAUI .NET 8 - Android 设置 VS Code 环境

问题描述 投票:0回答:2

我拼命尝试在 Mac 版 VS Code 上设置所有内容,以便能够构建和发布 MAUI .NET 8 应用程序。我还有一个 MAUI .NET 7,实际上是在 VS for Mac 2022 上开发和构建的,但我很快就需要将其迁移到这个新的 IDE。 当我执行

 dotnet build -t:InstallAndroidDependencies -f:net8.0-android -p:AcceptAndroidSDKLicenses=True
建议的命令时,我得到以下输出:

MSBuild version 17.8.3+195e7f5a3 for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `platforms;android-34` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "platforms;android-34"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `build-tools;34.0.0` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "build-tools;34.0.0"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `platform-tools` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "platform-tools"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `cmdline-tools;11.0` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "cmdline-tools;11.0"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]

Build succeeded.

/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `platforms;android-34` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "platforms;android-34"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `build-tools;34.0.0` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "build-tools;34.0.0"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `platform-tools` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "platform-tools"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
/usr/local/share/dotnet/packs/Microsoft.Android.Sdk.Darwin/34.0.52/tools/Xamarin.Installer.Common.targets(12,3): warning : Dependency `cmdline-tools;11.0` should have been installed but could not be resolved. You can attempt to install it with: `/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin/sdkmanager --install "cmdline-tools;11.0"` [/Users/michelewilliammanco/Projects/TestNET/TestNET.csproj::TargetFramework=net8.0-android]
    4 Warning(s)
    0 Error(s)

问题是我无法正确解析想要的SDK。我多次尝试使用

sdkmanager
中的
/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/11.0/bin
可执行文件安装警告中提到的所有软件包,但它会说该可执行文件已使用更新版本的 Java 编译。如果我尝试从
/Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/7.0/bin
执行相同的命令,它似乎可以工作,但是没有任何变化,工具应该已经安装,但无论如何都无法解决。 我陷入了这种奇怪的境地。还要考虑一下,VS for Mac 2022 不再让我能够安装新的 Android SDK,因为它很快就会被取消。 如果可能的话,我希望避免为这个 SDK 东西安装 Android Studio,而更喜欢通过 CLI 来完成。 您知道 MSBuild 的烦恼是什么吗?

android sdk maui .net-8.0 build-dependencies
2个回答
0
投票

我终于解决了这个问题:

  • 使用
    cmdline-tools;11.0
     安装 
    /Users/michelewilliammanco/Library/Developer/Xamarin/android-sdk-macosx/cmdline-tools/7.0/bin/sdkmanager --install "cmdline-tools;11.0"
  • 从同一路径安装其他所有内容并使用
    sdkmanager
    。 很高兴知道,对于要更新的所有内容,执行 sdkmanager 的正确文件夹是 7.0 而不是 11.0。
  • 在该过程结束时,我的 VS Code 表示一切都已安装、更新并准备好进行开发。


0
投票

Mac 上的 MAUI:我如何处理 cmdline-tools/11.0:未安装错误

我在 Mac 上设置本机、Flutter 和 MAUI 开发时遇到了同样的问题。由于我更喜欢原生优先设置,因此在 VS Code 中使用 MAUI 时遇到以下错误:

x cmdline-tools/11.0:未安装。

即使截至 2024 年 9 月,MAUI 似乎仍然需要 cmdline-tools 版本 11.0,并且无法检测或使用较新的版本(在我的例子中为版本 16.0)。

要检查我当前设置使用的 sdkmanager 工具的版本,我运行:

~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager --version

显示16.0,我的目标是得到11.0。

我想看看我拥有的所有版本:

ls ~/Library/Android/sdk/cmdline-tools

并获得 2 个物理文件夹:“11.0”和“最新”

为了解决该问题,我将最新版本重命名为 16.0 并创建了一个指向 11.0 的符号链接。这使得 MAUI 认为版本 11 是最新的,并且不再抱怨。

为了能够轻松切换,我创建了下面的两个脚本。我相信他们的内容会解释更多。

希望这可以帮助任何面临同样问题的人!

cmd-maui.sh:

#!/bin/bash # cmd-maui.sh # This is a quick script to make MAUI happy by pretending 11.0 is the latest version of the cmdline-tools # Check if 'latest' is not a symlink and move it to 16.0, but only if 16.0 does not already exist if [ -d ~/Library/Android/sdk/cmdline-tools/latest ] && [ ! -L ~/Library/Android/sdk/cmdline-tools/latest ]; then if [ ! -d ~/Library/Android/sdk/cmdline-tools/16.0 ]; then mv ~/Library/Android/sdk/cmdline-tools/latest ~/Library/Android/sdk/cmdline-tools/16.0 else echo "16.0 folder already exists. Aborting to avoid overwriting." exit 1 fi fi # Create symlink 'latest', pointing to 11.0. That way MAUI will stop complaining. ln -sfn ~/Library/Android/sdk/cmdline-tools/11.0 ~/Library/Android/sdk/cmdline-tools/latest # Execute sdkmanager --version to check the result ~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager --version

cmd-standard.sh:

#!/bin/bash # cmd-standard.sh # This script is a revert action for cmd-maui.sh script # Delete the symlink only if it exists if [ -L ~/Library/Android/sdk/cmdline-tools/latest ]; then rm ~/Library/Android/sdk/cmdline-tools/latest else echo "No 'latest' symlink found. Skipping." fi # Rename 16.0 back to latest, but only if 16.0 exists if [ -d ~/Library/Android/sdk/cmdline-tools/16.0 ]; then mv ~/Library/Android/sdk/cmdline-tools/16.0 ~/Library/Android/sdk/cmdline-tools/latest else echo "No '16.0' folder found. Cannot restore 'latest'." exit 1 fi # Execute sdkmanager --version to check the result ~/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager --version

	
© www.soinside.com 2019 - 2024. All rights reserved.