Bitrise iOS 플랫폼에서 Kotlin/Native Project 구축

11692 단어 KotlinNativeBitriseiOS

2019/2/19 추기


여기 기사.로 더 간결한 방법을 썼어요!

이 보도에 관하여


이 기사에서는 Kotlin/Native의 튜토리얼 등을 설명하지 않는다.강좌에 추천하는 기사는요.
  • 공식 iOS Tutorial
  • 전체 Android, iOS 편 - AABrain
  • 주변 추천
    본고는 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.gradlepackForXCode 작업과 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
    
    packForXCodefinal 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에 설치할 수 있습니다.brewProject Type SelectoriOS라면 사용 가능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.dirgitignore를 추천하기 때문에 설정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_profilesdkmanager "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의 지식이 부족해서 몰라요..
    배우고 탐색하고 싶어요.
    길이 멀다..

    좋은 웹페이지 즐겨찾기