Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
30
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@tkc_tsuchiya

Androidコマンドラインビルドまとめ

はじめに

GITにプッシュしたら自動でビルドしたいよねってことでまずはシェル化しました

環境

OS:
CentOS 7.1
PP:
- jdk1.8.0_45
- AndroidSDK
※下記はx86系のものもいれた
- libstdc++.i686
- libstdc++-devel.i686
- zlib.i686
- zlib-devel.i686

AndroidSDKの準備

パス設定

export ANDROID_HOME=/usr/local/android-sdk

更新

${ANDROID_HOME}/tools/android update sdk --no-ui

※ただしbuild-toolsは最新が入るので指定したい場合は下記のようにフィルターを追加
${ANDROID_HOME}/tools/android update sdk --no-ui --all --filter build-tools-22.0.1

githubからのエクスポート

githubの画面上にある"Download ZIP"のURLをcurlコマンドを利用してダウンロード
curl -s -f -L -u '{アカウント}/token:{アクセストークン}' {ダウンロードURL} -o {出力ファイル名}
※アクセストークンは「 https://github.com/settings/tokens 」で生成

ビルド

AndroidStudioで作成したプロジェクトルートにgradlewが存在するのでこれを利用

デバッグビルド
gradlew assembleDebug
リリースビルド
gradlew assembleRelease
両方
gradlew assemble

署名

jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore {キーファイル} -keypass {キーパスワード} -storepass {ストアパスワード} {APK保存先} {キーエイリアス}

zipalign

zipalign -v 4 {署名前のAPKパス} {署名後のAPK保存先}

tips

windowsサーバへのマウント

cat /etc/fstab
//{Windowsパス} /{マウントパス} cifs user={ログインユーザ},password={パスワード},defaults 0 0

ソース内のテキストの置換

replace.sh
# 置換対象のパラメータ
RPARAM[0]='{ファイルパス}|s#{置換前のテキスト}#{置換後のテキスト}#g'
RPARAM[1]='{ファイルパス}|s#{置換前のテキスト}#{置換後のテキスト}#g'
RPARAM[2]='{ファイルパス}|s#{置換前のテキスト}#{置換後のテキスト}#g'

# パラメータを展開
for (( I = 0; I < ${#RPARAM[@]}; ++I ))
do
  # パイプ区切りのパラメータを分解
  file=`echo ${RPARAM[$I]} | cut -d\| -f1`
  regexp=`echo ${RPARAM[$I]} | cut -d\| -f2`
  # sedで置換
  sed -i -e ${regexp} ${_PJT_DIR}/${file}
done

まとめ

上記を順番してシェルに落とし込んでます
1.★GITHUBからのエクスポート
2.ZIP解凍
 (ソース置換)
3.★コンパイル
4.APKを共有サーバにコピー
5.APK以外の一時ファイル削除

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
30
Help us understand the problem. What are the problem?