diff --git a/Cargo.lock b/Cargo.lock index 80d7bb36..cfe81a35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4960,7 +4960,7 @@ dependencies = [ [[package]] name = "tauri" version = "2.0.0-alpha.8" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "anyhow", "bytes 1.4.0", @@ -5010,7 +5010,7 @@ dependencies = [ [[package]] name = "tauri-build" version = "2.0.0-alpha.4" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "anyhow", "cargo_toml", @@ -5030,7 +5030,7 @@ dependencies = [ [[package]] name = "tauri-codegen" version = "2.0.0-alpha.4" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "base64 0.21.0", "brotli", @@ -5055,7 +5055,7 @@ dependencies = [ [[package]] name = "tauri-macros" version = "2.0.0-alpha.4" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "heck 0.4.1", "proc-macro2", @@ -5449,7 +5449,7 @@ dependencies = [ [[package]] name = "tauri-runtime" version = "0.13.0-alpha.4" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "gtk", "http", @@ -5469,7 +5469,7 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" version = "0.13.0-alpha.4" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "cocoa", "gtk", @@ -5489,7 +5489,7 @@ dependencies = [ [[package]] name = "tauri-utils" version = "2.0.0-alpha.4" -source = "git+https://github.com/tauri-apps/tauri?branch=next#6d25c4d07fcf18c2a19ac4faa7d9bedd96d1a75f" +source = "git+https://github.com/tauri-apps/tauri?branch=next#59db76af4c88645ee03b9f87c0f787fbc0040905" dependencies = [ "aes-gcm 0.10.1", "brotli", diff --git a/examples/api/src-tauri/Cargo.toml b/examples/api/src-tauri/Cargo.toml index 4bd7ce49..6448c4e0 100644 --- a/examples/api/src-tauri/Cargo.toml +++ b/examples/api/src-tauri/Cargo.toml @@ -27,7 +27,6 @@ tauri-plugin-notification = { path = "../../../plugins/notification", features = tauri-plugin-os = { path = "../../../plugins/os" } tauri-plugin-process = { path = "../../../plugins/process" } tauri-plugin-shell = { path = "../../../plugins/shell" } -tauri-plugin-updater = { path = "../../../plugins/updater" } tauri-plugin-window = { path = "../../../plugins/window" } [dependencies.tauri] @@ -44,6 +43,7 @@ features = [ [target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies] tauri-plugin-cli = { path = "../../../plugins/cli" } tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut" } +tauri-plugin-updater = { path = "../../../plugins/updater" } [target."cfg(target_os = \"windows\")".dependencies] window-shadows = "0.2" diff --git a/examples/api/src-tauri/gen/android/api/.editorconfig b/examples/api/src-tauri/gen/android/.editorconfig similarity index 100% rename from examples/api/src-tauri/gen/android/api/.editorconfig rename to examples/api/src-tauri/gen/android/.editorconfig diff --git a/examples/api/src-tauri/gen/android/api/.gitignore b/examples/api/src-tauri/gen/android/.gitignore similarity index 86% rename from examples/api/src-tauri/gen/android/api/.gitignore rename to examples/api/src-tauri/gen/android/.gitignore index 6bb2f5ee..b2482031 100644 --- a/examples/api/src-tauri/gen/android/api/.gitignore +++ b/examples/api/src-tauri/gen/android/.gitignore @@ -13,6 +13,7 @@ build .externalNativeBuild .cxx local.properties +key.properties /.tauri /tauri.settings.gradle \ No newline at end of file diff --git a/examples/api/src-tauri/gen/android/api/app/build.gradle.kts b/examples/api/src-tauri/gen/android/api/app/build.gradle.kts deleted file mode 100644 index 7a18b94b..00000000 --- a/examples/api/src-tauri/gen/android/api/app/build.gradle.kts +++ /dev/null @@ -1,113 +0,0 @@ -plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") - id("rustPlugin") -} - -android { - compileSdk = 33 - defaultConfig { - manifestPlaceholders["usesCleartextTraffic"] = "false" - applicationId = "com.tauri.api" - minSdk = 24 - targetSdk = 33 - versionCode = 1 - versionName = "1.0" - } - sourceSets.getByName("main") { - // Vulkan validation layers - val ndkHome = System.getenv("NDK_HOME") - jniLibs.srcDir("${ndkHome}/sources/third_party/vulkan/src/build-android/jniLibs") - } - buildTypes { - getByName("debug") { - manifestPlaceholders["usesCleartextTraffic"] = "true" - isDebuggable = true - isJniDebuggable = true - isMinifyEnabled = false - packagingOptions { jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so") - jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so") - jniLibs.keepDebugSymbols.add("*/x86/*.so") - jniLibs.keepDebugSymbols.add("*/x86_64/*.so") - } - } - getByName("release") { - isMinifyEnabled = true - val proguards = fileTree(".") { - include("*.pro") - } - proguardFiles(*proguards.toList().toTypedArray()) - } - } - flavorDimensions.add("abi") - productFlavors { - create("universal") { - dimension = "abi" - ndk { - abiFilters += (findProperty("abiList") as? String)?.split(",") ?: listOf( "arm64-v8a", "armeabi-v7a", "x86", "x86_64", - ) - } - } - create("arm64") { - dimension = "abi" - ndk { - abiFilters += listOf("arm64-v8a") - } - } - - create("arm") { - dimension = "abi" - ndk { - abiFilters += listOf("armeabi-v7a") - } - } - - create("x86") { - dimension = "abi" - ndk { - abiFilters += listOf("x86") - } - } - - create("x86_64") { - dimension = "abi" - ndk { - abiFilters += listOf("x86_64") - } - } - } - - assetPacks += mutableSetOf() - namespace = "com.tauri.api" -} - -rust { - rootDirRel = "../../../../" - targets = (findProperty("targetList") as? String)?.split(",") ?: listOf("aarch64", "armv7", "i686", "x86_64") - arches = (findProperty("archList") as? String)?.split(",") ?: listOf("arm64", "arm", "x86", "x86_64") -} - -dependencies { - implementation("androidx.webkit:webkit:1.5.0") - implementation("androidx.appcompat:appcompat:1.5.1") - implementation("com.google.android.material:material:1.7.0") - testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.4") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0") - implementation(project(":tauri-android")) -} - -apply(from = "tauri.build.gradle.kts") - -afterEvaluate { - android.applicationVariants.all { - tasks["mergeUniversalReleaseJniLibFolders"].dependsOn(tasks["rustBuildRelease"]) - tasks["mergeUniversalDebugJniLibFolders"].dependsOn(tasks["rustBuildDebug"]) - if (findProperty("targetList") == null) { - productFlavors.filter{ it.name != "universal" }.forEach { _ -> - val archAndBuildType = name.capitalize() - tasks["merge${archAndBuildType}JniLibFolders"].dependsOn(tasks["rustBuild${archAndBuildType}"]) - } - } - } -} diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/java/com/tauri/api/MainActivity.kt b/examples/api/src-tauri/gen/android/api/app/src/main/java/com/tauri/api/MainActivity.kt deleted file mode 100644 index 46c4bc6e..00000000 --- a/examples/api/src-tauri/gen/android/api/app/src/main/java/com/tauri/api/MainActivity.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.tauri.api - -import app.tauri.plugin.PluginManager - -class MainActivity : TauriActivity() { - var pluginManager: PluginManager = PluginManager(this) -} diff --git a/examples/api/src-tauri/gen/android/api/buildSrc/src/main/java/com/tauri/api/kotlin/RustPlugin.kt b/examples/api/src-tauri/gen/android/api/buildSrc/src/main/java/com/tauri/api/kotlin/RustPlugin.kt deleted file mode 100644 index 064fc632..00000000 --- a/examples/api/src-tauri/gen/android/api/buildSrc/src/main/java/com/tauri/api/kotlin/RustPlugin.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.tauri - -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.Plugin -import org.gradle.api.Project -import java.io.File -import java.util.* - -const val TASK_GROUP = "rust" - -open class Config { - var rootDirRel: String? = null - var targets: List? = null - var arches: List? = null -} - -open class RustPlugin : Plugin { - private lateinit var config: Config - - override fun apply(project: Project) { - config = project.extensions.create("rust", Config::class.java) - project.afterEvaluate { - if (config.targets == null) { - throw GradleException("targets cannot be null") - } - if (config.arches == null) { - throw GradleException("arches cannot be null") - } - for (profile in listOf("debug", "release")) { - val profileCapitalized = profile.capitalize(Locale.ROOT) - val buildTask = project.tasks.maybeCreate( - "rustBuild$profileCapitalized", - DefaultTask::class.java - ).apply { - group = TASK_GROUP - description = "Build dynamic library in $profile mode for all targets" - } - for (targetPair in config.targets!!.withIndex()) { - val targetName = targetPair.value - val targetArch = config.arches!![targetPair.index] - val targetArchCapitalized = targetArch.capitalize(Locale.ROOT) - val targetBuildTask = project.tasks.maybeCreate( - "rustBuild$targetArchCapitalized$profileCapitalized", - BuildTask::class.java - ).apply { - group = TASK_GROUP - description = "Build dynamic library in $profile mode for $targetArch" - rootDirRel = config.rootDirRel?.let { File(it) } - target = targetName - release = profile == "release" - } - buildTask.dependsOn(targetBuildTask) - project.tasks.findByName("preBuild")?.mustRunAfter(targetBuildTask) - } - } - } - } -} diff --git a/examples/api/src-tauri/gen/android/api/settings.gradle b/examples/api/src-tauri/gen/android/api/settings.gradle deleted file mode 100644 index b179eac8..00000000 --- a/examples/api/src-tauri/gen/android/api/settings.gradle +++ /dev/null @@ -1,6 +0,0 @@ -include ':app' - -include ':tauri-android' -project(':tauri-android').projectDir = new File('./.tauri/tauri-api') - -apply from: 'tauri.settings.gradle' diff --git a/examples/api/src-tauri/gen/android/api/app/.gitignore b/examples/api/src-tauri/gen/android/app/.gitignore similarity index 63% rename from examples/api/src-tauri/gen/android/api/app/.gitignore rename to examples/api/src-tauri/gen/android/app/.gitignore index 3b9e0a22..ff9cb538 100644 --- a/examples/api/src-tauri/gen/android/api/app/.gitignore +++ b/examples/api/src-tauri/gen/android/app/.gitignore @@ -1,4 +1,5 @@ /src/main/java/com/tauri/api/generated /src/main/jniLibs/**/*.so +/src/main/assets/tauri.conf.json /tauri.build.gradle.kts /proguard-tauri.pro \ No newline at end of file diff --git a/examples/api/src-tauri/gen/android/app/build.gradle.kts b/examples/api/src-tauri/gen/android/app/build.gradle.kts new file mode 100644 index 00000000..e3de36fd --- /dev/null +++ b/examples/api/src-tauri/gen/android/app/build.gradle.kts @@ -0,0 +1,57 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("rust") +} + +android { + compileSdk = 33 + namespace = "com.tauri.api" + defaultConfig { + manifestPlaceholders["usesCleartextTraffic"] = "false" + applicationId = "com.tauri.api" + minSdk = 24 + targetSdk = 33 + versionCode = 1 + versionName = "1.0" + } + buildTypes { + getByName("debug") { + manifestPlaceholders["usesCleartextTraffic"] = "true" + isDebuggable = true + isJniDebuggable = true + isMinifyEnabled = false + packaging { jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so") + jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so") + jniLibs.keepDebugSymbols.add("*/x86/*.so") + jniLibs.keepDebugSymbols.add("*/x86_64/*.so") + } + } + getByName("release") { + isMinifyEnabled = true + proguardFiles( + *fileTree(".") { include("**/*.pro") } + .plus(getDefaultProguardFile("proguard-android-optimize.txt")) + .toList().toTypedArray() + ) + } + } + kotlinOptions { + jvmTarget = "1.8" + } +} + +rust { + rootDirRel = "../../../" +} + +dependencies { + implementation("androidx.webkit:webkit:1.6.1") + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("com.google.android.material:material:1.8.0") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.4") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0") +} + +apply(from = "tauri.build.gradle.kts") diff --git a/examples/api/src-tauri/gen/android/api/app/proguard-rules.pro b/examples/api/src-tauri/gen/android/app/proguard-rules.pro similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/proguard-rules.pro rename to examples/api/src-tauri/gen/android/app/proguard-rules.pro diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/AndroidManifest.xml b/examples/api/src-tauri/gen/android/app/src/main/AndroidManifest.xml similarity index 99% rename from examples/api/src-tauri/gen/android/api/app/src/main/AndroidManifest.xml rename to examples/api/src-tauri/gen/android/app/src/main/AndroidManifest.xml index 13dcbd14..6ad2d210 100644 --- a/examples/api/src-tauri/gen/android/api/app/src/main/AndroidManifest.xml +++ b/examples/api/src-tauri/gen/android/app/src/main/AndroidManifest.xml @@ -14,7 +14,6 @@ android:exported="true"> - diff --git a/examples/api/src-tauri/gen/android/app/src/main/java/com/tauri/api/MainActivity.kt b/examples/api/src-tauri/gen/android/app/src/main/java/com/tauri/api/MainActivity.kt new file mode 100644 index 00000000..ad3fa238 --- /dev/null +++ b/examples/api/src-tauri/gen/android/app/src/main/java/com/tauri/api/MainActivity.kt @@ -0,0 +1,3 @@ +package com.tauri.api + +class MainActivity : TauriActivity() diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/examples/api/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/drawable/ic_launcher_background.xml b/examples/api/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/drawable/ic_launcher_background.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/layout/activity_main.xml b/examples/api/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/layout/activity_main.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to examples/api/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/values-night/themes.xml b/examples/api/src-tauri/gen/android/app/src/main/res/values-night/themes.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/values-night/themes.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/values-night/themes.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/values/colors.xml b/examples/api/src-tauri/gen/android/app/src/main/res/values/colors.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/values/colors.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/values/colors.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/values/strings.xml b/examples/api/src-tauri/gen/android/app/src/main/res/values/strings.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/values/strings.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/values/strings.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/values/themes.xml b/examples/api/src-tauri/gen/android/app/src/main/res/values/themes.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/values/themes.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/values/themes.xml diff --git a/examples/api/src-tauri/gen/android/api/app/src/main/res/xml/file_paths.xml b/examples/api/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml similarity index 100% rename from examples/api/src-tauri/gen/android/api/app/src/main/res/xml/file_paths.xml rename to examples/api/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml diff --git a/examples/api/src-tauri/gen/android/api/build.gradle.kts b/examples/api/src-tauri/gen/android/build.gradle.kts similarity index 51% rename from examples/api/src-tauri/gen/android/api/build.gradle.kts rename to examples/api/src-tauri/gen/android/build.gradle.kts index 8c6fe584..5ce764e3 100644 --- a/examples/api/src-tauri/gen/android/api/build.gradle.kts +++ b/examples/api/src-tauri/gen/android/build.gradle.kts @@ -1,14 +1,11 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:7.3.1") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10") - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath("com.android.tools.build:gradle:8.0.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21") } } diff --git a/examples/api/src-tauri/gen/android/api/buildSrc/build.gradle.kts b/examples/api/src-tauri/gen/android/buildSrc/build.gradle.kts similarity index 59% rename from examples/api/src-tauri/gen/android/api/buildSrc/build.gradle.kts rename to examples/api/src-tauri/gen/android/buildSrc/build.gradle.kts index 73058dd7..099feff7 100644 --- a/examples/api/src-tauri/gen/android/api/buildSrc/build.gradle.kts +++ b/examples/api/src-tauri/gen/android/buildSrc/build.gradle.kts @@ -5,8 +5,8 @@ plugins { gradlePlugin { plugins { create("pluginsForCoolKids") { - id = "rustPlugin" - implementationClass = "com.tauri.RustPlugin" + id = "rust" + implementationClass = "RustPlugin" } } } @@ -18,6 +18,6 @@ repositories { dependencies { compileOnly(gradleApi()) - implementation("com.android.tools.build:gradle:7.3.1") + implementation("com.android.tools.build:gradle:8.0.0") } diff --git a/examples/api/src-tauri/gen/android/api/buildSrc/src/main/java/com/tauri/api/kotlin/BuildTask.kt b/examples/api/src-tauri/gen/android/buildSrc/src/main/java/com/tauri/api/kotlin/BuildTask.kt similarity index 79% rename from examples/api/src-tauri/gen/android/api/buildSrc/src/main/java/com/tauri/api/kotlin/BuildTask.kt rename to examples/api/src-tauri/gen/android/buildSrc/src/main/java/com/tauri/api/kotlin/BuildTask.kt index dfc8507e..f9874825 100644 --- a/examples/api/src-tauri/gen/android/api/buildSrc/src/main/java/com/tauri/api/kotlin/BuildTask.kt +++ b/examples/api/src-tauri/gen/android/buildSrc/src/main/java/com/tauri/api/kotlin/BuildTask.kt @@ -1,28 +1,22 @@ -package com.tauri - import java.io.File import org.apache.tools.ant.taskdefs.condition.Os import org.gradle.api.DefaultTask import org.gradle.api.GradleException import org.gradle.api.logging.LogLevel import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputDirectory -import org.gradle.api.tasks.PathSensitive -import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction open class BuildTask : DefaultTask() { - @InputDirectory - @PathSensitive(PathSensitivity.RELATIVE) - var rootDirRel: File? = null + @Input + var rootDirRel: String? = null @Input var target: String? = null @Input var release: Boolean? = null @TaskAction - fun build() { - val executable = """yarn"""; + fun assemble() { + val executable = """pnpm"""; try { runTauriCli(executable) } catch (e: Exception) { @@ -41,7 +35,7 @@ open class BuildTask : DefaultTask() { val args = listOf("tauri", "android", "android-studio-script"); project.exec { - workingDir(File(project.projectDir, rootDirRel.path)) + workingDir(File(project.projectDir, rootDirRel)) executable(executable) args(args) if (project.logger.isEnabled(LogLevel.DEBUG)) { diff --git a/examples/api/src-tauri/gen/android/buildSrc/src/main/java/com/tauri/api/kotlin/RustPlugin.kt b/examples/api/src-tauri/gen/android/buildSrc/src/main/java/com/tauri/api/kotlin/RustPlugin.kt new file mode 100644 index 00000000..2ea5ce5c --- /dev/null +++ b/examples/api/src-tauri/gen/android/buildSrc/src/main/java/com/tauri/api/kotlin/RustPlugin.kt @@ -0,0 +1,85 @@ +import com.android.build.api.dsl.ApplicationExtension +import org.gradle.api.DefaultTask +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.get + +const val TASK_GROUP = "rust" + +open class Config { + lateinit var rootDirRel: String +} + +open class RustPlugin : Plugin { + private lateinit var config: Config + + override fun apply(project: Project) = with(project) { + config = extensions.create("rust", Config::class.java) + + val defaultAbiList = listOf("arm64-v8a", "armeabi-v7a", "x86", "x86_64"); + val abiList = (findProperty("abiList") as? String)?.split(',') ?: defaultAbiList + + val defaultArchList = listOf("arm64", "arm", "x86", "x86_64"); + val archList = (findProperty("archList") as? String)?.split(',') ?: listOf("arm64", "arm", "x86", "x86_64") + + val targetsList = (findProperty("targetList") as? String)?.split(',') ?: listOf("aarch64", "armv7", "i686", "x86_64") + + extensions.configure { + @Suppress("UnstableApiUsage") + flavorDimensions.add("abi") + productFlavors { + create("universal") { + dimension = "abi" + ndk { + abiFilters += abiList + } + } + defaultArchList.forEachIndexed { index, arch -> + create(arch) { + dimension = "abi" + ndk { + abiFilters.add(defaultAbiList[index]) + } + } + } + } + } + + afterEvaluate { + for (profile in listOf("debug", "release")) { + val profileCapitalized = profile.replaceFirstChar { it.uppercase() } + val buildTask = tasks.maybeCreate( + "rustBuildUniversal$profileCapitalized", + DefaultTask::class.java + ).apply { + group = TASK_GROUP + description = "Build dynamic library in $profile mode for all targets" + } + + tasks["mergeUniversal${profileCapitalized}JniLibFolders"].dependsOn(buildTask) + + for (targetPair in targetsList.withIndex()) { + val targetName = targetPair.value + val targetArch = archList[targetPair.index] + val targetArchCapitalized = targetArch.replaceFirstChar { it.uppercase() } + val targetBuildTask = project.tasks.maybeCreate( + "rustBuild$targetArchCapitalized$profileCapitalized", + BuildTask::class.java + ).apply { + group = TASK_GROUP + description = "Build dynamic library in $profile mode for $targetArch" + rootDirRel = config.rootDirRel + target = targetName + release = profile == "release" + } + + buildTask.dependsOn(targetBuildTask) + tasks["merge$targetArchCapitalized${profileCapitalized}JniLibFolders"].dependsOn( + targetBuildTask + ) + } + } + } + } +} \ No newline at end of file diff --git a/examples/api/src-tauri/gen/android/api/gradle.properties b/examples/api/src-tauri/gen/android/gradle.properties similarity index 92% rename from examples/api/src-tauri/gen/android/api/gradle.properties rename to examples/api/src-tauri/gen/android/gradle.properties index cd0519bb..022338b7 100644 --- a/examples/api/src-tauri/gen/android/api/gradle.properties +++ b/examples/api/src-tauri/gen/android/gradle.properties @@ -20,4 +20,6 @@ kotlin.code.style=official # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +android.defaults.buildfeatures.buildconfig=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/examples/api/src-tauri/gen/android/api/gradle/wrapper/gradle-wrapper.jar b/examples/api/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from examples/api/src-tauri/gen/android/api/gradle/wrapper/gradle-wrapper.jar rename to examples/api/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.jar diff --git a/examples/api/src-tauri/gen/android/api/gradle/wrapper/gradle-wrapper.properties b/examples/api/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties similarity index 93% rename from examples/api/src-tauri/gen/android/api/gradle/wrapper/gradle-wrapper.properties rename to examples/api/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties index de8c362b..40a43506 100644 --- a/examples/api/src-tauri/gen/android/api/gradle/wrapper/gradle-wrapper.properties +++ b/examples/api/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue May 10 19:22:52 CST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/examples/api/src-tauri/gen/android/api/gradlew b/examples/api/src-tauri/gen/android/gradlew similarity index 100% rename from examples/api/src-tauri/gen/android/api/gradlew rename to examples/api/src-tauri/gen/android/gradlew diff --git a/examples/api/src-tauri/gen/android/api/gradlew.bat b/examples/api/src-tauri/gen/android/gradlew.bat similarity index 100% rename from examples/api/src-tauri/gen/android/api/gradlew.bat rename to examples/api/src-tauri/gen/android/gradlew.bat diff --git a/examples/api/src-tauri/gen/android/settings.gradle b/examples/api/src-tauri/gen/android/settings.gradle new file mode 100644 index 00000000..39391166 --- /dev/null +++ b/examples/api/src-tauri/gen/android/settings.gradle @@ -0,0 +1,3 @@ +include ':app' + +apply from: 'tauri.settings.gradle' diff --git a/examples/api/src-tauri/src/lib.rs b/examples/api/src-tauri/src/lib.rs index d5d77a67..41be8760 100644 --- a/examples/api/src-tauri/src/lib.rs +++ b/examples/api/src-tauri/src/lib.rs @@ -40,7 +40,6 @@ pub fn run() { .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_process::init()) .plugin(tauri_plugin_shell::init()) - .plugin(tauri_plugin_updater::Builder::new().build()) .plugin(tauri_plugin_window::init()) .setup(move |app| { #[cfg(desktop)] @@ -49,6 +48,8 @@ pub fn run() { app.handle().plugin(tauri_plugin_cli::init())?; app.handle() .plugin(tauri_plugin_global_shortcut::Builder::new().build())?; + app.handle() + .plugin(tauri_plugin_updater::Builder::new().build())?; } let mut window_builder = WindowBuilder::new(app, "main", WindowUrl::default()); diff --git a/plugins/clipboard/Cargo.toml b/plugins/clipboard/Cargo.toml index 00864ff4..1b02f6fc 100644 --- a/plugins/clipboard/Cargo.toml +++ b/plugins/clipboard/Cargo.toml @@ -4,6 +4,7 @@ version = "0.0.0" edition.workspace = true authors.workspace = true license.workspace = true +links = "tauri-plugin-clipboard" [build-dependencies] tauri-build.workspace = true diff --git a/plugins/dialog/Cargo.toml b/plugins/dialog/Cargo.toml index 1882da38..45a89d92 100644 --- a/plugins/dialog/Cargo.toml +++ b/plugins/dialog/Cargo.toml @@ -4,6 +4,7 @@ version = "0.0.0" edition.workspace = true authors.workspace = true license.workspace = true +links = "tauri-plugin-dialog" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/plugins/notification/Cargo.toml b/plugins/notification/Cargo.toml index f136b2e5..721cb3e3 100644 --- a/plugins/notification/Cargo.toml +++ b/plugins/notification/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition.workspace = true authors.workspace = true license.workspace = true +links = "tauri-plugin-notification" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/plugins/notification/android/src/main/AndroidManifest.xml b/plugins/notification/android/src/main/AndroidManifest.xml index 986d5f85..28ccac30 100644 --- a/plugins/notification/android/src/main/AndroidManifest.xml +++ b/plugins/notification/android/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/plugins/window/build.rs b/plugins/window/build.rs new file mode 100644 index 00000000..74bf430b --- /dev/null +++ b/plugins/window/build.rs @@ -0,0 +1,14 @@ +fn main() { + let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap(); + let mobile = target_os == "ios" || target_os == "android"; + alias("desktop", !mobile); + alias("mobile", mobile); +} + +// creates a cfg alias if `has_feature` is true. +// `alias` must be a snake case string. +fn alias(alias: &str, has_feature: bool) { + if has_feature { + println!("cargo:rustc-cfg={alias}"); + } +} diff --git a/plugins/window/src/commands.rs b/plugins/window/src/desktop_commands.rs similarity index 100% rename from plugins/window/src/commands.rs rename to plugins/window/src/desktop_commands.rs diff --git a/plugins/window/src/lib.rs b/plugins/window/src/lib.rs index 513a5d32..a9673b6d 100644 --- a/plugins/window/src/lib.rs +++ b/plugins/window/src/lib.rs @@ -3,63 +3,77 @@ use tauri::{ Runtime, }; -mod commands; +#[cfg(desktop)] +mod desktop_commands; pub fn init() -> TauriPlugin { Builder::new("window") - .invoke_handler(tauri::generate_handler![ - commands::create, - // getters - commands::scale_factor, - commands::inner_position, - commands::outer_position, - commands::inner_size, - commands::outer_size, - commands::is_fullscreen, - commands::is_minimized, - commands::is_maximized, - commands::is_decorated, - commands::is_resizable, - commands::is_visible, - commands::title, - commands::current_monitor, - commands::primary_monitor, - commands::available_monitors, - commands::theme, - // setters - commands::center, - commands::request_user_attention, - commands::set_resizable, - commands::set_title, - commands::maximize, - commands::unmaximize, - commands::minimize, - commands::unminimize, - commands::show, - commands::hide, - commands::close, - commands::set_decorations, - commands::set_shadow, - commands::set_always_on_top, - commands::set_content_protected, - commands::set_size, - commands::set_min_size, - commands::set_max_size, - commands::set_position, - commands::set_fullscreen, - commands::set_focus, - commands::set_skip_taskbar, - commands::set_cursor_grab, - commands::set_cursor_visible, - commands::set_cursor_icon, - commands::set_cursor_position, - commands::set_ignore_cursor_events, - commands::start_dragging, - commands::print, - commands::set_icon, - commands::toggle_maximize, - commands::internal_toggle_maximize, - commands::internal_toggle_devtools, - ]) + .invoke_handler(|invoke| { + #[cfg(desktop)] + { + let handler: Box) -> bool> = + Box::new(tauri::generate_handler![ + desktop_commands::create, + // getters + desktop_commands::scale_factor, + desktop_commands::inner_position, + desktop_commands::outer_position, + desktop_commands::inner_size, + desktop_commands::outer_size, + desktop_commands::is_fullscreen, + desktop_commands::is_minimized, + desktop_commands::is_maximized, + desktop_commands::is_decorated, + desktop_commands::is_resizable, + desktop_commands::is_visible, + desktop_commands::title, + desktop_commands::current_monitor, + desktop_commands::primary_monitor, + desktop_commands::available_monitors, + desktop_commands::theme, + // setters + desktop_commands::center, + desktop_commands::request_user_attention, + desktop_commands::set_resizable, + desktop_commands::set_title, + desktop_commands::maximize, + desktop_commands::unmaximize, + desktop_commands::minimize, + desktop_commands::unminimize, + desktop_commands::show, + desktop_commands::hide, + desktop_commands::close, + desktop_commands::set_decorations, + desktop_commands::set_shadow, + desktop_commands::set_always_on_top, + desktop_commands::set_content_protected, + desktop_commands::set_size, + desktop_commands::set_min_size, + desktop_commands::set_max_size, + desktop_commands::set_position, + desktop_commands::set_fullscreen, + desktop_commands::set_focus, + desktop_commands::set_skip_taskbar, + desktop_commands::set_cursor_grab, + desktop_commands::set_cursor_visible, + desktop_commands::set_cursor_icon, + desktop_commands::set_cursor_position, + desktop_commands::set_ignore_cursor_events, + desktop_commands::start_dragging, + desktop_commands::print, + desktop_commands::set_icon, + desktop_commands::toggle_maximize, + desktop_commands::internal_toggle_maximize, + desktop_commands::internal_toggle_devtools, + ]); + #[allow(clippy::needless_return)] + return handler(invoke); + } + #[cfg(mobile)] + { + invoke.resolver.reject("Window API not available on mobile"); + return true; + } + }) .build() } diff --git a/shared/template/Cargo.toml b/shared/template/Cargo.toml index defae478..20f4dd71 100644 --- a/shared/template/Cargo.toml +++ b/shared/template/Cargo.toml @@ -4,6 +4,7 @@ version = "0.0.0" edition.workspace = true authors.workspace = true license.workspace = true +links = "tauri-plugin-{{name}}" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html