çŸåšéçºè åãã®ãã¬ãã¥ãŒç¶æ ã«ããAndroid "L"ã§ã¯ãé»åæ¶è²»ã®å¹çæ¹åã1ã€ã®ç®çã«ãªã£ãŠããŸãããã®ããã®ãããžã§ã¯ãããVoltaã(Voltaã¯é»æ± ãçºæããã€ã¿ãªã¢äººç§åŠè ã®ååã§é»å§ã®åäœVoltã®èªæºã«ããªã£ãŠããŸã)ã§ããã¢ã³ããã€ãã®åããŒãžã§ã³ã®éçºã§ã¯ãéç¹æ¹è¯é ç®ããããžã§ã¯ããšåŒã³ãŸããVoltaã¯ãAndroid "L"ã®éç¹éçºé ç®ã®ãããžã§ã¯ããªã®ã§ãã
ã¡ãªã¿ã«KitKatã®ãšãã«ã¯ãæäœåäœã¡ã¢ãªã512ã¡ã¬ãã€ããšããããšãéç¹éçºé ç®ãšãªã£ãŠããŠãProject SvelteãšåŒã°ããŸãããSvelteã¯ãããããšããã女æ§ã衚ã圢容è©ã§ãããŸãJelly Beanã«ã¯Project Butter(ãã³ã«å¡ããã¿ãŒ)ããã£ãŠãããã¯ãã¢ãã¡ãŒã·ã§ã³ã60ãã¬ãŒã æ¯ç§ã§åäœãããããšãç®çã«ããŠããŸããã
ã·ã¹ãã åŽã¯ãGoogleãåªåããããšã§ãæ¶è²»é»åãæžããããšã¯ããçšåºŠå¯èœã§ãããã¢ããªã±ãŒã·ã§ã³åŽãåæã«éä¿¡ããŠãCPUæéãæ¶è²»ããŠããŸããšãããããªå¯¿åœã¯é·ããªããŸããããã®ãããProject Voltaã§ã¯ã¢ããªã±ãŒã·ã§ã³åŽãæ¶è²»é»åãå°ãªãã§ããããã«ãéçºå¯èœãã«ããããšãç®æšãšãªããŸããããã®ããã«APIãããŒã«ãçšæãããã®ã§ãã
Googleã«ããã°ãæ¶è²»é»åãäžããããã«ã¯ããªãã¹ããæ ãããããšãå¿ èŠã ãšãããŸããã€ãŸããã¢ã€ãã«æéãé£ç¶ããŠé·ãããåªåãå¿ èŠãšããããšã§ããããã¯ããªã«ãã¢ã³ããã€ãã«éãããWindowsãªã©ã®ä»ã®ãã©ãããã©ãŒã ã§ãäºæ ã¯åãã§ããWindowsããã¿ã€ããŒå²ã蟌ã¿ã®ã¿ã€ãã³ã°ãããããªã©ããŠãã¢ã€ãã«æéããªãã¹ãé·ãé£ç¶ããããã«å éšçã«åŠçãããŠããŸãããã®ããã«ããããšã§ãé»åæ¶è²»ã®å€§ããªããŒã(CPUãšéä¿¡åè·¯ããã£ã¹ãã¬ã€ãæ¶è²»é»åã®å€§åã䜿ã£ãŠããŸã)ã®æ¶è²»é»åãäžããããšãã§ããã®ã§ããããšãã°ãCPUã¯ãã¢ã€ãã«æéãé·ããã°ãæ¶è²»é»åã®å°ããªç¶æ ã«æ®µéçã«ãªã£ãŠãããŸãããŸãéä¿¡ããäžæã«ãã«åž¯åã䜿ãããšã¯ãªããããéä¿¡ãã§ããã ãåæã«ããããšã§äœæ¶è²»é»åã®ç¶æ ãé·ãã§ããŸãããã£ã¹ãã¬ã€ã«é¢ããŠã¯ããŠãŒã¶ãŒã䜿ãããã«ããŸãå¶åŸ¡ã¯ã§ããŸããããããã¯ã©ã€ããèªå調ç¯ãããšãããšãã°ãèæ¯ãæãç»åã«ããŠãããšãæ¶è²»é»åãäžããããšãã§ããå ŽåããããŸããæ©çš®ã«ãã£ãŠã¯ãããšã³ã¢ãŒãããªã©ã§çã£é»ã®å£çŽã«åãæ¿ãããã®ããããŸãã
ã¢ããªã±ãŒã·ã§ã³ããªãã¹ãæ ããããããã«GoogleãçšæããAPIã®1ã€ãããScheduled Jobãã§ããããã¯ãåšæçã«å®è¡ãããããªåŠçã®å®è¡ã¿ã€ãã³ã°ãã¢ã³ããã€ãåŽã§å¶åŸ¡ã§ããããã«ããããã®ãã®ã§ããã¢ããªã±ãŒã·ã§ã³ã¯ãã¹ã±ãžã¥ãŒã«ãžã§ããšããŠåšæçãªåŠçãç»é²ããŠããã°ãã¢ã³ããã€ãããããåæã«å®è¡ããŠãããŸã(å®è¡ãããã³ãŒãèªäœã¯ã¢ããªã®äžã«çœ®ããŸã)ãããã«ãããã¢ã³ããã€ãã¯è€æ°ã®åŠçããŸãšããŠå®è¡ãããããªã¹ã±ãžã¥ãŒãªã³ã°ãå¯èœã«ãªããŸãããŸãããã®APIã§ã¯ãã黿ºã«ã€ãªãã£ãŠãããšãããªã©ã®æ¡ä»¶ãæå®ããããšãå¯èœã§ãã
Project Voltaã®ãã1ã€ã®ææã¯ãã¢ããªã±ãŒã·ã§ã³å®è¡æã®é»åæ¶è²»ç¶æ ãªã©ãèšé²ããæ©èœã§ãããã®èšé²ãèŠèŠçã«è¡šç€ºããããBattery Histrianã(ããããªæŽå²å®¶ãšã§ãããã®ã§ãããã)ãšããããŒã«ã§ãã
ãã®ããŒã«ã䜿ãã«ã¯ãAndroid "L"ãã€ã³ã¹ããŒã«ããNexus 5ãªã©ã«ã·ã§ã«ã§å ¥ããããããªç¶æ ã®èšé²ãåãã³ãã³ããå®è¡ãããã®åŸããã°ãã¡ã€ã«ãPCã«è»¢éããŠãPCåŽã§Battery HistrianããŒã«ãèµ·åããŸããçµæã¯ãHTMLãã¡ã€ã«ãšããŠä¿åãããã¹ã¯ãªãããå«ãŸããŠããã®ã§ãç°¡åãªæ¡å€§çž®å°ãªã©ã¯WebããŒãžå ã§å®è¡å¯èœã§ãã
ãã ããã°ãŒã°ã«ã®Android developersã«ããæ å ±ã¯å€ãã®ã§ã以äžã«æé ãªã©ã解説ããŠãããŸãããŸãã¯å¿ èŠãªãã®ãããããŸããå¿ èŠã«ãªãã®ã¯Python 2.7ãšBattery Histrianã¹ã¯ãªããããããŠAndroidã®SDKã§ããSDKã«ã€ããŠã¯ä»¥åã®èšäºãåèã«ããŠãã ãããä»åŸã®ããšãèãããšåç¬ã§ã€ã³ã¹ããŒã«ãããããAndroid Studioãã€ã³ã¹ããŒã«ããã»ãããããããããŸãããSDKã®ã€ã³ã¹ããŒã«ã«ã¯JDKãå¿ èŠã§ããã®ããã説æãç ©éã«ãªãã®ã§ãããã§ã¯æé ã¯çç¥ããŸãã
â Python 2.7
ã»64bitç
https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi
ã»32bitç
https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi
â Historian(Pythonã¹ã¯ãªãã)
https://github.com/google/battery-historian/blob/master/historian.py
â»ãRawãã®ãªã³ã¯ã§ããªã³ã¯å
ãä¿åããå®è¡
ããããªæ¶è²»ç¶æ ãèšé²ãããããåŸæ¥ãããã£ãdumpsys(ã·ã¹ãã é¢é£æ å ±ã®åºå)ã³ãã³ããæ¡åŒµããã¢ã³ããã€ãã®ã·ã§ã«(adb shell)ã§ãbatterystatsããµãã³ãã³ããå©çšã§ããããã«ãªããŸãããäœ¿ãæ¹ã¯ã
dumpsys batterystats -h
ã§ãã«ãã¡ãã»ãŒãžãåºåãããŸãã
ãŸãã¯ã以äžã®ããã«Windowsã®ã³ãã³ãããã³ãããŠã£ã³ããŠã§å®è¡ããŸããadb shellã§ã·ã§ã«ã«å ¥ã£ãŠdumpsysã³ãã³ããå®è¡ããŠãããŸããŸãããadb shellã«ç¶ããŠã·ã§ã«ã§å®è¡ããã³ãã³ããçŽæ¥æå®ããããšãå¯èœã§ãã
adb shell dumpsys batterystats enable full-wake-history
adb shell dumpsys batterystats --reset
æåã®ã³ãã³ãã¯ãbatterystatsã®ãã°èšé²ã®éå§ã§ã次ã®ã³ãã³ã(--reset)ã¯èšé²ãã¯ãªã¢(ãã ãèšé²ã¯æ¢ãŸããªã)ãããã®ã§ãã
ãã®åŸã調æ»ãããã¢ããªãèµ·åããŠåãããŠãããããªç¶æ ãèšé²ãããŸããããçšåºŠãæäœããã®ã¡é©åœãªã¿ã€ãã³ã°ã§ãWindowsã®ã³ãã³ãããã³ããã§ã以äžã®ã³ãã³ããå®è¡ããŠãã°ãèŠèŠåããŸãã
adb shell dumpsys batterystats disable full-wake-history
adb.exe bugreport >bug.txt
python.exe historian.py bug.txt >report.html
æåã®ã³ãã³ãã¯ãbatterystatsã®èšé²åæ¢ã§ããããããªç¶æ ã®ãã°èšé²ã¯åæ¢ãããªããšãã£ãšèšé²ãç¶ããŸãããã®ããäžèŠãªå Žåã«ã¯ããã®ã³ãã³ãã§åæ¢ãããŸãããªãããã®ããšã--resetã䜿ã£ãŠèšé²ã®ã¯ãªã¢ãšåéãè¡ãããããšãå¯èœã§ãã2ã€ãã®ã³ãã³ãã¯dumpsysã³ãã³ãã§éå§ãããã°ãã¡ã€ã«ãbug.txtãšãããã¡ã€ã«ã«ä¿åãã(ãªãã€ã¬ã¯ããã)ãã®ã§ãããã®ã³ãã³ãã¯ããªãå®è¡ã«æéããããæ°ã¡ã¬ãã€ãã®ããã¹ããä¿åãããŸããæ¬¡ã®ã³ãã³ãã¯ãpythonã䜿ã£ãŠhistorian.pyãå®è¡ããbug.txtãåŠçããŠçµæãreport.htmlã«æžã蟌ã¿ãŸããã§ãããã£ãreport.htmlãChromeã§è¡šç€ºããããšãããŸããŸãªæ©èœã®çšŒåç¶æ ãèŠèŠåããããŒãžã衚瀺ãããŸãããã¡ãã§è©Šãããšããã§ã¯ãIE11ã§ã¯ãã°ã©ãéšåã衚瀺ãããŸããã§ããããChromeã§ã¯ãã®ãŸãŸè¡šç€ºãå¯èœã§ããã
ãã®ããŒã«ã¯ã皌åäžã«èšé²ãåããã¢ããªã±ãŒã·ã§ã³ã®åäœç¶æ ã確èªãããã®ã§ãããŒãžäžã®çžŠç·ãã¢ã³ããã€ãå ã§çºçããããŸããŸãªã€ãã³ãã察å¿ããŠããŸããããŠã¹ã«ãŒãœã«ãåããããšç°¡åãªè§£èª¬ã衚瀺ãããŸããæ¬æ¥ãã¢ããªã±ãŒã·ã§ã³éçºè åãã®ãã®ãªã®ã§ãããAndroidå éšã§ã®åäœãèŠãã®ã«ãå©çšã§ããã§ãããããã ããããŸã®ãšããã衚瀺ã®èŠæ¹ã«ã€ããŠã®è§£èª¬ã¯ãªãã巊端ã«è¡šç€ºãããŠããã©ãã«ãªã©ããã€ãã³ãã®å å®¹ãæšæž¬ãããããããŸãããããšãã°ãäžçªäžã®è¡ã«è¡šç€ºãããŠããã®ã¯ãããããªæ®éã®åãã§ã1%ããšã«éç·ã衚瀺ãããŠããŸãããªã®ã§ããã®ééãçããšããã»ã©æ¶è²»é»åãé«ãããšã«ãªããŸããçŸåšã¯ãAndroid "L"ã®ãã¬ãã¥ãŒã§ããå©çšã§ããªãã®ã§ãããAndroid "L"ã補åã«æèŒãããããšãªãã°ãããããªæ¶è²»ã®ç°åžžãªã©ã確èªããã«å©çšããããšã¯å¯èœã§ãããã
æ¬é£èŒã¯ã2014幎10æ01æ¥ã«Andoridæ å ±ã®Webå°éèªãAndroWireãã«æ²èŒããèšäºãåæ§æãããã®ã§ãã