备注
由于tauri升到了v2,所以本贴基本上也是以v2为准
创建项目
打包
icon
生成各种分辨率的icon,使用tauri自带的工具
1
| pnpm tauri icon /path/to/app-icon.png
|
桌面端
安卓端
先要初始化安卓项目(会在src-tauri下生成gen/android/app文件夹)
注意:
Prerequisites

- 需要设置
ANDROID_HOME
and NDK_HOME
,可以用android studio下载,然后指定环境变量
比如我的ANDROID_HOME:
D:\applications\sdk\

我的NDK_HOME
D:\applications\sdk\ndk\29.0.13113456

1 2 3
| tauri android build # 打包为apk文件 pnpm tauri android build --apk
|
安卓端打包要注意的点:
可以使用jdk自带的签名生成器
或者使用官方给的命令,注意.jks文件名,如果已经存在,会让你输入以前那个的密钥,输入正确后重新填信息生成新的(我建议是新建新的jks)
1
| keytool -genkey -v -keystore $env:USERPROFILE\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
|
- 配置
在src-tauri/gen/android下新建keystore.properties文件
1 2 3 4
| storeFile=upload-keystore.jks # 刚刚生成的文件名 storePassword=123456 # 你指定的密钥 keyAlias=upload # 别名,刚才命令最后一个参数就是 (-alias upload) keyPassword=123456 # 你指定的密钥
|
在src-tauri/gen/android/app/的build文件中添加指定密钥配置文件路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| android { ... signingConfigs { create("release") { val keystorePropertiesFile = rootProject.file("keystore.properties") val keystoreProperties = Properties() if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } ... buildTypes { getByName("debug") { ... } getByName("release") { signingConfig = signingConfigs.getByName("release") ... } } }
|
修改src-tauri/gen/android下的kts文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| buildscript { repositories { mavenCentral()
maven { url= uri("https://maven.aliyun.com/repository/google")} maven { url= uri("https://maven.aliyun.com/repository/gradle-plugin")} maven { url = uri("https://maven.aliyun.com/repository/public") }
// maven { url= uri("http://maven.aliyun.com/nexus/content/groups/public/")} maven { url= uri("https://maven.aliyun.com/repository/google")} // maven { url = uri("http://maven.aliyun.com/nexus/content/repositories/jcenter") } // flatDir { dirs("libs") } google() } dependencies { classpath("com.android.tools.build:gradle:8.5.1") // classpath("com.android.tools.build:gradle:8.9") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25") } }
allprojects { repositories {
maven { url= uri("https://maven.aliyun.com/repository/google")} maven { url= uri("https://maven.aliyun.com/repository/gradle-plugin")} maven { url = uri("https://maven.aliyun.com/repository/public") }
// maven { url= uri("http://maven.aliyun.com/nexus/content/groups/public/")} maven { url= uri("https://maven.aliyun.com/repository/google")} // maven { url = uri("http://maven.aliyun.com/nexus/content/repositories/jcenter") } // flatDir { dirs("libs") } // maven { url= uri("https://maven.aliyun.com/repository/google")} // maven { url= uri("https://maven.aliyun.com/repository/gradle-plugin")} // maven { url = uri("https://maven.aliyun.com/repository/public") } google() mavenCentral() } }
tasks.register("clean").configure { delete("build") }
|
- 打包后的文件位置(apk)在src-tauri\gen\android\app\build\outputs\apk\universal\release
嵌入式平台
还没学