Slide 1

Slide 1 text

Android  Studio࣌୅ͷ   uiautomatorΛ࢖ͬͨࣗಈςετ 2015.01.15   @sumio_tym  (TOYAMA  Sumio) potatotips  (iOS/Android։ൃTipsڞ༗ձ)  ୈ13ճ

Slide 2

Slide 2 text

ࣗݾ঺հ •  ࢯ໊:  ֎ࢁ७ੜ(TOYAMA  Sumio)   @sumio_tym  (twitter),  @sumio  (github)   •  ॴଐ:  NTTιϑτ΢ΣΞגࣜձࣾ   •  ۀ຿಺༰:   – ࣾ಺Androidؔ࿈ϓϩδΣΫτٕज़ࢧԉ   – Androidؔ࿈ࣾ಺ݚमߨࢣ   •  ϓϥΠϕʔτ:   – STAR  (ςετࣗಈԽݚڀձ)   – uiautomator͕޷͖Ͱ͢   2  

Slide 3

Slide 3 text

•  Android  SDKඪ४ͷUIςετࣗಈԽπʔϧ   http://developer.android.com/tools/testing/testing_ui.html   •  apk͕खݩʹແͯ͘΋ૢ࡞Ͱ͖Δ   –  ΞϓϦʹ·͕ͨͬͨૢ࡞΋OK!   –  ϓϦΠϯΞϓϦ΋OK!   •  ৄ͘͠͸ҎԼͷهࣄ(@ITʹͯެ։)ΛͲ͏ͧ   –  ʮAndroid  SDKඪ४ͷԿͰ΋ςετπʔϧuiautomator ͷجຊతͳ࢖͍ํʯ   http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html   –  ʮAndroidςετͰศརͳuiautomatorviewerɺ UiScrollableͷ࢖͍ํɺςΩετೖྗAPI੍ݶࣄ߲ͷ   ճආํ๏ʯ   http://www.atmarkit.co.jp/ait/articles/1411/05/news038.html   3   uiautomatorͬͯ?

Slide 4

Slide 4 text

ॕAndroid  Studio  1.0ϦϦʔε!   4   ͸͡Ίʹ(1/2) Eclipse  +  ADT͸ϨΨγʔѻ͍ http://developer.android.com/sdk/index.html  

Slide 5

Slide 5 text

uiautomator͸Eclipse޲͚ͷ··   – antͰ͔͠ϏϧυͰ͖ͳ͍   android  create  uitest-­‐project  Ͱbuild.xml  ੜ੒   – Android  StudioରԠΛ๬Ή੠͸͋Δ͕ɺ์ஔ   https://code.google.com/p/android/issues/detail?id=61122   5   ͸͡Ίʹ(2/2) uiautomatorͷͨΊʹEclipseىಈ͢Δͷ͕ਏ͍!  

Slide 6

Slide 6 text

঺հ͢ΔTips uiautomatorͷςετεΫϦϓτΛ   Android  StudioͰॻ͘ํ๏Λڞ༗͠·͢ 6  

Slide 7

Slide 7 text

ΞδΣϯμ •  uiautomatorͷࣄ৘   •  Android  Studioͷࣄ৘   •  ղܾͷํ๏   – ϏϧυͷGradleରԠ   – Android  StudioରԠ   •  ࠓޙͷ՝୊   •  ·ͱΊ   7  

Slide 8

Slide 8 text

uiautomatorͷࣄ৘ •  apk΍aarͷੜ੒͸ෆཁ   AndroidManifest΍ϦιʔεϑΝΠϧ͸ແ͍   •  ίϯύΠϧ͚࣌ͩandroid.jarͳͲ͕ඞཁ   ˞uiautomator.jar΋ඞཁͰ͢   •  dexԽ͕ඞཁ 8   Java? Android? Ϗϧυͷ؍఺ͰݟΔͱͲͬͪ෇͔ͣ   java  plugin΋android  plugin΋࢖͑ͳ͍...  

Slide 9

Slide 9 text

Android  Studioͷࣄ৘ Ϗϧυઃఆ͸build.gradle͕શͯ   •  ґଘϥΠϒϥϦͷΫϥεύε   dependencies  {  ...  }  ͚ͩΛݟ͍ͯΔΑ͏ͩ   •  ιʔεύε   sourceSets  {  ...  }͚ͩΛݟ͍ͯΔΑ͏ͩ 9   ˞ਪଌͰ͢

Slide 10

Slide 10 text

ղܾͷํ๏ •  ϏϧυͷGradleରԠ:   Gradleͷantαϙʔτʹ͓೚ͤ   •  Android  StudioରԠ:   μϛʔͷdependenciesͱsourceSetsΛએݴ   10  

Slide 11

Slide 11 text

ϏϧυͷGradleରԠ:  antʹ͓೚ͤ 11   // build.xmlΛಡΈࠐΉ ProjectHelper.configureProject(ant.project, file('build.xml')); // local.properties͔Β΁ͷύεΛऔಘ͢Δ def sdkDir = ant.properties['sdk.dir'] // build.xmlʹఆٛ͞Εͨbuild, install, cleanλʔήοτΛɺ // ͦΕͧΕuiautomatorBuild, uiautomatorInstall, uiautomatorCleanͱ͍͏໊લͷgraldeλεΫͱͯ͠ొ࿥͢Δɻ ['build', 'install', 'clean'].each { antTargetName -> task "uiautomator${antTargetName.capitalize()}" << { ant.project.executeTarget(antTargetName) } } https://gist.github.com/sumio/8c08f751c27e827f3463 ant.importBuild͸࢖Θͳ͍

Slide 12

Slide 12 text

apply plugin: 'java' def targetDir = ant.properties['target'] dependencies { compile files("${sdkDir}/platforms/${targetDir}/ android.jar") compile files("${sdkDir}/platforms/${targetDir}/ uiautomator.jar") } // Android StudioͰɺsrc/௚ԼΛςετίʔυͱೝࣝͤ͞Δ sourceSets { main { java { srcDir 'src' } } } Android  StudioରԠ:  μϛʔͷએݴ 12   https://gist.github.com/sumio/8c08f751c27e827f3463 "compile"Λ࢖͏ͨΊ͚ͩʹ   javaϓϥάΠϯΛద༻  

Slide 13

Slide 13 text

ࠓޙͷ՝୊ •  build.xmlʹཔΒͳ͍   •  dependenciesͷαϙʔτ   – mavenͰݴ͏   ʮcompileʯʮprovidedʯείʔϓ͕ඞཁ   •  Ώ͘Ώ͘͸ϓϥάΠϯԽ͍ͨ͠   13  

Slide 14

Slide 14 text

ಈ࡞͢Δαϯϓϧ͸ͪ͜ΒΛͲ͏ͧ   https://gist.github.com/sumio/8c08f751c27e827f3463     ˞ uiautomatorϓϩδΣΫτͷbuild.xmlͱಉ͡σΟϨΫτϦ ʹஔ͍͍ͯͩ͘͞   14   ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠