tauri 添加了turbojpeg库后,打包安卓编译问题

1、因为打包turbojpeg库需要cmake编译,所以需要安装:cmake, perl,同时需要安装ndk
安装:

1、安装这些依赖首先安装scoop ,windows的 npm,相当 方便,
第一步:打开powershell,
第二步:输入这个命令: iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
第三步:等待安装后,scoop --version,如果正常显示版本号,则表示安装成功

以上安装要注意:如果使用官方命令:  irm get.scoop.sh|iex 
会提示不能使用Administrator运行的powershell , 原始报错如下:
Running the installer as administrator is disabled by default, see https://github.com/ScoopInstaller/Install#for-admin for details.
所以要使用上面的命令方式

2、安装cmake, 同样是在powershell中运行,不要在cmd中去运行

命令: scoop install cmake 
安装成功后:cmake --version,正常显示版本号即为成功, 添加环境变量:C:\Program Files\CMake\bin,正常安装就会 自己添加

3、安装 NDK, 这个在android studio 中去安装
打开Android studio  File-> settings -> android sdk -> sdk tools 里面选择ndk (Side by side)
如下图:


安装NDK

安装完成后,一定要在系统环境变量中添加环境变量,如下
C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\29.0.13599879\toolchains\llvm\prebuilt\windows-x86_64\bin
C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\29.0.13599879
上面两个都要添加,最终以自己的NDK的路径添加,一般默认安装的路径就是上面的,只是版本号不一样
在powershell中设置变量名:

$env:ANDROID_NDK_HOME =C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\29.0.13599879

这个在下面的命令中会用到,如果不设也可以,就需要每个用到的地方都输入后面这一长串路径

4、安装llvm,也就是clang
命令: scoop install llvm
如果安装不了,就直接下载一个安装包,链接地址:
地址1  地址2

地址2是官方地址,如果下载不了,就用地址1,地址版本旧一点,是17版的,官方是最新的,但是都可以用

安装好后,添加环境变量
C:\Program Files\LLVM\bin

5、安装ninja

scoop install ninja
ninja --version 正常显示即可

6、安装 pearl

pwershell输入命令

$env:TURBOJPEG_SYS_STATIC ="1"

scoop install make perl

7、配置环境 

第一步:在你的项目的src-tauri目录下面,执行
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android

添加这些构建项,正常是已经有了的
第二步:创建cargo配置

在pwoershell中输入如下命令,注意最后面的"@是结尾 符,不要丢了
New-Item-Path$env:USERPROFILE\.cargo\config.toml-Force-Value @"

[target.aarch64-linux-android]

linker = "$env:ANDROID_NDK_HOME/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android24-clang.cmd"

[target.armv7-linux-androideabi]

linker = "$env:ANDROID_NDK_HOME/toolchains/llvm/prebuilt/windows-x86_64/bin/armv7a-linux-androideabi24-clang.cmd"

[target.i686-linux-android]

linker = "$env:ANDROID_NDK_HOME/toolchains/llvm/prebuilt/windows-x86_64/bin/i686-linux-android24-clang.cmd"

[target.x86_64-linux-android]

linker = "$env:ANDROID_NDK_HOME/toolchains/llvm/prebuilt/windows-x86_64/bin/x86_64-linux-android24-clang.cmd"

[env]

ANDROID_NDK = "C:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\ndk\\29.0.13599879"

CMAKE_TOOLCHAIN_FILE = "C:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\ndk\\29.0.13599879\\build\\cmake\\android.toolchain.cmake"

"@

上面的所有 / 杠 替换成 \\,如果已经执行了上面的命令,可以去:c:/Users/Administartor/.cargo/config.toml进行重新 编辑,

设置编译环境变量

启用静态链接

$env:TURBOJPEG_SYS_STATIC ="1"# 

指定 CMake 生成器为 Ninja

$env:CMAKE_GENERATOR ="Ninja"

# 指定 Android 平台

$env:ANDROID_PLATFORM ="android-24"

$env:ANDROID_ABI ="arm64-v8a"

# 验证 NDK 配置

cmake -DANDROID_ABI=$env:ANDROID_ABI -DANDROID_PLATFORM=$env:ANDROID_PLATFORM -DCMAKE_TOOLCHAIN_FILE=$env:CMAKE_TOOLCHAIN_FILE --version

按上述配置后应该是没有问题了

上述配置完成后,可能会遇到 打包Windows应用出现问题,如果出现同样上述Android问题,可以如下配置:

1、打开 visual studio installer,然后点击修改->component

搜索:MSBuild ,C++ CMake,Windows 10 SDK 或者 Windows 11 SDK, 分别勾选,然后安装这几个库

2、设置环境变量

powershell 下执行

# 设置正确的生成器

$env:CMAKE_GENERATOR ="Visual Studio 17 2022"

# 添加 MSBuild 到 PATH

$env:PATH ="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64;"+$env:PATH

# 设置 MSBuild 路径

$env:MSBUILD_PATH ="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64"

# 添加到系统 PATH

$env:PATH ="$env:MSBUILD_PATH;$env:PATH"

# 设置 VCTargetsPath (解决具体错误)

$env:VCTargetsPath ="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Microsoft\VC\v170"

3、启用长路径支持(系统级修复)

powershell 里执行

Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem"-Name"LongPathsEnabled"-Value 1

清理并重建项目

# 清理缓存

cargo clean

# 重建项目

cargo build

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容