運用保守担当者であれば誰もがこの考えを持っているはずですが、自動化できるものは手動で行うのは絶対にやめましょう、一度で済む作業を複数回に分けて行うのは絶対にやめましょう。法について考える怠惰が私たちの進歩の源です。
これは私たちの Android 開発ではありません。最近テスターがいつも apk パッケージを求めてくると私に文句を言いに来てください。忙しくて途中で立ち止まると、コードを書く感覚がなくなることがあります。開発や執筆にもインスピレーションが必要なのかもしれません
運用保守の観点からはプログラマは全能であり、プログラマの観点からは運用保守も全能である。そうは言っても、この問題を解決するためにできる限りのことをしましょう
Jenkins では、テストをコンパイルおよびビルドする権限を与え、テストを必要に応じてパッケージ化できます。
プロジェクトを正式に開始する前に、まだ一言文句を言わなければなりません。Baidu で多くのことを見ることができますが (Jenkins が Android プロジェクトを構築)、でも本当に言いたいのは、一体何なのか、本当に終わらせる方法がありませんたった一つの記事を読むだけでそれがわかります。そんな時はBaiduで試してみてはいかがでしょうか
幸いなことに、私のたゆまぬ努力の結果、それがついに実現しました、見てみましょう
Android のコンパイルに必要な gradle と android_sdk をインストールして構成する
まず、公式 Web サイトにアクセスして、必要な Gradle をダウンロードします。バージョンは、現在開発に使用されているバージョンと同じである必要があります。
公式ダウンロードリンク: http://services.gradle.org/distributions/
現在、Gradle 4.6 を使用しています。例としてこのバージョンを使用します。
wget http://downloads.gradle.org/distributions/gradle-4.6-all.zip
unzip gradle-4.6-all.zip
mv gradle-4.6-all /usr/local/gradle
vim /etc/profile
#在最后添加下面这两句
export GRADLE_HOME=/usr/local/gradle
export PATH=$PATH:$GRADLE_HOME/bin
source /etc/profile
gradle -v
android_sdkを構成する
信頼できるダウンロード アドレス http://tools.android-studio.org/index.php/sdk
wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar -xvzf android-sdk_r24.4.1-linux.tgz
mv android-sdk-linux /usr/local/android-sdk
vim /etc/profile
#在最后添加下面这两句
export ANDROID_HOME=/usr/local/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools
source /etc/profile
次に、Jenkins に移動して一連の作業を行います。まず、一連のプラグインをインストールします。
写真ではわかりづらいかもしれませんが、詳細は以下の通りです
別の AnsiColor プラグインをインストールすることをお勧めします
プラグインがインストールされたら、Jenkins に移動して、サーバーにインストールされている Gradle を構成します。
システムにインストールされている Gradle を参照し、設定し、保存して終了するだけです
次に、android_sdkの環境変数を設定します。
新しいプロジェクトを作成する
ソースコードアドレスを設定する
保存して終了した後、プロジェクトの構築を開始し、構築する適切なパラメータを選択します。
残念ながら、コンパイルおよびパッケージ化中にエラーが報告されました。コンソール出力を開いてエラー メッセージを確認できます。
エラーレポートを見ると、一部の SDK バージョンが欠落していることが示されています (どのバージョンが必要かについては、事前に開発者に問い合わせることができます (このスクリーンショットを開発者に見せれば、開発者は知っています)。インストール後に、このエラーレポートは避けてください)
#列出所有的 sdk 版本及其 tag
android list sdk --all
#我们缺少的是 android-28 和 build-tools;28.0.2 ,选择其对应的 tag 进行安装
android update sdk -u --all --filter 8,6 #都选择 y
将来的にはエラーが発生する可能性がありますが、私たちの戦略は、エラーを確認して不足しているものを修正することです。
私のフォローアップではまだエラーがあり、 android-26 とandroid-27 がまだ見つかりません。 それを補うために上記のコマンドを繰り返してください。
コンパイルが完了し、エラーが報告されなくなったら、ワークスペースに移動して、コンパイルされた APK パッケージを表示します (パスがわからない場合は、開発者に問い合わせることができます)
次に、この apk パッケージをリンクを使用してダウンロードできるかどうかを検討し、ダウンロード可能な QR コードを生成する必要があります。
ここでは、nginx を使用して、利用可能な接続ダウンロードを実装します。apk パッケージを、nginx で構成された対応するディレクトリに移動するだけです。
nginx 構成ファイルを変更し、次の 2 つのサーバーを追加します。
server {
listen 60080;
server_name download.apk.com; #没有使用域名,只是为了好看区分,懂 nginx 的应该知道
charset utf-8;
location / {
root /opt/android_apk/apk;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
server {
listen 60081;
server_name download.img.com;
charset utf-8;
location / {
root /opt/android_apk/img_er;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
APKのQRコードを生成する
ネットで見た情報は基本的に第三者から拝借して完成したものですが、これを完結させるための小さなツールを作れないかと考えていたところ、汎用性の高いPythonを思いつきました。作ってみよう、一緒にやってみましょう。
システムには python2.7 が付属しているので、python2.7 を使用して実行しました。
まず必要な 2 つのライブラリを pip インストールします
pip install pillow
pip install qrcode
vim get_img.py
#!/usr/bin/python
# encoding=utf8
import qrcode
import sys
def main(url,imgpath):
qr = qrcode.QRCode(
version=5,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4
)
#参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码,version 每增加 1,生成的二维码就会添加 4 尺寸,例如 version 是 2,则生成 25 * 25 的二维码,这里我们需要适当的调整大小
qr.add_data(url)
try:
qr.make(fit=True)
img = qr.make_image()
img.save(imgpath)
except:
print "输入的保存二维码的路径有问题,情检查"
if __name__ == '__main__':
if len(sys.argv) == 3:
main(sys.argv[1],sys.argv[2])
else:
print "输入的参数个数不对,请输入正确的 url 链接 和 二维码保存的地址"
QRコードを作成するためのPythonスクリプトが完成しました
図に示すように、新しく構築されたシェル スクリプトを追加します (これを使用する場合は、適切な変更を行う必要があります)。
最後に、図に示すように、 ビルド後の操作を追加します。
ここで画像のサイズを適切に調整できます
<img 幅= '300px' 高さ= '300px' src = "http://ip:800/customer_${BUILD_NUMBER}.jpg"
保存して終了し、プロジェクトの構築をやり直します。問題ないと喜んでいたとき、また顔を平手打ちされました。イメージした QR コードが写真の場所に表示されず、非常に残念でした。恥ずかしい。
ここで少し時間がかかりましたが、最終的に解決策を見つけました。変更する必要がある小さな構成があることがわかりました。
システム管理 -> グローバル セキュリティ構成
しかし、ここでの変更後、別の小さな問題が発生しました。図に示すように、グローバルの説明が変更され、説明が別の行に表示されなくなりました。
ただし、HTML を少し知っている学生にとっては、これは小さなケースです。操作を参照してください。
最後に、プロジェクトの最終レンダリングを見てみましょう。完璧です。!!!
プロセス中に問題が発生した場合は、時間内にブロガーに連絡できます