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

45
Windows 環境での 効率的なアプリ開発手法 DroidKaigi 2016

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

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

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

DroidKaigi 2016

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

開発したいけど家に

Windows しかない

ぐぐったらQiitaの記載

はMac 環境ばかり

Macなんてデザイ

ナーのPCでしょ

会社の開発マシンが

Windows指定

W i n d o w sあ る あ る

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

3

と あ る Q i i t aの超電磁砲

http://qiita.com/konifar/items/6fac0eb1e6b0dc9dfb23

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

4

M A Cばか り の W i n d o w s発表会

https://twitter.com/AustenAllred/status/558029756277743616/photo/1

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

5

W i n d o w s で大丈夫なの?

安心してください。開発できますよ。

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

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

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

J a v a

7

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

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

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

9

正しく設定すれば大丈夫!

android {

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

}

android.compi leOpt ions on bui ld.gradle

http://gfx.hatenablog.com/entry/2016/01/04/231504

http://gfx.hatenablog.com/entry/2016/01/10/100933

ToolChain は Java7 or Java8 で

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

環境変数 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

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

環境変数設定方法

11

Win Key + Break key が便利 変数名と変数値を設定

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

環境変数 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

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

13

S D K M a n a g e r

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

S D K M a n a g e r

イントラネット内で開発する場合に必要

Proxy 設定

Tools -> Options

Enable Preview Tools

Preview Tools

次のページで紹介

Off icecia l/User Def ined S i tes

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

O f f i c i a l A d d - o n S i t e s

モジュールごとに定義サイトを提供

必要ないモジュールは Disable可能

Disableすると更新確認を短縮できる

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

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

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

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 を登録する方法

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

W i n d o w s開発の難敵

18

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

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

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

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/

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

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

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

V I D , P I D 確認方法

22

Google USB DriverでAndroid端末をWindowsに認識させる

(http://note.chiebukuro.yahoo.co.jp/detail/n128056)

不明なデバイスと認識 プロパティで確認

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

野良 A n d r o i d端末

23

Android 4.0(ICS)

VID = 0x04b8

http://www.epson.jp/products/moverio

/bt200/

Epson Mover io BT-200

Android 4.4(KitKat)

VID = 0x2207

http://telepathywear.com/product/

Telepathy Jumper

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

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

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

E m u l a t o r

25

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

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

Insta l l HAXM

機種によっては、BIOSで VT/NX Support を

ON にしなければならない場合があります。

haxm_check.exe で確認可能

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

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

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

リバースエンジニアリングご利用は計画的に

28

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

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

インストール指示が雑すぎる・・・

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

S e n d t o (送 る ) 活 用方法

30

• C:¥"Users¥Your User

Name"¥AppData¥Roaming¥Microsoft¥Wind

ows¥SendTo

Defaul t Path

• SendToフォルダの中に 「SendTo -ショートカッ

ト」を入れる

「SendTo - ショートカット」作成

• apktool-decode.batのショートカットを作って、

SendToへのショートカットで SendToにいれる

• 任意のフォルダから apk ファイルを apktool-

decode.bat で実行

どこからでもSendToに増やせる

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

シ ン ボ リ ッ ク リ ン ク 活用

31

Link Creation Shell Extension

https://github.com/kobake/lnhdr

リンク作成シェル拡張

NTFSの「リパース・ポイント(ファイル・パスの解釈を独自に行う機

能)」を使って実装されたリンク機能

dirで見ると <JUNCTION> と表示

ジャンクション

作成

mklink /j ~ 削除

rmdir~

Command L ine Interface

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

32

a p k t o o l s シ ョ ー ト カ ッ ト

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

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 off ic ia l Google product

rem @echo off

java -jar "%~dp0¥ClassyShark.jar" -open %1

ClassyShark-open.bat

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

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 decompi ler

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

N e x u s R o o t T o o l k i t

35

Unlocking

Root ing

http://www.wugfresh.com/nrt/

Relocking and Unroot ing

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

G i t

36

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

Git for Windowshttps://git-scm.com/download/win

Cygwinhttps://www.cygwin.com/

GitHub Desktophttps://desktop.github.com/

SourceTreehttps://www.atlassian.com/software

/sourcetree/overview/

TortoiseGithttps://tortoisegit.org/

GitKrakenhttp://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

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

注意点

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で調整

ファイルアクセス権 (F i le Permissions)3

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

T i p s小さな幸せを

39

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

A n d r o i d S t u d i o S t a r t P a g e

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

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

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

T i p s

42

git の差分比較・マージをWinMergeで行う

http://qiita.com/kobake@github/items/fb317b4fdacad718a4b2

WinMerge でグラフィカルに diff f 確認

vysor

https://chrome.google.com/webstore/detail/vysor-

beta/gidgenkbbabolejbgbpnhbimgjbffefm

リアルタイム Android Screen Monitor

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

T i p s

43

非公式ツール

MS 社員が開発しているらしい

https://technet.microsoft.com/en-us/sysinternals/bb897578.aspx

Caps Lock を Ctr l に上書き

Windowsの操作を emacsキーバインドで操作できる

http://www.cam.hi-ho.ne.jp/oishi/indexen.html

Xkeymacs

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

ま と め

44

Windows でも十分に開発できる

便利なツールと組み合わせて開発効率を向上

Windowsアプリ、Windows Phoneアプリも開発できる

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

ご静聴あ りが と う ご ざいま した

45