Error: Building for iOS Simulator-arm64 but attempting to link with file built for iOS Simulator-x86_64 (M1)
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- ios, kotlin
- 領域
- build-system, mobile
調査の方向性
SharedCode build.gradle.kts のターゲット選択と ViewController の例から始め、次に M1 シミュレータ上のサンプル Xcode プロジェクトでリンク手順を再現します。生成された Multiplatform.framework のアーキテクチャを、リンカーエラーに表示されるシミュレータのアーキテクチャと比較します。完了条件は、Greeting の呼び出しが正常にリンクされて実行されることです。
索引モデルが issue の本文から書いたものです。
説明
Hi, I am trying to integrate KMM project as a pod to my sample Xcode Project. I can link the KMM Pod to my Xcode project. However if I try to call one of the function, below error yielded. If I do not call any of the KMM function, it can run the app in my simulator.
ViewController
import UIKit
import Multiplatform
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let a = Greeting()
a.greeting()
}
}
ld: warning: ignoring file /Users/avjiang/Developments/Multiplatform/SharedCode/build/cocoapods/framework/Multiplatform.framework/Multiplatform, building for iOS Simulator-arm64 but attempting to link with file built for iOS Simulator-x86_64
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_MultiplatformGreeting", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
The KMM application is just a simple app. There is a Greeting class inside SharedCode -> commonMain -> kotlin -> Greeting
Below is my configuration for build.gradle.kts
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform")
kotlin("native.cocoapods")
id("com.android.library")
}
version = "1.0"
kotlin {
android()
cocoapods {
// Configure fields required by CocoaPods.
summary = "Some description for a Kotlin/Native module"
homepage = "Link to a Kotlin/Native module homepage"
frameworkName = "Multiplatform"
ios.deploymentTarget = "13.5"
podfile = project.file("/Users/avjiang/Developments/TestKotlinMultiplatformPod/Podfile")
}
val iosTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget =
if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true)
::iosArm64
else
::iosX64
iosTarget("ios") { }
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val androidMain by getting
val androidTest by getting {
dependencies {
implementation(kotlin("test-junit"))
implementation("junit:junit:4.13.2")
}
}
val iosMain by getting
val iosTest by getting
}
}
android {
compileSdkVersion(30)
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
defaultConfig {
minSdkVersion(19)
targetSdkVersion(30)
}
}
And this is my project build.gradle.kts
buildscript {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20")
classpath("com.android.tools.build:gradle:4.2.2")
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
}
Basically I am just following the tutorial from https://kotlinlang.org/docs/mobile/create-first-app.html. Nothing complex yet. Is there anything I missed out?
My machine configuration:
Mac mini M1
Xcode 13 beta 2
MacOS 11.4
Thank you
- 主要言語
- Kotlin
- スター
- 1.1k
- フォーク
- 204
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの環境構築ファイルはまだ確認していません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Kotlin/kmp-basic-sample のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
Kotlin/kmp-basic-sample#84 ·
-
Support for webオープン
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
Kotlin/kmp-basic-sample#82 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
Kotlin/kmp-basic-sample#81 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 25/100
Kotlin/kmp-basic-sample#75 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 25/100
Kotlin/kmp-basic-sample#71 ·
Kotlin/kmp-basic-sample の issue をすべて見る
似ている issue
-
Meta request
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
keiyoushi/extensions-source#19500 ·
メンテナーはふだん 1 日以内に返信
-
go 🏃 testing 🧪
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
valkey-io/valkey-glide#7239 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
ethereum-lists/chains#8788 ·
メンテナーはふだん 1 日以内に返信
-
documentation P1
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
modelcontextprotocol/kotlin-sdk#1050 ·
メンテナーはふだん 2 日以内に返信