tauri经验贴

224 阅读2分钟

备注

由于tauri升到了v2,所以本贴基本上也是以v2为准

创建项目

pnpm create tauri-app

打包

icon

生成各种分辨率的icon,使用tauri自带的工具

pnpm tauri icon /path/to/app-icon.png

桌面端

pnpm tauri build

安卓端

先要初始化安卓项目(会在src-tauri下生成gen/android/app文件夹)

tauri android init

注意:

Prerequisites

  • java必须是17以上

  • 需要设置ANDROID_HOME and NDK_HOME,可以用android studio下载,然后指定环境变量

比如我的ANDROID_HOME: D:\applications\sdk\

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

tauri android build
# 打包为apk文件
pnpm tauri android build --apk

安卓端打包要注意的点:

可以使用jdk自带的签名生成器

或者使用官方给的命令,注意.jks文件名,如果已经存在,会让你输入以前那个的密钥,输入正确后重新填信息生成新的(我建议是新建新的jks)

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文件

storeFile=upload-keystore.jks # 刚刚生成的文件名
storePassword=123456 # 你指定的密钥
keyAlias=upload # 别名,刚才命令最后一个参数就是 (-alias upload)
keyPassword=123456 # 你指定的密钥

在src-tauri/gen/android/app/的build文件中添加指定密钥配置文件路径

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")
            ...
        }
    }
}
  • graddle依赖下载超时问题

修改src-tauri/gen/android下的kts文件

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

嵌入式平台

还没学