使用 Jenkins 持續整合 Android 專案遇到的坑

姜家志發表於2017-03-24

在使用Jenkins配置Android專案的時候遇到了一些坑,總結下:

##沒有gradle.properties檔案

  • 錯誤資訊:

    example/bulid.gradle
    FAILURE: Build failed with an exception.

    • Where:
      Build file '/Users/Shared/Jenkins/Home/jobs/android- crop/workspace/build.gradle' line: 12
    • What went wrong:
      A problem occurred evaluating root project 'workspace'.
      Could not find property 'VERSION' on root project 'workspace'.
  • 錯誤分析:使用Android Studio開啟一個專案的時候預設會生成gradle.properties,在使用Jenkins整合的時候使用的是gradle assembleRelease命令,不會自動生成gradle.properties的,就出現了上面的錯誤。
  • 解決方案:在專案根目錄新增一個gradle.properties

    VERSION=1.0.1
    VERSION_CODE=1
    signing.keyId=
    signing.secretKeyRingFile=
    signing.password=
    sonatypeUsername=jdamcd
    sonatypePassword=複製程式碼

##無法使用.ssh中的private key

  • 錯誤資訊:使用clone專案的時候無法使用.ssh中的private key
  • 錯誤分析:安裝Jenkins的時候會新建了一個使用者(jenkins),jenkins使用者沒有許可權讀取~/.ssh的許可權。
  • 解決方案:在Jenkins的介面中使用Add credentials手動輸入private key的內容:
    使用 Jenkins 持續整合 Android 專案遇到的坑
    add credentials

##構建專案許可權不足

  • 錯誤資訊:

    • What went wrong:
      java.io.IOException: Permission denied
      Permission denied
  • 錯誤分析:造成這個問題的原因是因為給予jenkins使用者的許可權不足,無法操作jenkins目錄。

  • 解決方案: 給jenkins使用者足夠的許可權

    sudo chown -R jenkins /var/lib/jenkins/複製程式碼

##沒有設定sdk的目錄

  • 錯誤資訊:無法構建Android專案,找不到sdk位置
  • 錯誤分析:local.properties同樣的也是由Android Studio中自動根據環境變數生成的,在使用gradle build的時候也是無法自動建立的。

  • 解決方案:在專案根目錄定義一個local.properties並指定sdk.dir為Android SDK的位置。

    ## This file is automatically generated by Android Studio.
    # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
    #
    # This file must *NOT* be checked into Version Control Systems,
    # as it contains information specific to your local configuration.
    #
    # Location of the SDK. This is only used by Gradle.
    # For customization when using a Version Control System, please read the
    # header note.
    #Fri Dec 11 16:57:33 CST 2015
    sdk.dir=/var/lib/jenkins/tools/android-sdk複製程式碼

##請使用外掛
Jenkins提供各種強大的外掛比如:

  • Gradle plugin:可以配置管理本地的gradle。
  • Git Parameter Plug-In:可以幫助在Jenkins中更好的管理git。
  • Android Emulator Plugin:可以管理Android sdk,也可以幫助整合Android專案。
    Jenkins的有各種強大的外掛,如果某個配置或者某個工具不知道在Jenkins中使用,可以嘗試找下它的外掛。

相關文章