Docker + jenkins + Android自動化打包 SdkManager 遇到的坑

下載docker,官網下載安裝

安裝好後,下載 docker 提供的 Jenkins的鏡像

 

配置一下,不然好多異常提示,尤其是 registry-mirrors  和  expermental

{
  "registry-mirrors": [
    "https://pee6w651.mirror.aliyuncs.com",
    "https://hub.daocloud.io/"
  ],
  "insecure-registries": [],
  "debug": true,
  "experimental": true
}

還有就是有條件的話,內存和cpu給多點,不然打包好慢

只有在linux模式下,纔有這個選項,window模式好像沒看到

 

 

https://hub.docker.com/r/jenkins/jenkins

坑1:

我一開始默認使用的是 jenkins/jenkins:latest 版的鏡像,

docker pull jenkins/jenkins:latest

下載好鏡像後,運行安裝插件是,總提示  No such plugin: cloudbees-folder

這時候latest版是2.238版本 ,而穩定版是 2.222.4版本

我一開始以爲是我的安裝姿勢不對,最後拍坑是因爲鏡像的問題,我下載2.222.4版本的鏡像就沒有任何問題

docker pull jenkins/jenkins:2.222.4

下載好鏡像後,可以通過一下命令查看

docker images    查看鏡像

docker  docker rmi  鏡像名稱    刪除鏡像

 


開始運行容器 :

docker run -d -p 8081:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home --name jenkins --privileged=true  -u root jenkins/jenkins:2.222.4

切記,run的時候,指定鏡像是你下載的鏡像   jenkins/jenkins:2.222.4

這裏的 -v /home/jenkins:/var/jenkins_home 是我的掛載點,持久化後面配置用的

windows的話,記得要開一下共享設置     例如  -v d:\jenkins\var:/var

然後就jenkins就開始跑了

這時候 瀏覽器打開,就應該可以看到Jenkins在初始化了

http://localhost:8081/

等到了密碼輸入界面,

先登錄到docker裏

docker exec -it -u root jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword

就能看到密碼了

然後後面都是在網頁上對jenkins進行配置了

此處就不多介紹了


開始安裝andorid sdk  通過 sdkmanager

坑2

現在都不步入安卓10的時代了,很多文章還在用老的方式搞sdk

現在用一下sdkmanager 來,這裏面遇到不少坑,找了半天才發現有個黑操作,竟然可以

到 https://developer.android.com/studio 下載 

Command line tools only 版本

直接複製下載地址

通過docker終端,操作

題外話:

如果按上面的做,不會遇到權限不足的情況,如果權限不足,記得登陸時加這個語句 

-u root

docker exec -it -u root jenkins /bin/bash

然後在根目錄創建文件夾 /android/sdk

mkdir /andorid/sdk
cd /andorid/sdk
下載 命令行的sdk
wget https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip

這時候網上很多文章都是這麼操作的

unzip ############.zip    //############## 是你下載的壓縮包的名字
cd /tools/bin/            //進入解壓後的tools的bin目錄

如果你運行  

 sh sdkmanager list  

沒有報錯,恭喜你,你很順利

 

但,如果你報錯了,類似這樣的

Warning: Could not create settings
java.lang.IllegalArgumentException
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.(SdkManagerCliSettings.
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.
    at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.

你試試我的這個方法,很黑的方法 直接改目錄名

次方法我也是搜了好半天找到的一個,哈哈,確實很邪 感謝這位大哥

就是現在tools的文件夾改名未latest,並且把在外面再套一個文件夾,名字叫cmdline-tools

目錄結構如下

/andorid/sdk/cmdline-tools/lastest

改成這樣

mkdir /android/sdk/cmdline-tools/
mv /android/sdk/tools /android/sdk/cmdline-tools/
mv /android/sdk/cmdline-tools/tools /android/sdk/cmdline-tools/latest

先創建在移動,基本上這波操作下來就好了

然後你再試試

 sh sdkmanager list  

有沒有神奇的效果,如果有的話,基本上就萬事大吉了

如果沒有,出門左轉,找其他辦法吧

哈哈

然後安裝sdk相關工具

https://developer.android.com/studio/command-line/sdkmanager

根據自己項目需求下載對應版本

sh sdkmanager "platform-tools" "platforms;android-28"

剩下就萬事ok了

 


如果需要docker裏該該文件

裝個vim,萬事輕鬆很多

apt-get update
apt-get install vim

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章