Bitrise iOS 플랫폼에서 Kotlin/Native Project 구축
11692 단어 KotlinNativeBitriseiOS
2019/2/19 추기
여기 기사.로 더 간결한 방법을 썼어요!
이 보도에 관하여
이 기사에서는 Kotlin/Native의 튜토리얼 등을 설명하지 않는다.강좌에 추천하는 기사는요.
본고는 Bitrise의 iOS 플랫폼에서 프로젝트Kotlin/Native를 구축하는 방법을 설명한다.
gradle
에서 생성.framework
하는 방법을 정확하게 기술하고 싶습니다.문장의 내용은 공식적인tutorial에 따라 기술한다Kotlin/Native는 매일 변화하는 매우 새로운 프로젝트입니다.분위기를 띄워라!
CI의 전체 단계 프로세스
사소한 일은 생략하고 대체로 다음과 같이 편성한다.이 기사에는 2와 3에 대한 내용이 적혀있어요.
1. Clone
2. 설치 실행
./gradlew packForXcode
에 필요한 종속 도구3.
.framework
생성./gradlew packForXcode
집행)4.증명서 따위
5. 아카이빙, 테스트 등
주의해야 할 것은 iOS를 구축하기 전에 한 번
./gradlew packForXcode
이 필요하다는 것이다.이것은 SharedCode/build.gradle
의 packForXCode
작업과 Xcode의 Build Phases
에 추가된 스크립트를 대조하여 판단할 수 있다task packForXCode(type: Sync) {
final File frameworkDir = new File(buildDir, "xcode-frameworks")
final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG'
inputs.property "mode", mode
dependsOn kotlin.targets.iOS.compilations.main.linkTaskName("FRAMEWORK", mode)
from { kotlin.targets.iOS.compilations.main.getBinary("FRAMEWORK", mode).parentFile }
into frameworkDir
doLast {
new File(frameworkDir, 'gradlew').with {
text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n"
setExecutable(true)
}
}
}
tasks.build.dependsOn packForXCode
packForXCode
final File frameworkDir = new File(buildDir, "xcode-frameworks")
에서 만들기SharedCode/build/code-frameworks
, 이 폴더에 놓기.framework
, XcodeBuild Phases
에cd "$SRCROOT/../../SharedCode/build/xcode-frameworks"
./gradlew :SharedCode:packForXCode -PXCODE_CONFIGURATION=${CONFIGURATION}
이렇게 써.build/
gitignore 대상이기 때문에 clone 단계build/xcode-frameworks
디렉터리가 생성되지 않았고 cd를 생각해도 욕을 먹는다No such a file or dictionary
.또한
build/xcode-frameworks
이하gradlew
파일도 생성되지 않았기 때문에 먼저 실행해야 한다./gradlew packForXcode
.캐시가 유효하므로 처음에 작업을 수행하는 데 시간이 걸리지 않습니다..framework 생성에 필요한 것
Android SDK
Android 구축에 필요합니다.안드로이드 스튜디오를 로컬에 설치할 때 들어옵니다.CI에서 SDK는 CLI로만 설치됩니다.안드로이드 SDK는 세팅스
Build Phases
를 만들지 않으면Project Type Selector
사용할 수 없다고 한다.참고 자료 즉
Android
를 안드로이드로 설정하면 iOS를 구축할 수 없기 때문에 스스로 안드로이드 SDK에 가입해야 한다는 것이다.Java
Andorid SDK를 사용할 때 필요합니다.버전은 프로젝트 설정에 따라 다릅니다.저 혼자 자바8을 썼어요. 그래서 자바8을 설치했어요.
Homebrew-cask를 사용하여 설치
다행히도 두 개 모두 홈brew-cask에 설치할 수 있습니다.brew
Project Type Selector
iOS라면 사용 가능Project Type Selector
Step, install 추가brew cask install android-sdk java8
이렇게만 하면 집행할 때 혼나요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
Command PhaseScriptExecution failed with a nonzero exit code
Script
설정./gradlew packForXCode
또는 설정local.properties
.sdk.dir
gitignore를 추천하기 때문에 설정ANDROID_HOME
.로컬에서는 설정하지 않고
local.properties
도 이동할 수 있는데, 이는 지하ANDROID_HOME
를 생성하고ANDROID_HOME
설정했기 때문이다.나는 여기서 평론 출력 등을 하면 상술한 오류가 발생할 것이라고 생각한다.로컬
local.properties
export에서 하고 싶습니다. sdk.dir
에서 기술해도 됩니다.그러나 bash_profile
를 사용하지 않는 경우 local.properties
에 사용된 셸이 환경 변수local.properties
를 설정하지 않은 경우 오류가 발생합니다.따라서 환경 변수
Build Phases
를 CI에 설정하고 싶습니다.다만, 기본 XcodeANDROID_HOME
의 스크립트는 셸ANDROID_HOME
이고, BitriseBuild Phases
는 export로 해결할 수 없습니다.그래서 이번에는
/bin/sh
를 만들어서 거기에 설정/usr/bin/env bash
해서 .bash_profile
로 읽고 싶어요.아까 ANDROID_HOME
밑에 쓰세요.겸사겸사 설정Build Phases
자바8을 미리 사용하세요.touch ~/.bash_profile
echo 'export ANDROID_HOME=/usr/local/share/android-sdk' >> ~/.bash_profile
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)' >> ~/.bash_profile
source ~/.bash_profile
brew cask
의 스크립트에 추가JAVA_HOME
cd "$SRCROOT/../../SharedCode/build/xcode-frameworks"
source ~/.bash_profile # ここ追加
./gradlew :SharedCode:packForXCode -PXCODE_CONFIGURATION=${CONFIGURATION}
듣기에 괜찮다.간신히 집행한 줄 알았는데 또 오류가 났군..FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
platforms;android-28 Android SDK Platform 28
build-tools;27.0.3 Android SDK Build-Tools 27.0.3
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html
Using Android SDK: /usr/local/share/android-sdk
나는 허가증에 동의하지 않는다.그래서 동의합니다.yes | sdkmanager --licenses
나는 모든 허가증에 동의하지만 Build Phases
아마도 통과할 수 있을 것이다이렇게 하면
source ~/.bash_profile
sdkmanager "platforms;android-28"
안전하게 지을 수 있다Homebrew-cask 이외의 옵션
brew cask 이외에도
./gradlew packForXcode
등이 당기고 해동하여 기호 링크를 붙이는 등wget https://dl.google.com/android/repository/sdk-tools-darwin-4333796.zip
unzip ...
스크립트 완료
#!/usr/bin/env bash
# fail if any commands fails
set -e
# debug log
set -x
brew cask install android-sdk java8
export JAVA_HOME=`/usr/libexec/java_home -v "1.8"`
export ANDROID_HOME=/usr/local/share/android-sdk
PATH=${JAVA_HOME}/bin:${PATH}
PATH=${ANDROID_HOME}/bin:${PATH}
yes | sdkmanager --licenses
cd $BITRISE_SOURCE_DIR
./gradlew packForXCode
최후
원래gradle의 iOS 구축에는 안드로이드 sdk가 필요하지 않지만, 구축할 때 안드로이드 작업도 실행되기 때문에 뭔가 연관이 있는 것 같다.gradle의 지식이 부족해서 몰라요..
배우고 탐색하고 싶어요.
길이 멀다..
Reference
이 문제에 관하여(Bitrise iOS 플랫폼에서 Kotlin/Native Project 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Keeeeen/items/a195f756236e70ec22d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)