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

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

  • 1.
  • 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 nd o w s で 大 丈 夫 な の ? 安心してください。開発できますよ。
  • 6.
    6 A n dr 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 va 7
  • 8.
    J a va 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 { sourceCompatibilityJavaVersion.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 KM a n a g e r
  • 14.
    S D KM a n a g e r イントラネット内で開発する場合に必要 Proxy 設定 Tools -> Options  Enable Preview Tools Preview Tools 次のページで紹介 Officecial/User Defined Sites
  • 15.
    O f fi c i a l A d d - o n S i t e s モジュールごとに定義サイトを提供 必要ないモジュールは Disable可能 Disableすると更新確認を短縮できる
  • 16.
    U s er 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 er 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 nd o w s 開 発 の 難 敵 18
  • 19.
    19 W i nd 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 MD 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 nd 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.
    野 良 An 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 ul a t o r 25
  • 26.
    x 8 6e 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 ny 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 kt 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 nd 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 kt o o l s シ ョ ー ト カ ッ ト
  • 33.
    C l as 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 co 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 xu s R o o t T o o l k i t 35 Unlocking Rooting http://www.wugfresh.com/nrt/ Relocking and Unrooting
  • 36.
  • 37.
    Git for Windows https://git-scm.com/download/win Cygwin https://www.cygwin.com/ GitHubDesktop 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 ps 小 さ な 幸 せ を 39
  • 40.
    A n dr o i d S t u d i o S t a r t P a g e
  • 41.
    41 f i ni 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 ps 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 ps 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