mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-12-22 02:01:49 +03:00
feat(cli): iOS simulator support on Intel based devices (#5112)
This commit is contained in:
parent
5d3242c496
commit
6593f267b3
@ -858,7 +858,7 @@ impl<R: Runtime> WindowManager<R> {
|
|||||||
builder.status(r.status()).body(r.bytes()?)?
|
builder.status(r.status()).body(r.bytes()?)?
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
debug_eprintln!("Failed to request {}: {}", url.path(), e);
|
debug_eprintln!("Failed to request {}: {}", url.as_str(), e);
|
||||||
return Err(Box::new(e));
|
return Err(Box::new(e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
tooling/cli/Cargo.lock
generated
2
tooling/cli/Cargo.lock
generated
@ -293,7 +293,7 @@ checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cargo-mobile"
|
name = "cargo-mobile"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/tauri-apps/cargo-mobile?branch=dev#ff88cc91fbf008ee0b9b33c8e4bcb5c9b5b743e6"
|
source = "git+https://github.com/tauri-apps/cargo-mobile?branch=dev#4a28c9e2370c07b4cb83458e58da0d7bfe4e9b1e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cocoa",
|
"cocoa",
|
||||||
"colored 1.9.3",
|
"colored 1.9.3",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use super::{detect_target_ok, ensure_init, env, init_dot_cargo, with_config, MobileTarget};
|
use super::{detect_target_ok, ensure_init, env, with_config, MobileTarget};
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
@ -32,11 +32,10 @@ pub fn command(options: Options) -> Result<()> {
|
|||||||
Profile::Debug
|
Profile::Debug
|
||||||
};
|
};
|
||||||
|
|
||||||
with_config(None, |app, config, metadata, cli_options| {
|
with_config(None, |_app, config, metadata, cli_options| {
|
||||||
ensure_init(config.project_dir(), MobileTarget::Android)?;
|
ensure_init(config.project_dir(), MobileTarget::Android)?;
|
||||||
|
|
||||||
let env = env()?;
|
let env = env()?;
|
||||||
init_dot_cargo(app, Some((&env, config)))?;
|
|
||||||
|
|
||||||
call_for_targets_with_fallback(
|
call_for_targets_with_fallback(
|
||||||
options.targets.unwrap_or_default().iter(),
|
options.targets.unwrap_or_default().iter(),
|
||||||
|
@ -50,18 +50,14 @@ pub fn gen(
|
|||||||
let ios_pods = metadata.ios().pods().unwrap_or_default();
|
let ios_pods = metadata.ios().pods().unwrap_or_default();
|
||||||
let macos_pods = metadata.macos().pods().unwrap_or_default();
|
let macos_pods = metadata.macos().pods().unwrap_or_default();
|
||||||
|
|
||||||
let default_archs = [
|
#[cfg(target_arch = "aarch64")]
|
||||||
String::from("arm64"),
|
let default_archs = ["arm64", "arm64-sim"];
|
||||||
String::from("arm64-sim"),
|
#[cfg(not(target_arch = "aarch64"))]
|
||||||
String::from("x86_64"),
|
let default_archs = ["arm64", "x86_64"];
|
||||||
];
|
|
||||||
|
|
||||||
map.insert("file-groups", &source_dirs);
|
map.insert("file-groups", &source_dirs);
|
||||||
map.insert("ios-frameworks", metadata.ios().frameworks());
|
map.insert("ios-frameworks", metadata.ios().frameworks());
|
||||||
map.insert(
|
map.insert("ios-valid-archs", default_archs);
|
||||||
"ios-valid-archs",
|
|
||||||
metadata.ios().valid_archs().unwrap_or(&default_archs),
|
|
||||||
);
|
|
||||||
map.insert("ios-vendor-frameworks", metadata.ios().vendor_frameworks());
|
map.insert("ios-vendor-frameworks", metadata.ios().vendor_frameworks());
|
||||||
map.insert("ios-vendor-sdks", metadata.ios().vendor_sdks());
|
map.insert("ios-vendor-sdks", metadata.ios().vendor_sdks());
|
||||||
map.insert("macos-frameworks", metadata.macos().frameworks());
|
map.insert("macos-frameworks", metadata.macos().frameworks());
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use super::{env, init_dot_cargo, with_config};
|
use super::{env, with_config};
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
@ -41,9 +41,8 @@ pub fn command(options: Options) -> Result<()> {
|
|||||||
let profile = profile_from_configuration(&options.configuration);
|
let profile = profile_from_configuration(&options.configuration);
|
||||||
let macos = macos_from_platform(&options.platform);
|
let macos = macos_from_platform(&options.platform);
|
||||||
|
|
||||||
with_config(None, |root_conf, config, metadata, cli_options| {
|
with_config(None, |_root_conf, config, metadata, cli_options| {
|
||||||
let env = env()?;
|
let env = env()?;
|
||||||
init_dot_cargo(root_conf, None)?;
|
|
||||||
// The `PATH` env var Xcode gives us is missing any additions
|
// The `PATH` env var Xcode gives us is missing any additions
|
||||||
// made by the user's profile, so we'll manually add cargo's
|
// made by the user's profile, so we'll manually add cargo's
|
||||||
// `PATH`.
|
// `PATH`.
|
||||||
@ -65,31 +64,6 @@ pub fn command(options: Options) -> Result<()> {
|
|||||||
|
|
||||||
let mut host_env = HashMap::<&str, &OsStr>::new();
|
let mut host_env = HashMap::<&str, &OsStr>::new();
|
||||||
|
|
||||||
// Host flags that are used by build scripts
|
|
||||||
let (macos_isysroot, library_path) = {
|
|
||||||
let macos_sdk_root = options
|
|
||||||
.sdk_root
|
|
||||||
.join("../../../../MacOSX.platform/Developer/SDKs/MacOSX.sdk");
|
|
||||||
if !macos_sdk_root.is_dir() {
|
|
||||||
return Err(anyhow::anyhow!(
|
|
||||||
"macOS SDK root was invalid. {0} doesn't exist or isn't a directory",
|
|
||||||
macos_sdk_root.display()
|
|
||||||
));
|
|
||||||
}
|
|
||||||
(
|
|
||||||
format!("-isysroot {}", macos_sdk_root.display()),
|
|
||||||
format!("{}/usr/lib", macos_sdk_root.display()),
|
|
||||||
)
|
|
||||||
};
|
|
||||||
host_env.insert("MAC_FLAGS", macos_isysroot.as_ref());
|
|
||||||
host_env.insert("CFLAGS_x86_64_apple_darwin", macos_isysroot.as_ref());
|
|
||||||
host_env.insert("CXXFLAGS_x86_64_apple_darwin", macos_isysroot.as_ref());
|
|
||||||
|
|
||||||
host_env.insert(
|
|
||||||
"OBJC_INCLUDE_PATH_x86_64_apple_darwin",
|
|
||||||
include_dir.as_os_str(),
|
|
||||||
);
|
|
||||||
|
|
||||||
host_env.insert("RUST_BACKTRACE", "1".as_ref());
|
host_env.insert("RUST_BACKTRACE", "1".as_ref());
|
||||||
|
|
||||||
let macos_target = Target::macos();
|
let macos_target = Target::macos();
|
||||||
@ -116,9 +90,6 @@ pub fn command(options: Options) -> Result<()> {
|
|||||||
target_env.insert(cflags.as_ref(), isysroot.as_ref());
|
target_env.insert(cflags.as_ref(), isysroot.as_ref());
|
||||||
target_env.insert(cxxflags.as_ref(), isysroot.as_ref());
|
target_env.insert(cxxflags.as_ref(), isysroot.as_ref());
|
||||||
target_env.insert(objc_include_path.as_ref(), include_dir.as_ref());
|
target_env.insert(objc_include_path.as_ref(), include_dir.as_ref());
|
||||||
// Prevents linker errors in build scripts and proc macros:
|
|
||||||
// https://github.com/signalapp/libsignal-client/commit/02899cac643a14b2ced7c058cc15a836a2165b6d
|
|
||||||
target_env.insert("LIBRARY_PATH", library_path.as_ref());
|
|
||||||
|
|
||||||
let target = if macos {
|
let target = if macos {
|
||||||
&macos_target
|
&macos_target
|
||||||
|
@ -3,7 +3,6 @@ options:
|
|||||||
bundleIdPrefix: {{reverse-domain app.domain}}
|
bundleIdPrefix: {{reverse-domain app.domain}}
|
||||||
deploymentTarget:
|
deploymentTarget:
|
||||||
iOS: {{apple.ios-version}}
|
iOS: {{apple.ios-version}}
|
||||||
macOS: {{apple.macos-version}}
|
|
||||||
fileGroups: [{{join file-groups}}]
|
fileGroups: [{{join file-groups}}]
|
||||||
configs:
|
configs:
|
||||||
debug: debug
|
debug: debug
|
||||||
@ -71,8 +70,9 @@ targets:
|
|||||||
ENABLE_BITCODE: false
|
ENABLE_BITCODE: false
|
||||||
ARCHS: [{{join ios-valid-archs}}]
|
ARCHS: [{{join ios-valid-archs}}]
|
||||||
VALID_ARCHS: {{~#each ios-valid-archs}} {{this}} {{/each}}
|
VALID_ARCHS: {{~#each ios-valid-archs}} {{this}} {{/each}}
|
||||||
LIBRARY_SEARCH_PATHS[sdk=iphoneos*]: $(inherited) "{{prefix-path "target/aarch64-apple-ios/$(CONFIGURATION)"}}"
|
LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) "{{prefix-path "target/x86_64-apple-ios/$(CONFIGURATION)"}}"
|
||||||
LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]: $(inherited) "{{prefix-path "target/aarch64-apple-ios-sim/$(CONFIGURATION)"}}"
|
LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) "{{prefix-path "target/aarch64-apple-ios/$(CONFIGURATION)"}}"
|
||||||
|
LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) "{{prefix-path "target/aarch64-apple-ios-sim/$(CONFIGURATION)"}}"
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
|
||||||
groups: [app]
|
groups: [app]
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -158,106 +158,6 @@ targets:
|
|||||||
{{~/each~}}
|
{{~/each~}}
|
||||||
{{~/if}}
|
{{~/if}}
|
||||||
|
|
||||||
{{app.name}}_macOS:
|
|
||||||
type: application
|
|
||||||
platform: macOS
|
|
||||||
sources: Sources
|
|
||||||
{{~#each macos-additional-targets}}
|
|
||||||
- path: {{prefix-path this}}{{/each}}
|
|
||||||
info:
|
|
||||||
path: {{app.name}}_macOS/Info.plist
|
|
||||||
properties:
|
|
||||||
NSHighResolutionCapable: true
|
|
||||||
scheme:
|
|
||||||
environmentVariables:
|
|
||||||
RUST_BACKTRACE: full
|
|
||||||
RUST_LOG: info
|
|
||||||
{{~#if ios-command-line-arguments}}
|
|
||||||
commandLineArguments:
|
|
||||||
{{~#each ios-command-line-arguments}}
|
|
||||||
"{{this}}": true
|
|
||||||
{{/each}}{{~/if}}
|
|
||||||
settings:
|
|
||||||
base:
|
|
||||||
LIBRARY_SEARCH_PATHS: $(inherited) "{{prefix-path "target/x86_64-apple-darwin/$(CONFIGURATION)"}}"
|
|
||||||
groups: [app]
|
|
||||||
dependencies:
|
|
||||||
- target: lib_{{app.name}}_macOS
|
|
||||||
embed: false
|
|
||||||
link: false
|
|
||||||
- framework: lib{{snake-case app.name}}.a
|
|
||||||
embed: false
|
|
||||||
{{~#each macos-vendor-frameworks}}
|
|
||||||
- framework: {{prefix-path this}}{{/each}}
|
|
||||||
{{~#each macos-vendor-sdks}}
|
|
||||||
- sdk: {{prefix-path this}}{{/each}}
|
|
||||||
- sdk: Metal.framework
|
|
||||||
{{~#each macos-frameworks}}
|
|
||||||
- sdk: {{this}}.framework{{/each}}
|
|
||||||
{{~#if macos-pre-build-scripts}}
|
|
||||||
preBuildScripts:
|
|
||||||
{{~#each macos-pre-build-scripts}}{{#if this.path}}
|
|
||||||
- path {{this.path}}{{/if}}{{#if this.script}}
|
|
||||||
- script: {{this.script}}{{/if}}{{#if this.name}}
|
|
||||||
name: {{this.name}}{{/if}}{{#if this.input-files}}
|
|
||||||
inputFiles: {{~#each this.input-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.output-files}}
|
|
||||||
outputFiles: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.input-file-lists}}
|
|
||||||
inputFileLists: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.output-file-lists}}
|
|
||||||
outputFileLists: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.shell}}
|
|
||||||
shell: {{this.shell}}{{/if}}{{#if this.show-env-vars}}
|
|
||||||
showEnvVars: {{this.show_env_vars}}{{/if}}{{#if this.run-only-when-installing}}
|
|
||||||
runOnlyWhenInstalling: {{this.run-only-when-installing}}{{/if}}{{#if this.based-on-dependency-analysis}}
|
|
||||||
basedOnDependencyAnalysis: {{this.based-on-dependency-analysis}}{{/if}}{{#if this.discovered-dependency-file}}
|
|
||||||
discoveredDependencyFile: {{this.discovered-dependency-file}}{{/if}}
|
|
||||||
{{~/each~}}
|
|
||||||
{{~/if~}}
|
|
||||||
{{#if macos-post-compile-scripts}}
|
|
||||||
postCompileScripts:
|
|
||||||
{{~#each macos-post-compile-scripts}}{{#if this.path}}
|
|
||||||
- path {{this.path}}{{/if}}{{#if this.script}}
|
|
||||||
- script: {{this.script}}{{/if}}{{#if this.name}}
|
|
||||||
name: {{this.name}}{{/if}}{{#if this.input-files}}
|
|
||||||
inputFiles: {{~#each this.input-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.output-files}}
|
|
||||||
outputFiles: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.input-file-lists}}
|
|
||||||
inputFileLists: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.output-file-lists}}
|
|
||||||
outputFileLists: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.shell}}
|
|
||||||
shell: {{this.shell}}{{/if}}{{#if this.show-env-vars}}
|
|
||||||
showEnvVars: {{this.show_env_vars}}{{/if}}{{#if this.run-only-when-installing}}
|
|
||||||
runOnlyWhenInstalling: {{this.run-only-when-installing}}{{/if}}{{#if this.based-on-dependency-analysis}}
|
|
||||||
basedOnDependencyAnalysis: {{this.based-on-dependency-analysis}}{{/if}}{{#if this.discovered-dependency-file}}
|
|
||||||
discoveredDependencyFile: {{this.discovered-dependency-file}}{{/if}}
|
|
||||||
{{~/each~}}
|
|
||||||
{{~/if~}}
|
|
||||||
{{#if macos-post-build-scripts}}
|
|
||||||
postBuildScripts:
|
|
||||||
{{~#each macos-post-build-scripts}}{{#if this.path}}
|
|
||||||
- path {{this.path}}{{/if}}{{#if this.script}}
|
|
||||||
- script: {{this.script}}{{/if}}{{#if this.name}}
|
|
||||||
name: {{this.name}}{{/if}}{{#if this.input-files}}
|
|
||||||
inputFiles: {{~#each this.input-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.output-files}}
|
|
||||||
outputFiles: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.input-file-lists}}
|
|
||||||
inputFileLists: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.output-file-lists}}
|
|
||||||
outputFileLists: {{~#each this.output-files}}
|
|
||||||
- {{this}}{{/each}}{{/if}}{{#if this.shell}}
|
|
||||||
shell: {{this.shell}}{{/if}}{{#if this.show-env-vars}}
|
|
||||||
showEnvVars: {{this.show_env_vars}}{{/if}}{{#if this.run-only-when-installing}}
|
|
||||||
runOnlyWhenInstalling: {{this.run-only-when-installing}}{{/if}}{{#if this.based-on-dependency-analysis}}
|
|
||||||
basedOnDependencyAnalysis: {{this.based-on-dependency-analysis}}{{/if}}{{#if this.discovered-dependency-file}}
|
|
||||||
discoveredDependencyFile: {{this.discovered-dependency-file}}{{/if}}
|
|
||||||
{{~/each~}}
|
|
||||||
{{~/if}}
|
|
||||||
|
|
||||||
lib_{{app.name}}_iOS:
|
lib_{{app.name}}_iOS:
|
||||||
type: ""
|
type: ""
|
||||||
platform: iOS
|
platform: iOS
|
||||||
@ -270,11 +170,3 @@ targets:
|
|||||||
arguments: {{ tauri-binary-args-str }} -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}
|
arguments: {{ tauri-binary-args-str }} -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}
|
||||||
passSettings: false # prevents evil linker errors
|
passSettings: false # prevents evil linker errors
|
||||||
workingDirectory: $(SRCROOT)/../..
|
workingDirectory: $(SRCROOT)/../..
|
||||||
lib_{{app.name}}_macOS:
|
|
||||||
type: ""
|
|
||||||
platform: macOS
|
|
||||||
legacy:
|
|
||||||
toolPath: {{ tauri-binary }}
|
|
||||||
arguments: {{ tauri-binary-args-str }} -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}
|
|
||||||
passSettings: false
|
|
||||||
workingDirectory: $(SRCROOT)/../..
|
|
||||||
|
Loading…
Reference in New Issue
Block a user