Android お手軽なビルド時間の短縮メモ

何回もググってるのでメモ.
ファイル別コピペ用.

build.gradle

mavenCentral() でなく jcenter() を使う.
[File] - [Project Structure] - [Project]
Project_Structure

buildscript {
  repositories {
    jcenter()
  }
...
allprojects {
  repositories {
    jcenter()
  }
}

gradle.properties

メモリ調整など.
[Preferences] - [Build] - [Compiler]
Preferences_and_gradle-wrapper_properties

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true

gradle-wrapper.properties

Gradle は最新版を使う.
[File] - [Project Structure] - [Project]
Project_Structure

#Mon Dec 28 10:00:20 PST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

その他

- ライブラリをオフライン
- profile でチェック
- assemble exclude

随時更新していこう.

Speeding up Gradle builds


オプションに「--profile」をつけて Run時間が1分から2秒になった話

開発中に何十回, 何百回と端末またはエミュレータで動かしてテストしていると思います.

回数が多い分, 数十秒でも大きく生産性に影響します.

Terminal からの選択しながらのビルドや Gradle コンソールで詳細を確認したりする方法は, まあ, あるっちゃああるけどもいちいちそんなの調べてやるのもなんだかめんどくさかったりして.

「ビルド時間の短縮」というようなキーワードでググればまあそれなりに似たような結果がみつかる.

Android お手軽なビルド時間の短縮メモ

今回, なんとなくいちいちHTMLで結果が出力されるという

「コマンドラインオプションに --profile をつける」

というのをなんとなくやってみたら, Runから実行までの時間が 1分から2秒 になったのでまあ書いてみるが.

Preferences

とするだけ.

「Run」するたびにHTMLで, build/reports/profile/ 以下 にそれぞれにかかった時間をまとめたHTMLファイルが出力される.

AnalyticsApplication_java_-_Android_Studio_2_0_Beta_6

閲覧するには, Run後出力されたHTMLから右クリックでブラウザを起動するといい.

Android_Studio_2_0_Beta_6

こんなかんじで出力された.

Profile_report

Profile_report

50秒のうち45秒が「Crashlystis」の処理に使われている.

デバッグ時には, このような処理は当然必要ない.

しかも謎なのは Fabric は使っているが Crashlytics は使っていないのだが.

この処理を殺す.

-_Android_Studio_2_0_Beta_6

その後結果.

Profile_report

Profile_report

いろいろ謎なことは多いが, オプション「--profile」をつけるだけで一回の「ビルド→実行」時間が数十倍に短縮された.

やみくもにググるよりか, いわゆる「ログ」のような「profile」を見ながらググるほうが効率的.

なぜなら, GUIダイアログから「--profile」と入力しておくだけだもの.


Stackoverflow の短い公式URLでコピペ用ブックマークレットを作る

例えば, この非常に有益なこのページ.

Difference between px, dp, dip and sp on Android? - Stack Overflow

コードの中に参照先として貼り付けていましたが長いのでどうにかならないものかな,と.

long_url

フツーにブラウザのURLバーから取得できるURLはこのような以下のような形式.

Question
http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android

Answer
http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android/2025541#2025541

調べてみると, URLの書式はたくさん存在していて以下のURLは すべて同じ Question「2025282」の Answer「2025541」を参照している.

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android#answer-2025541

http://stackoverflow.com/questions/2025282/2025541#2025541

http://stackoverflow.com/questions/2025282/#2025541

http://stackoverflow.com/questions/2025541

http://stackoverflow.com/q/2025282/#2025541

http://stackoverflow.com/a/2025282/#2025541

Google ShortURL や TinyUrl などサービスを使わずに, ページ内「share」のリンクから取得できる形式の公式の短縮URLを利用したい.

Difference_between_px__dp__dip_and_sp_on_Android__-_Stack_Overflow

ログインしていない場合は,

Question:
http://stackoverflow.com/q/2025282

Answer:
http://stackoverflow.com/a/2025541

この場合,
「2025282」は, Question投稿のID.
「2025541」は, Answer投稿のID.

ログインしている場合だと,

Question:
http://stackoverflow.com/q/2025282/000000

Answer:
http://stackoverflow.com/a/2025541/000000

この場合,「000000」はログインしているユーザのID.

ということで, ログインしていないときの公式のshareリンククリックからのダイアログに表示するURL形式に合わせてURLバーのURL文字列から公式の短いURLに変換した文字列に「タイトル」を加えたものをすばやくコピーできるブックマークレットを作る.

[Title]
http://stackoverflow.com/q/[question_id]

[Title]
http://stackoverflow.com/a/[answer_id]

Question へのリンクであれば,

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android

Difference between px, dp, dip and sp on Android?
http://stackoverflow.com/q/2025282

Answer へのリンクであれば,

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android/2025541#2025541

Difference between px, dp, dip and sp on Android?
http://stackoverflow.com/a/2025541

で,

こんなブックマークレットに.

javascript:
var pathinfo = window.location.pathname.split('/');
window.prompt('', document.title + '\n' + 
  location.protocol + '//'+ location.host +
    (pathinfo[4] ? '/a/' + pathinfo[4] : '/q/' + pathinfo[2]));
void(0);

結果.

Difference_between_px__dp__dip_and_sp_on_Android__-_Stack_Overflow

ここで, コピーして貼る.

short_url

と短く収まるようになりました.

ログイン中でもユーザIDを含めずにタイトルを付けてかんたんにコピペできます.

ちなみに,

http://s.tk/so

http://stackoverflow.com/#

What shortened URLs are available through s.tk? - Meta Stack Exchange

とホスト部分も短縮できたりするらしいがまあいいか.

👉 まとも検索 検索オプション追加 のブックマークレット