[Android]Gradleファイルで環境ごとに処理を切り分け(APK名・Keystore設定など)
はじめに
Gradleの設定ファイルを修正することでdebugモード、releaseモードで処理を切り分け設定を有効化できるので、設定しておきます。
1.keystore設置
keystoreもdebugとreleaseでアップしておくとビルドが楽なのでいいと思います。
ただ、release用はgitなどでサーバプッシュはしないほうがセキュリティ的に良いと思います。
keystoreというディレクトリ名にしてプロジェクト直下に作成し、中にkeystoreファイルをそれぞれ設置してください。
2.Gradleファイルについて
設定プロパティなど詳細は公式を参照ください
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Types
Gradleファイルのベースとなるテンプレートをアップしておきます。適時変えて使ってみてください。
実行時はAndroidStudioよりBuild VariantからdevelopDebug,stagingDebug,productDebug,developRelease,stagingRelease,productReleaseより選択して実行してください。
実行したできたapkは「app\build\outputs\apk」に作成されます。
実行した場合のapkファイル名のフォーマットは以下になります
[パッケージ名簡潔]_r[バージョン名]-[環境名]-[モード名(release or debug)]_r[バージョンコード]_[実行日付].apk」
app-[環境名]-[モード名(release or debug)]-unaligned.apk」になります。
デフォルトインポートについて
よく使うjava系(java.lang、java.io、java.math、java.net、java.util)はすでにimportされているので、Dateなどその場で使えます。
足りないものはimportで「import java.text.SimpleDateFormat」のように追加できます。
詳細は以下より確認ください。
3.2.1. Default imports
All these packages and classes are imported by default, i.e. you do not have to use an explicit import statement to use them:java.io.*
java.lang.*
java.math.BigDecimal
java.math.BigInteger
java.net.*
java.util.*
groovy.lang.*
groovy.util.*
http://docs.groovy-lang.org/latest/html/documentation/index.html#_differences_with_java
productFlavors
productFlavorsは実行環境毎に処理を切り分けるために使用できます。今回は環境ごとにファイル名に環境を付加する設定です。
3.その他ファイルの環境別切り分け(develop,staging,product)
productFlavorsで実行環境の処理を切り分けた場合、その環境名と同名のディレクトリを作成すると環境ごとに読み込みディレクトリを自動的に変えてくれます。
今回はstring.xmlのアプリ名となる
ディレクトリは以下のようにします
│ └─src │ ├─develop │ │ └─res │ │ └─values │ │ └─strings.xml │ ├─main │ │ ├─java │ │ │ └─hogehoge │ │ └─res │ │ ├─drawable │ │ ├─drawable-v21 │ │ ├─layout │ │ ├─menu │ │ ├─mipmap-hdpi │ │ ├─mipmap-mdpi │ │ ├─mipmap-xhdpi │ │ ├─mipmap-xxhdpi │ │ ├─mipmap-xxxhdpi │ │ ├─values │ │ └─strings.xml │ │ ├─values-v21 │ │ └─values-w820dp │ ├─product │ │ └─res │ │ └─values │ │ └─strings.xml │ ├─staging │ │ └─res │ │ └─values │ │ └─strings.xml
Build Variantから環境ごとにビルドして実行すると確認できます。
一式をテンプレートプロジェクトとしてgithubにアップしました
https://github.com/y-matsumoto/template-project
その他おすすめの備忘録
- [Android]GradleコマンドでAndroidプロジェクト(Gradle環境)を実行
- [Android]Androidビルドエラー「Could not find com.android.tools.build:gradle:3.0.0-alpha3.」
- [Android]Androidバージョンと対応するAPIレベル/コードネーム一覧
- [Jenkins][Windows]java.io.IOException: Cannot run program “sh”エラー
- [Android]使用していない画像ファイルをまとめて削除する(Eclipse版)
- GooglePlayマーケットリリースのカメラアプリの12/25統計情報
- [Android]logcatコマンドの出力する値をアプリから取得する方法
- [Rails]i18n(ローカライズ)対応で日本語化する
- [CentOS][Ruby][Rails]最新・安定版のRuby2.2.1(rbenv) / Rails4.1.1環境を構築する
- [AndroidStudio]Androidエンジニア必須のマテリアルデザインを簡単に実装できるMaterialDesignLibraryの導入
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年12月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ