LoginSignup
2
1

More than 5 years have passed since last update.

Kotlin/Native Multiplatform ProjectをiOS向けにAndroidSDK無しでビルドする

Last updated at Posted at 2019-02-19

先日、こちらの記事「Kotlin/Native ProjectをBitriseのiOSプラットフォームでビルドする」を書いたのですが、Gradleの知識が足りなかったためすごく遠回りなことをしていました。もっと簡単にできるので書きたいと思います

Androidの依存関係を切り離す

 上記に書いてある通り、iOSのビルドの時だけAndroidの依存関係を切り離せばAndroidSDKは不要になります。
 まず初めに思い付いたのが、タスク実行時にプロジェクトプロパティ、例えば./gradlew packForXcode -Pis_iosのようにして、project.hasProperty('is_ios')で分岐して、プロパティがなければincludeしないという方法なのですが、そうするとiOSのビルドなのにis_iosを付与すると意味合いが矛盾してしまいます
 そこで、実行するタスク名を取得して、packForXcodeの時だけAndroidの依存関係を切り離す、という様にします。そうすると、実行する側はプロジェクトプロパティを気にしなくていいのと、iOS実行時にはAndroidSDKは必要ない、といった自然な流れになります。
 具体的にはsettings.gradleにその処理を書きます

settings.gradle
include ':app' ':common'

settings.gradle
include ':common'

if (startParameter.taskNames.any { it.contains('packForXCode') } ) {
    include ':app'
}

の様に書き換えます。こうすることで、packForXcodeの時はinclude ':app'が実行されなく、それ以外の時は実行されるようになります。

実際に、元のsettings.gradleのままで./gradlew packForXcodeを実行すると、

terminal
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

とapp(Androidのビルド)のconfigure時にANDROID_HOMEが無いから実行できないと怒られます。

書き換えた後のsettings.gradleで実行すると、

ternimal
> Configure project :common
Kotlin Multiplatform Projects are an experimental feature.

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 up-to-date

無事ビルドが成功した事がわかります
これで、わざわざ毎回CI上でAndroidSDKをインストールしたりせずに済みます!

まだまだ勉強中なので良い方法があれば随時更新していきたいと思います

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1