diff --git a/examples/api/src-tauri/tauri-plugin-sample/android/build.gradle.kts b/examples/api/src-tauri/tauri-plugin-sample/android/build.gradle.kts index 83f86a9a9..9a916b20d 100644 --- a/examples/api/src-tauri/tauri-plugin-sample/android/build.gradle.kts +++ b/examples/api/src-tauri/tauri-plugin-sample/android/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } android { - namespace = "com.plugin.test" + namespace = "com.plugin.sample" compileSdk = 32 defaultConfig { @@ -42,4 +42,4 @@ dependencies { androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") implementation(project(":tauri-android")) -} \ No newline at end of file +} diff --git a/examples/api/src-tauri/tauri-plugin-sample/android/src/androidTest/java/com/plugin/test/ExampleInstrumentedTest.kt b/examples/api/src-tauri/tauri-plugin-sample/android/src/androidTest/java/com/plugin/sample/ExampleInstrumentedTest.kt similarity index 85% rename from examples/api/src-tauri/tauri-plugin-sample/android/src/androidTest/java/com/plugin/test/ExampleInstrumentedTest.kt rename to examples/api/src-tauri/tauri-plugin-sample/android/src/androidTest/java/com/plugin/sample/ExampleInstrumentedTest.kt index 1010bda3e..69e867d46 100644 --- a/examples/api/src-tauri/tauri-plugin-sample/android/src/androidTest/java/com/plugin/test/ExampleInstrumentedTest.kt +++ b/examples/api/src-tauri/tauri-plugin-sample/android/src/androidTest/java/com/plugin/sample/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.plugin.test +package com.plugin.sample import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.plugin.test.test", appContext.packageName) + assertEquals("com.plugin.sample", appContext.packageName) } -} \ No newline at end of file +} diff --git a/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/test/Example.kt b/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/sample/Example.kt similarity index 84% rename from examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/test/Example.kt rename to examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/sample/Example.kt index 8253a9b7c..6e00ffcb4 100644 --- a/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/test/Example.kt +++ b/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/sample/Example.kt @@ -1,4 +1,4 @@ -package com.plugin.test +package com.plugin.sample import android.util.Log diff --git a/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/test/ExamplePlugin.kt b/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/sample/ExamplePlugin.kt similarity index 95% rename from examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/test/ExamplePlugin.kt rename to examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/sample/ExamplePlugin.kt index 2d8f3f3aa..6f6f643e6 100644 --- a/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/test/ExamplePlugin.kt +++ b/examples/api/src-tauri/tauri-plugin-sample/android/src/main/java/com/plugin/sample/ExamplePlugin.kt @@ -1,4 +1,4 @@ -package com.plugin.test +package com.plugin.sample import android.app.Activity import app.tauri.plugin.JSObject diff --git a/tooling/cli/templates/plugin/android/src/test/java/com/plugin/test/ExampleUnitTest.kt b/examples/api/src-tauri/tauri-plugin-sample/android/src/test/java/com/plugin/sample/ExampleUnitTest.kt similarity index 91% rename from tooling/cli/templates/plugin/android/src/test/java/com/plugin/test/ExampleUnitTest.kt rename to examples/api/src-tauri/tauri-plugin-sample/android/src/test/java/com/plugin/sample/ExampleUnitTest.kt index 62cdd277e..7ceb7e79d 100644 --- a/tooling/cli/templates/plugin/android/src/test/java/com/plugin/test/ExampleUnitTest.kt +++ b/examples/api/src-tauri/tauri-plugin-sample/android/src/test/java/com/plugin/sample/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.plugin.test +package com.plugin.sample import org.junit.Test @@ -14,4 +14,4 @@ class ExampleUnitTest { fun addition_isCorrect() { assertEquals(4, 2 + 2) } -} \ No newline at end of file +} diff --git a/examples/api/src-tauri/tauri-plugin-sample/src/lib.rs b/examples/api/src-tauri/tauri-plugin-sample/src/lib.rs index 7c7b9572b..5ffb869bd 100644 --- a/examples/api/src-tauri/tauri-plugin-sample/src/lib.rs +++ b/examples/api/src-tauri/tauri-plugin-sample/src/lib.rs @@ -5,7 +5,7 @@ use tauri::{ const PLUGIN_NAME: &str = "sample"; #[cfg(target_os = "android")] -const PLUGIN_IDENTIFIER: &str = "com.plugin.test"; +const PLUGIN_IDENTIFIER: &str = "com.plugin.sample"; #[cfg(target_os = "ios")] extern "C" { diff --git a/tooling/cli/src/mobile/android/project.rs b/tooling/cli/src/mobile/android/project.rs index b1afa6e8a..32f155dde 100644 --- a/tooling/cli/src/mobile/android/project.rs +++ b/tooling/cli/src/mobile/android/project.rs @@ -146,7 +146,7 @@ pub fn gen( Ok(()) } -pub(crate) fn generate_out_file( +fn generate_out_file( path: &Path, dest: &Path, package_path: &str, diff --git a/tooling/cli/src/plugin/init.rs b/tooling/cli/src/plugin/init.rs index e0c2bb0b0..8b16de3ab 100644 --- a/tooling/cli/src/plugin/init.rs +++ b/tooling/cli/src/plugin/init.rs @@ -15,7 +15,12 @@ use heck::{AsKebabCase, ToKebabCase, ToSnakeCase}; use include_dir::{include_dir, Dir}; use log::warn; use std::{ - collections::BTreeMap, env::current_dir, fmt::Display, fs::remove_dir_all, path::PathBuf, + collections::BTreeMap, + env::current_dir, + ffi::OsStr, + fmt::Display, + fs::{create_dir_all, remove_dir_all, File, OpenOptions}, + path::{Path, PathBuf}, str::FromStr, }; @@ -153,18 +158,14 @@ pub fn command(mut options: Options) -> Result<()> { data.insert("package_id", to_json(&plugin_id)); let mut created_dirs = Vec::new(); + let dest = template_target_path.join("android"); template::render_with_generator( &handlebars, &data, &ANDROID_PLUGIN_DIR, - &template_target_path, + &dest, &mut |path| { - crate::mobile::android::project::generate_out_file( - path, - &template_target_path.join("android"), - &plugin_id.replace('.', "/"), - &mut created_dirs, - ) + generate_android_out_file(path, &dest, &plugin_id.replace('.', "/"), &mut created_dirs) }, ) .with_context(|| "failed to render plugin Android template")?; @@ -183,6 +184,46 @@ pub fn command(mut options: Options) -> Result<()> { Ok(()) } +fn generate_android_out_file( + path: &Path, + dest: &Path, + package_path: &str, + created_dirs: &mut Vec, +) -> std::io::Result> { + let mut iter = path.iter(); + let root = iter.next().unwrap().to_str().unwrap(); + let path = match (root, path.extension().and_then(|o| o.to_str())) { + ("src", Some("kt")) => { + let parent = path.parent().unwrap(); + let file_name = path.file_name().unwrap(); + let out_dir = dest.join(parent).join(package_path); + out_dir.join(file_name) + } + _ => dest.join(path), + }; + + let parent = path.parent().unwrap().to_path_buf(); + if !created_dirs.contains(&parent) { + create_dir_all(&parent)?; + created_dirs.push(parent); + } + + let mut options = OpenOptions::new(); + options.write(true); + + #[cfg(unix)] + if path.file_name().unwrap() == OsStr::new("gradlew") { + use std::os::unix::fs::OpenOptionsExt; + options.mode(0o755); + } + + if path.file_name().unwrap() == OsStr::new("BuildTask.kt") || !path.exists() { + options.create(true).open(path).map(Some) + } else { + Ok(None) + } +} + fn request_input( prompt: &str, initial: Option, diff --git a/tooling/cli/templates/plugin/android/build.gradle.kts b/tooling/cli/templates/plugin/android/build.gradle.kts index 83f86a9a9..59c4f46da 100644 --- a/tooling/cli/templates/plugin/android/build.gradle.kts +++ b/tooling/cli/templates/plugin/android/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } android { - namespace = "com.plugin.test" + namespace = "{{package_id}}" compileSdk = 32 defaultConfig { @@ -42,4 +42,4 @@ dependencies { androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") implementation(project(":tauri-android")) -} \ No newline at end of file +} diff --git a/tooling/cli/templates/plugin/android/src/androidTest/java/com/plugin/test/ExampleInstrumentedTest.kt b/tooling/cli/templates/plugin/android/src/androidTest/java/ExampleInstrumentedTest.kt similarity index 85% rename from tooling/cli/templates/plugin/android/src/androidTest/java/com/plugin/test/ExampleInstrumentedTest.kt rename to tooling/cli/templates/plugin/android/src/androidTest/java/ExampleInstrumentedTest.kt index 1010bda3e..00069ad0f 100644 --- a/tooling/cli/templates/plugin/android/src/androidTest/java/com/plugin/test/ExampleInstrumentedTest.kt +++ b/tooling/cli/templates/plugin/android/src/androidTest/java/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.plugin.test +package {{package_id}} import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.plugin.test.test", appContext.packageName) + assertEquals("{{package_id}}", appContext.packageName) } -} \ No newline at end of file +} diff --git a/tooling/cli/templates/plugin/android/src/main/Example.kt b/tooling/cli/templates/plugin/android/src/main/java/Example.kt similarity index 100% rename from tooling/cli/templates/plugin/android/src/main/Example.kt rename to tooling/cli/templates/plugin/android/src/main/java/Example.kt diff --git a/tooling/cli/templates/plugin/android/src/main/ExamplePlugin.kt b/tooling/cli/templates/plugin/android/src/main/java/ExamplePlugin.kt similarity index 100% rename from tooling/cli/templates/plugin/android/src/main/ExamplePlugin.kt rename to tooling/cli/templates/plugin/android/src/main/java/ExamplePlugin.kt diff --git a/examples/api/src-tauri/tauri-plugin-sample/android/src/test/java/com/plugin/test/ExampleUnitTest.kt b/tooling/cli/templates/plugin/android/src/test/java/ExampleUnitTest.kt similarity index 92% rename from examples/api/src-tauri/tauri-plugin-sample/android/src/test/java/com/plugin/test/ExampleUnitTest.kt rename to tooling/cli/templates/plugin/android/src/test/java/ExampleUnitTest.kt index 62cdd277e..747189173 100644 --- a/examples/api/src-tauri/tauri-plugin-sample/android/src/test/java/com/plugin/test/ExampleUnitTest.kt +++ b/tooling/cli/templates/plugin/android/src/test/java/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.plugin.test +package {{package_id}} import org.junit.Test @@ -14,4 +14,4 @@ class ExampleUnitTest { fun addition_isCorrect() { assertEquals(4, 2 + 2) } -} \ No newline at end of file +}