備考

Tauri のバージョンが v2 にアップデートされたため、本記事も基本的に v2 をベースにしています。

プロジェクトの作成

1
pnpm create tauri-app

パッケージング

アイコンの生成

さまざまな解像度のアイコンを生成するには、Tauri 組み込みのツールを使用してください。

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

デスクトップ向けビルド

1
pnpm tauri build

Android 向けビルド

まず Android プロジェクトを初期化します(src-tauri 配下に gen/android/app フォルダが生成されます)。

1
tauri android init

注意事項:

Prerequisites

  • java はバージョン 17 以上が必要です。

  • ANDROID_HOME および NDK_HOME の環境変数を設定する必要があります。

例として私の設定: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

Android ビルドにおける注意点:

JDK 付属のキーツールで証明書を生成できます。

または公式ドキュメントにあるコマンドを使っても可能です。.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.gradle.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
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")
...
}
}
}
  • Gradle 依存関係のダウンロードタイムアウト対応

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

組み込みプラットフォーム

未学習


本站总访问量