SlideShare a Scribd company logo
Windows環境での
効率的なアプリ開発手法
DroidKaigi 2016
開発したいけど家に
Windows しかない
ぐぐったらQiitaの記載
は Mac 環境ばかり
Macなんてデザイ
ナーのPCでしょ
会社の開発マシンが
Windows指定
W i n d o w s あ る あ る
3
と あ る Q i i t a の 超 電 磁 砲
http://qiita.com/konifar/items/6fac0eb1e6b0dc9dfb23
4
M A C ば か り の W i n d o w s 発 表 会
https://twitter.com/AustenAllred/status/558029756277743616/photo/1
5
W i n d o w s で 大 丈 夫 な の ?
安心してください。開発できますよ。
6
A n d r o i d S D K / A n d r o i d S t u d i o
http://developer.android.com/intl/ja/sdk/index.html
J a v a
7
J a v a 6 , J a v a 7 o r J a v a 8
8
えっ、私の??低すぎ!?
Java6
ここまではAndroidでも
イケる
Java7
Open JDK採用で Java8 採用
も加速か!?
Java8
9
正しく設定すれば大丈夫!
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
android.compileOptions on build.gradle
http://gfx.hatenablog.com/entry/2016/01/04/231504
http://gfx.hatenablog.com/entry/2016/01/10/100933
ToolChain は Java7 or Java8 で
環 境 変 数 f o r J a v a
10
• JAVAのインストールフォルダを指定
• e.g. C:¥Program Files¥Java¥jdk1.7.0_79¥
• e.g. C:¥Program Files¥Java¥jdk1.8.0_60¥
JAVA_HOME1
• Retrolambda を利用する場合で JAVA_HOMEがJAVA7の場合に必要
• https://github.com/evant/gradle-retrolambda
• e.g. C:¥Program Files¥Java¥jdk1.8.0_60¥
JAVA8_HOME2
• %USERPROFILE%¥.{FOLDER_NAME}¥studio.exe.vmoptions
and/or %USERPROFILE%¥.{FOLDER_NAME}¥studio64.exe.vmoptions
• %USERPROFILE%¥.{FOLDER_NAME}¥idea.properties
For Android Studio3
環 境 変 数 設 定 方 法
11
Win Key + Break key が便利 変数名と変数値を設定
環 境 変 数 f o r A n d r o i d S t u d i o
12
vmoptions を記載するファイルパス。メモリ割当デフォルトは750MB。 -Xmx2048m の行追加で変更可
idea.vmoptions はIntelliJ インストール時のクラッシュを避けるために無視されます。
studio.exe.vmoptions or studio64.exe.vmoptions を使いましょう
STUDIO_VM_OPTIONS4
idea.properties のファイルパス。プラグイン、ログ、エラー通知設定などを記載。
For example, Android Studio 2.0 ships with experimental improved bidirectional text support (issue 182739). To enable this support, create a
file named idea.properties with just this content:
editor.new.rendering=true
STUDIO_PROPERTIES5
Android Studio を動作させるための JDK
例えば、Android app のビルドを Java7 JDK で強制されているが Checkstyle などの Java8 でしか動作し
ないPlugin を動かす場合などに有効
STUDIO_JDK6
13
S D K M a n a g e r
S D K M a n a g e r
イントラネット内で開発する場合に必要
Proxy 設定
Tools -> Options
 Enable Preview Tools
Preview Tools
次のページで紹介
Officecial/User Defined Sites
O f f i c i a l A d d - o n S i t e s
モジュールごとに定義サイトを提供
必要ないモジュールは Disable可能
Disableすると更新確認を短縮できる
U s e r D e f i n e d S i t e s
https://s3.amazonaws.com/android-sdk-
manager/redist/addon.xml
Amazon SDK
http://developer.samsung.com/sdk-
manager/repository/Samsung-SDK.xml
Samsung SDK
http://developer.lge.com/sdk/android/rep
ository.xml
LG SDK
17
U s e r D e f i n e d S i t e s
http¥://gsbina.com/repository/addon.xml
http://qiita.com/bina1204/items/c6142a9e13f70a73dad7
Android SDK Manager の Add-on を登録する方法
W i n d o w s 開 発 の 難 敵
18
19
W i n d o w s 開 発 の 難 敵
VID = Vendor ID, PID = Product ID
;Google Nexus 7
%SingleBootLoaderInterface% = USB_Install, USB¥VID_18D1&PID_4E40
%CompositeAdbInterface% = USB_Install, USB¥VID_18D1&PID_4E42&MI_01
%CompositeAdbInterface% = USB_Install, USB¥VID_18D1&PID_4E44&MI_01
android_winusb.inf
O E M D r i v e r
20
OEM Drivers
http://developer.android.com/intl/ja/tools/extras/oem-
usb.html#Drivers
Manufacture USB Driver
(e.g. Xperia)
http://developer.sonymobile.com/downloads/drivers/
V e n d o r I D f o r U S B D r i v e r
21
Company USB Vendor ID
Acer 0502
ASUS 0b05
Dell 413c
Foxconn 0489
Fujitsu 04c5
Fujitsu Toshiba 04c5
Garmin-Asus 091e
Google 18d1
Haier 201E
Hisense 109b
HTC 0bb4
Huawei 12d1
Intel 8087
K-Touch 24e3
Company USB Vendor ID
KT Tech 2116
Kyocera 0482
Lenovo 17ef
LG 1004
Motorola 22b8
MTK 0e8d
NEC 0409
Nook 2080
Nvidia 0955
OTGV 2257
Pantech 10a9
Pegatron 1d4d
Philips 0471
PMC-Sierra 04da
http://developer.android.com/intl/ja/tools/device.html#setting-up
Company USB Vendor ID
Qualcomm 05c6
SK Telesys 1f53
Samsung 04e8
Sharp 04dd
Sony 054c
Sony Ericsson 0fce
Sony Mobile
Communicati
ons
0fce
Teleepoch 2340
Toshiba 0930
ZTE 19d2
V I D , P I D 確 認 方 法
22
Google USB DriverでAndroid端末をWindowsに認識させる
(http://note.chiebukuro.yahoo.co.jp/detail/n128056)
不明なデバイスと認識 プロパティで確認
野 良 A n d r o i d 端 末
23
Android 4.0(ICS)
VID = 0x04b8
http://www.epson.jp/products/moverio
/bt200/
Epson Moverio BT-200
Android 4.4(KitKat)
VID = 0x2207
http://telepathywear.com/product/
Telepathy Jumper
24
C:¥Users¥<user name>¥.android¥adb_usb.ini <SDK>¥add-ons¥ にフォルダ作成
フォルダの中に manifest.ini ファイルを作成 SDK Manager から adb usb が認識
[Android] adb_usb.ini の正しい書き方
(http://tande.jp/lab/2012/02/1649)
a d b - u s b
E m u l a t o r
25
x 8 6 e m u l a t o r
26
 SDK Manager でダウンロード
 <SDK>¥extras¥intel¥Hardware_Accelerate
d_Execution_Manager¥
 インストーラー
 intelhaxm-android.exe
 silent_install.bat
Install HAXM
機種によっては、BIOSで VT/NX Support を
ON にしなければならない場合があります。
haxm_check.exe で確認可能
G e n y m o t i o n
27
• 個人利用のみ無料
• 商用利用は有料
• 有料機能
• API Control
• バッテリー状態
• GPS状態
• ネットワーク状態
https://www.genymotion.com/
高速なEmulator
• 余計な手間が発生
• ディスク容量も増加
https://www.virtualbox.org/wiki/Downloads
要 VirtualBox
リ バ ー ス エ ン ジ ニ ア リ ン グ
ご 利 用 は 計 画 的 に
28
a p k t o o l s : R e v e r s e E n g i n e e r i n g T o o l
29
• Windows 向けに apktool.bat も提供
• 実行PATHがあるフォルダに
apktoolls.jar, apktool.bat を移動
• 同じフォルダに apktool-decode.bat
apktool.jar
• apktool-decode.bat
rem @echo off
apktool.bat d %1 %2 %3 %4 %5 %6 %7 %8 %9
インストール指示が雑すぎる・・・
S e n d t o ( 送 る ) 活 用 方 法
30
• C:¥"Users¥Your User
Name"¥AppData¥Roaming¥Microsoft¥Wind
ows¥SendTo
Default Path
• SendTo フォルダの中に 「SendTo - ショートカッ
ト」を入れる
「SendTo - ショートカット」作成
• apktool-decode.bat のショートカットを作って、
SendTo へのショートカットで SendTo にいれる
• 任意のフォルダから apk ファイルを apktool-
decode.bat で実行
どこからでもSendToに増やせる
シ ン ボ リ ッ ク リ ン ク 活 用
31
 Link Creation Shell Extension
 https://github.com/kobake/lnhdr
リンク作成シェル拡張
 NTFSの「リパース・ポイント(ファイル・パスの解釈を独自に行う機
能)」を使って実装されたリンク機能
 dir で見ると <JUNCTION> と表示
ジャンクション
 作成
 mklink /j ~
 削除
 rmdir ~
Command Line Interface
32
a p k t o o l s シ ョ ー ト カ ッ ト
C l a s s y S h a r k
33
Open APK, Export all generated data to a text file, Export generated
file from a specific class to a text file, Open ClassyShark and display
a specific class in the GUI, Inspect APK
Dump all strings (combined classes.dex string tables) from your APK
Android executables browser
https://github.com/google/android-classyshark
This is not an official Google product
rem @echo off
java -jar "%~dp0¥ClassyShark.jar" -open %1
ClassyShark-open.bat
D e c o m p i l e r a p k - > d e x - > j a r - > j a v a
34
http://code.google.com/p/dex2jar/
dex2jar
jd-gui-windows-1.4.0
jd-gui.exe
https://github.com/skylot/jadx
Dex to Java decompiler
N e x u s R o o t T o o l k i t
35
Unlocking
Rooting
http://www.wugfresh.com/nrt/
Relocking and Unrooting
G i t
36
Git for Windows
https://git-scm.com/download/win
Cygwin
https://www.cygwin.com/
GitHub Desktop
https://desktop.github.com/
SourceTree
https://www.atlassian.com/software
/sourcetree/overview/
TortoiseGit
https://tortoisegit.org/
GitKraken
http://www.gitkraken.com/
http://blog.axosoft.com/wp-
content/uploads/2015/10/1-main-
view.png
g i t o n W i n d o w s P l a t f o r m
注 意 点
38
LFで統一することが多い?
いつのまにか CRLF になっていたり
CRLF前提のツール・エディタ多数・・・
改行コード1
Windows 上は Shift JIS が多い
ソースコードは UTF-8 が多い?
Android Studio の Editor の右下で確認可能
文字コード2
いつのまにか 644 から 755 になっていたりして git status が真っ赤に。。。
chmod 644 foo.txt
git/config の filemode で調整
ファイルアクセス権(File Permissions)3
T i p s
小 さ な 幸 せ を
39
A n d r o i d S t u d i o S t a r t P a g e
41
f i n i s h e d w i t h n o n - z e r o e x i t v a l u e 1
メモリが足りない場合に頻発
タスクマネージャからメモリ使っているプロセスを終了
$ ./gradlew assembleDebug
T i p s
42
 git の差分比較・マージを WinMerge で行う
 http://qiita.com/kobake@github/items/fb317b4fdacad718a4b2
WinMerge でグラフィカルに difff 確認
vysor
https://chrome.google.com/webstore/detail/vysor-
beta/gidgenkbbabolejbgbpnhbimgjbffefm
リアルタイム Android Screen Monitor
T i p s
43
 非公式ツール
 MS 社員が開発しているらしい
 https://technet.microsoft.com/en-us/sysinternals/bb897578.aspx
Caps Lock を Ctrl に上書き
 Windowsの操作を emacs キーバインドで操作できる
 http://www.cam.hi-ho.ne.jp/oishi/indexen.html
Xkeymacs
ま と め
44
Windows でも十分に開発できる
便利なツールと組み合わせて開発効率を向上
Windowsアプリ、Windows Phoneアプリも開発できる
ご 静 聴 あ り が と う ご ざ い ま し た
45

More Related Content

What's hot

ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
 
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
Takao Sumitomo
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
Masahiro Hidaka
 
Android 6.0 Marshmallow App Permissions 実践編
Android 6.0 Marshmallow App Permissions 実践編Android 6.0 Marshmallow App Permissions 実践編
Android 6.0 Marshmallow App Permissions 実践編
Kenichi Kambara
 
Android lint-srp-practice
Android lint-srp-practiceAndroid lint-srp-practice
Android lint-srp-practice
cch-robo
 
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips
Masataka Kono
 
What is tested by pre-launch (security) reports?
What is tested by pre-launch (security) reports?What is tested by pre-launch (security) reports?
What is tested by pre-launch (security) reports?
ak_shio_555
 
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Keiji Ariyama
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
Keiji Ariyama
 
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
leverages_event
 
あるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクルあるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクル
Kentaro Iizuka
 
DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法
DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法
DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法
Takaki Hoshikawa
 
Android Studio開発講座
Android Studio開発講座Android Studio開発講座
Android Studio開発講座
Keiji Ariyama
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
 
Android6.0 RuntimePermissionの実装と注意点
 Android6.0 RuntimePermissionの実装と注意点 Android6.0 RuntimePermissionの実装と注意点
Android6.0 RuntimePermissionの実装と注意点
Katsuki Nakatani
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android Studio
Soichiro Kashima
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイント
Shinobu Okano
 
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグEclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
l_b__
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門
OESF Education
 

What's hot (20)

ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
 
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
 
Android 6.0 Marshmallow App Permissions 実践編
Android 6.0 Marshmallow App Permissions 実践編Android 6.0 Marshmallow App Permissions 実践編
Android 6.0 Marshmallow App Permissions 実践編
 
Android lint-srp-practice
Android lint-srp-practiceAndroid lint-srp-practice
Android lint-srp-practice
 
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips
 
What is tested by pre-launch (security) reports?
What is tested by pre-launch (security) reports?What is tested by pre-launch (security) reports?
What is tested by pre-launch (security) reports?
 
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
 
あるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクルあるゲームアプリケーションの構成とアップデートサイクル
あるゲームアプリケーションの構成とアップデートサイクル
 
DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法
DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法
DroidKaigi 2019 シームレスに遷移可能な画面を他のアプリに提供する方法
 
Android Studio開発講座
Android Studio開発講座Android Studio開発講座
Android Studio開発講座
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
 
Android6.0 RuntimePermissionの実装と注意点
 Android6.0 RuntimePermissionの実装と注意点 Android6.0 RuntimePermissionの実装と注意点
Android6.0 RuntimePermissionの実装と注意点
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android Studio
 
はじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイントはじめる前に知っておきたいAndroidアプリ開発のポイント
はじめる前に知っておきたいAndroidアプリ開発のポイント
 
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグEclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門
 

Similar to DroidKaigi2016 windows環境での効率的なアプリ開発手法

Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADK
Masahiro Hidaka
 
Andoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かすAndoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かす
shobomaru
 
普段の開発を少しだけ便利にする3つのレシピ
普段の開発を少しだけ便利にする3つのレシピ普段の開発を少しだけ便利にする3つのレシピ
普段の開発を少しだけ便利にする3つのレシピ
Takuma Maruyama
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
Masahiro Hidaka
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
 
第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料
magoroku Yamamoto
 
Pf部2011年10月勉強会.1@androidsola
Pf部2011年10月勉強会.1@androidsolaPf部2011年10月勉強会.1@androidsola
Pf部2011年10月勉強会.1@androidsola
android sola
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
HommasSlide
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
Yukiya Hayashi
 
Android01_開発環境導入
Android01_開発環境導入Android01_開発環境導入
Android01_開発環境導入
XMLProJ2014
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
 
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
Tomoaki Shimizu
 
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Mr. Vengineer
 
冬だからAndroid再入門
冬だからAndroid再入門冬だからAndroid再入門
冬だからAndroid再入門
Katsumi Honda
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
Masahito Zembutsu
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
Tsuyoshi Yamamoto
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 
Introduce build in shrinker
Introduce build in shrinkerIntroduce build in shrinker
Introduce build in shrinker
Daisuke Fuji
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
Kazuhiro Hara
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
 

Similar to DroidKaigi2016 windows環境での効率的なアプリ開発手法 (20)

Google I/O 2011 HowToADK
Google I/O 2011 HowToADKGoogle I/O 2011 HowToADK
Google I/O 2011 HowToADK
 
Andoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かすAndoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かす
 
普段の開発を少しだけ便利にする3つのレシピ
普段の開発を少しだけ便利にする3つのレシピ普段の開発を少しだけ便利にする3つのレシピ
普段の開発を少しだけ便利にする3つのレシピ
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料
 
Pf部2011年10月勉強会.1@androidsola
Pf部2011年10月勉強会.1@androidsolaPf部2011年10月勉強会.1@androidsola
Pf部2011年10月勉強会.1@androidsola
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
 
Introduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing DockerfilesIntroduce that Best practices for writing Dockerfiles
Introduce that Best practices for writing Dockerfiles
 
Android01_開発環境導入
Android01_開発環境導入Android01_開発環境導入
Android01_開発環境導入
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
 
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編Xilinx SDSoC(2016.2)解体新書ソフトウェア編
Xilinx SDSoC(2016.2)解体新書ソフトウェア編
 
冬だからAndroid再入門
冬だからAndroid再入門冬だからAndroid再入門
冬だからAndroid再入門
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
Introduce build in shrinker
Introduce build in shrinkerIntroduce build in shrinker
Introduce build in shrinker
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 

More from tkawashita

DevRelMeetup Tokyo #36 技術書典5 参加報告
DevRelMeetup Tokyo #36 技術書典5 参加報告DevRelMeetup Tokyo #36 技術書典5 参加報告
DevRelMeetup Tokyo #36 技術書典5 参加報告
tkawashita
 
20150916 potatotips 21_public
20150916 potatotips 21_public20150916 potatotips 21_public
20150916 potatotips 21_public
tkawashita
 
20150811 potatotips 20
20150811 potatotips 2020150811 potatotips 20
20150811 potatotips 20
tkawashita
 
201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english
tkawashita
 
201401217 potatotips No12
201401217 potatotips No12201401217 potatotips No12
201401217 potatotips No12
tkawashita
 
20140312 potatotips no5
20140312 potatotips no520140312 potatotips no5
20140312 potatotips no5
tkawashita
 
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
tkawashita
 
20110813 andeb10資料
20110813 andeb10資料20110813 andeb10資料
20110813 andeb10資料
tkawashita
 
Iosched読書会向け資料
Iosched読書会向け資料Iosched読書会向け資料
Iosched読書会向け資料
tkawashita
 

More from tkawashita (9)

DevRelMeetup Tokyo #36 技術書典5 参加報告
DevRelMeetup Tokyo #36 技術書典5 参加報告DevRelMeetup Tokyo #36 技術書典5 参加報告
DevRelMeetup Tokyo #36 技術書典5 参加報告
 
20150916 potatotips 21_public
20150916 potatotips 21_public20150916 potatotips 21_public
20150916 potatotips 21_public
 
20150811 potatotips 20
20150811 potatotips 2020150811 potatotips 20
20150811 potatotips 20
 
201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english201401217 potatotips no12-for_slideshare_english
201401217 potatotips no12-for_slideshare_english
 
201401217 potatotips No12
201401217 potatotips No12201401217 potatotips No12
201401217 potatotips No12
 
20140312 potatotips no5
20140312 potatotips no520140312 potatotips no5
20140312 potatotips no5
 
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
 
20110813 andeb10資料
20110813 andeb10資料20110813 andeb10資料
20110813 andeb10資料
 
Iosched読書会向け資料
Iosched読書会向け資料Iosched読書会向け資料
Iosched読書会向け資料
 

DroidKaigi2016 windows環境での効率的なアプリ開発手法

  • 2. 開発したいけど家に Windows しかない ぐぐったらQiitaの記載 は Mac 環境ばかり Macなんてデザイ ナーのPCでしょ 会社の開発マシンが Windows指定 W i n d o w s あ る あ る
  • 3. 3 と あ る Q i i t a の 超 電 磁 砲 http://qiita.com/konifar/items/6fac0eb1e6b0dc9dfb23
  • 4. 4 M A C ば か り の W i n d o w s 発 表 会 https://twitter.com/AustenAllred/status/558029756277743616/photo/1
  • 5. 5 W i n d o w s で 大 丈 夫 な の ? 安心してください。開発できますよ。
  • 6. 6 A n d r o i d S D K / A n d r o i d S t u d i o http://developer.android.com/intl/ja/sdk/index.html
  • 7. J a v a 7
  • 8. J a v a 6 , J a v a 7 o r J a v a 8 8 えっ、私の??低すぎ!? Java6 ここまではAndroidでも イケる Java7 Open JDK採用で Java8 採用 も加速か!? Java8
  • 9. 9 正しく設定すれば大丈夫! android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } android.compileOptions on build.gradle http://gfx.hatenablog.com/entry/2016/01/04/231504 http://gfx.hatenablog.com/entry/2016/01/10/100933 ToolChain は Java7 or Java8 で
  • 10. 環 境 変 数 f o r J a v a 10 • JAVAのインストールフォルダを指定 • e.g. C:¥Program Files¥Java¥jdk1.7.0_79¥ • e.g. C:¥Program Files¥Java¥jdk1.8.0_60¥ JAVA_HOME1 • Retrolambda を利用する場合で JAVA_HOMEがJAVA7の場合に必要 • https://github.com/evant/gradle-retrolambda • e.g. C:¥Program Files¥Java¥jdk1.8.0_60¥ JAVA8_HOME2 • %USERPROFILE%¥.{FOLDER_NAME}¥studio.exe.vmoptions and/or %USERPROFILE%¥.{FOLDER_NAME}¥studio64.exe.vmoptions • %USERPROFILE%¥.{FOLDER_NAME}¥idea.properties For Android Studio3
  • 11. 環 境 変 数 設 定 方 法 11 Win Key + Break key が便利 変数名と変数値を設定
  • 12. 環 境 変 数 f o r A n d r o i d S t u d i o 12 vmoptions を記載するファイルパス。メモリ割当デフォルトは750MB。 -Xmx2048m の行追加で変更可 idea.vmoptions はIntelliJ インストール時のクラッシュを避けるために無視されます。 studio.exe.vmoptions or studio64.exe.vmoptions を使いましょう STUDIO_VM_OPTIONS4 idea.properties のファイルパス。プラグイン、ログ、エラー通知設定などを記載。 For example, Android Studio 2.0 ships with experimental improved bidirectional text support (issue 182739). To enable this support, create a file named idea.properties with just this content: editor.new.rendering=true STUDIO_PROPERTIES5 Android Studio を動作させるための JDK 例えば、Android app のビルドを Java7 JDK で強制されているが Checkstyle などの Java8 でしか動作し ないPlugin を動かす場合などに有効 STUDIO_JDK6
  • 13. 13 S D K M a n a g e r
  • 14. S D K M a n a g e r イントラネット内で開発する場合に必要 Proxy 設定 Tools -> Options  Enable Preview Tools Preview Tools 次のページで紹介 Officecial/User Defined Sites
  • 15. O f f i c i a l A d d - o n S i t e s モジュールごとに定義サイトを提供 必要ないモジュールは Disable可能 Disableすると更新確認を短縮できる
  • 16. U s e r D e f i n e d S i t e s https://s3.amazonaws.com/android-sdk- manager/redist/addon.xml Amazon SDK http://developer.samsung.com/sdk- manager/repository/Samsung-SDK.xml Samsung SDK http://developer.lge.com/sdk/android/rep ository.xml LG SDK
  • 17. 17 U s e r D e f i n e d S i t e s http¥://gsbina.com/repository/addon.xml http://qiita.com/bina1204/items/c6142a9e13f70a73dad7 Android SDK Manager の Add-on を登録する方法
  • 18. W i n d o w s 開 発 の 難 敵 18
  • 19. 19 W i n d o w s 開 発 の 難 敵 VID = Vendor ID, PID = Product ID ;Google Nexus 7 %SingleBootLoaderInterface% = USB_Install, USB¥VID_18D1&PID_4E40 %CompositeAdbInterface% = USB_Install, USB¥VID_18D1&PID_4E42&MI_01 %CompositeAdbInterface% = USB_Install, USB¥VID_18D1&PID_4E44&MI_01 android_winusb.inf
  • 20. O E M D r i v e r 20 OEM Drivers http://developer.android.com/intl/ja/tools/extras/oem- usb.html#Drivers Manufacture USB Driver (e.g. Xperia) http://developer.sonymobile.com/downloads/drivers/
  • 21. V e n d o r I D f o r U S B D r i v e r 21 Company USB Vendor ID Acer 0502 ASUS 0b05 Dell 413c Foxconn 0489 Fujitsu 04c5 Fujitsu Toshiba 04c5 Garmin-Asus 091e Google 18d1 Haier 201E Hisense 109b HTC 0bb4 Huawei 12d1 Intel 8087 K-Touch 24e3 Company USB Vendor ID KT Tech 2116 Kyocera 0482 Lenovo 17ef LG 1004 Motorola 22b8 MTK 0e8d NEC 0409 Nook 2080 Nvidia 0955 OTGV 2257 Pantech 10a9 Pegatron 1d4d Philips 0471 PMC-Sierra 04da http://developer.android.com/intl/ja/tools/device.html#setting-up Company USB Vendor ID Qualcomm 05c6 SK Telesys 1f53 Samsung 04e8 Sharp 04dd Sony 054c Sony Ericsson 0fce Sony Mobile Communicati ons 0fce Teleepoch 2340 Toshiba 0930 ZTE 19d2
  • 22. V I D , P I D 確 認 方 法 22 Google USB DriverでAndroid端末をWindowsに認識させる (http://note.chiebukuro.yahoo.co.jp/detail/n128056) 不明なデバイスと認識 プロパティで確認
  • 23. 野 良 A n d r o i d 端 末 23 Android 4.0(ICS) VID = 0x04b8 http://www.epson.jp/products/moverio /bt200/ Epson Moverio BT-200 Android 4.4(KitKat) VID = 0x2207 http://telepathywear.com/product/ Telepathy Jumper
  • 24. 24 C:¥Users¥<user name>¥.android¥adb_usb.ini <SDK>¥add-ons¥ にフォルダ作成 フォルダの中に manifest.ini ファイルを作成 SDK Manager から adb usb が認識 [Android] adb_usb.ini の正しい書き方 (http://tande.jp/lab/2012/02/1649) a d b - u s b
  • 25. E m u l a t o r 25
  • 26. x 8 6 e m u l a t o r 26  SDK Manager でダウンロード  <SDK>¥extras¥intel¥Hardware_Accelerate d_Execution_Manager¥  インストーラー  intelhaxm-android.exe  silent_install.bat Install HAXM 機種によっては、BIOSで VT/NX Support を ON にしなければならない場合があります。 haxm_check.exe で確認可能
  • 27. G e n y m o t i o n 27 • 個人利用のみ無料 • 商用利用は有料 • 有料機能 • API Control • バッテリー状態 • GPS状態 • ネットワーク状態 https://www.genymotion.com/ 高速なEmulator • 余計な手間が発生 • ディスク容量も増加 https://www.virtualbox.org/wiki/Downloads 要 VirtualBox
  • 28. リ バ ー ス エ ン ジ ニ ア リ ン グ ご 利 用 は 計 画 的 に 28
  • 29. a p k t o o l s : R e v e r s e E n g i n e e r i n g T o o l 29 • Windows 向けに apktool.bat も提供 • 実行PATHがあるフォルダに apktoolls.jar, apktool.bat を移動 • 同じフォルダに apktool-decode.bat apktool.jar • apktool-decode.bat rem @echo off apktool.bat d %1 %2 %3 %4 %5 %6 %7 %8 %9 インストール指示が雑すぎる・・・
  • 30. S e n d t o ( 送 る ) 活 用 方 法 30 • C:¥"Users¥Your User Name"¥AppData¥Roaming¥Microsoft¥Wind ows¥SendTo Default Path • SendTo フォルダの中に 「SendTo - ショートカッ ト」を入れる 「SendTo - ショートカット」作成 • apktool-decode.bat のショートカットを作って、 SendTo へのショートカットで SendTo にいれる • 任意のフォルダから apk ファイルを apktool- decode.bat で実行 どこからでもSendToに増やせる
  • 31. シ ン ボ リ ッ ク リ ン ク 活 用 31  Link Creation Shell Extension  https://github.com/kobake/lnhdr リンク作成シェル拡張  NTFSの「リパース・ポイント(ファイル・パスの解釈を独自に行う機 能)」を使って実装されたリンク機能  dir で見ると <JUNCTION> と表示 ジャンクション  作成  mklink /j ~  削除  rmdir ~ Command Line Interface
  • 32. 32 a p k t o o l s シ ョ ー ト カ ッ ト
  • 33. C l a s s y S h a r k 33 Open APK, Export all generated data to a text file, Export generated file from a specific class to a text file, Open ClassyShark and display a specific class in the GUI, Inspect APK Dump all strings (combined classes.dex string tables) from your APK Android executables browser https://github.com/google/android-classyshark This is not an official Google product rem @echo off java -jar "%~dp0¥ClassyShark.jar" -open %1 ClassyShark-open.bat
  • 34. D e c o m p i l e r a p k - > d e x - > j a r - > j a v a 34 http://code.google.com/p/dex2jar/ dex2jar jd-gui-windows-1.4.0 jd-gui.exe https://github.com/skylot/jadx Dex to Java decompiler
  • 35. N e x u s R o o t T o o l k i t 35 Unlocking Rooting http://www.wugfresh.com/nrt/ Relocking and Unrooting
  • 37. Git for Windows https://git-scm.com/download/win Cygwin https://www.cygwin.com/ GitHub Desktop https://desktop.github.com/ SourceTree https://www.atlassian.com/software /sourcetree/overview/ TortoiseGit https://tortoisegit.org/ GitKraken http://www.gitkraken.com/ http://blog.axosoft.com/wp- content/uploads/2015/10/1-main- view.png g i t o n W i n d o w s P l a t f o r m
  • 38. 注 意 点 38 LFで統一することが多い? いつのまにか CRLF になっていたり CRLF前提のツール・エディタ多数・・・ 改行コード1 Windows 上は Shift JIS が多い ソースコードは UTF-8 が多い? Android Studio の Editor の右下で確認可能 文字コード2 いつのまにか 644 から 755 になっていたりして git status が真っ赤に。。。 chmod 644 foo.txt git/config の filemode で調整 ファイルアクセス権(File Permissions)3
  • 39. T i p s 小 さ な 幸 せ を 39
  • 40. A n d r o i d S t u d i o S t a r t P a g e
  • 41. 41 f i n i s h e d w i t h n o n - z e r o e x i t v a l u e 1 メモリが足りない場合に頻発 タスクマネージャからメモリ使っているプロセスを終了 $ ./gradlew assembleDebug
  • 42. T i p s 42  git の差分比較・マージを WinMerge で行う  http://qiita.com/kobake@github/items/fb317b4fdacad718a4b2 WinMerge でグラフィカルに difff 確認 vysor https://chrome.google.com/webstore/detail/vysor- beta/gidgenkbbabolejbgbpnhbimgjbffefm リアルタイム Android Screen Monitor
  • 43. T i p s 43  非公式ツール  MS 社員が開発しているらしい  https://technet.microsoft.com/en-us/sysinternals/bb897578.aspx Caps Lock を Ctrl に上書き  Windowsの操作を emacs キーバインドで操作できる  http://www.cam.hi-ho.ne.jp/oishi/indexen.html Xkeymacs
  • 44. ま と め 44 Windows でも十分に開発できる 便利なツールと組み合わせて開発効率を向上 Windowsアプリ、Windows Phoneアプリも開発できる
  • 45. ご 静 聴 あ り が と う ご ざ い ま し た 45