Travis Ci と Github で Android 開発な .travis.yml

Travis_CI__Configuring_your_build

何かと使えるようなのでメモ.

language: java

jdk:
  - openjdk7
  - openjdk6
  - oraclejdk7
  - oraclejdk8

branches:
  only:
    - dev
    - master
env:
  global:
    - ANDROID_SDK_VERSION=“r22.6.2"
before_install:

# required libs for android build tools
# Update a system for ia32 libraries
  - sudo apt-get update -qq
  - if [ `uname -m` = x86_64 ]; then sudo apt-get update; fi
  - if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch; fi

##
# Gradle

# newer version of gradle
wget http://services.gradle.org/distributions/gradle-1.11-bin.zip
unzip -qq gradle-1.11-bin.zip
export GRADLE_HOME=$PWD/gradle-1.11
export PATH=$GRADLE_HOME/bin:$PATH

# just to test gradle version, against our provided one
  - gradle -v

##
# Android SDK

# newest android SDK
  - wget http://dl.google.com/android/android-sdk_${ANDROID_SDK_VERSION}-linux.tgz
  - tar -zxf android-sdk_${ANDROID_SDK_VERSION}-linux.tgz
  - export ANDROID_HOME=`pwd`/android-sdk-linux
  - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

# manually set sdk.dir variable, according to local paths
  - echo "sdk.dir=$ANDROID_HOME" ]]> local.properties

##
# Android Components

# Install required components.
# For a full list, run `android list sdk -a --extended`
  - echo yes | android update sdk --filter platform-tools --no-ui --force ]]> /dev/null
  - echo yes | android update sdk --all --filter build-tools-19.0.3 --no-ui --force ]]> /dev/null
  - echo yes | android update sdk --filter android-19 --no-ui --force ]]> /dev/null
  - echo yes | android update sdk --filter extra-android-support --no-ui --force ]]> /dev/null
  - echo yes | android update sdk --filter extra-android-m2repository --no-ui --force ]]> /dev/null
  - echo yes | android update sdk --filter extra-google-m2repository --no-ui --force ]]> /dev/null

# for gradle output style
export TERM=dumb

# Create and start emulator
  - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
  - emulator -avd test -no-skin -no-audio -no-window &

install:
  - gradle check

after_install:

before_script:
  - chmod +x wait_for_emulator
  - ./wait_for_emulator

script:
  - sudo chmod +x gradlew
  - ./gradlew connectedCheck lint
  - ./gradlew connectedInstrumentTest

after_script:

after_success:
  - ./gradlew uploadArchives

after_failure:

wait_for_emulator

#!/bin/bash
bootanim=""
failcounter=0
until [[ "$bootanim" =~ "stopped" ]]; do
  bootanim=`adb -e shell getprop init.svc.bootanim 2>&1`
  echo "$bootanim"
  if [[ "$bootanim" =~ "not found" ]]; then
      let "failcounter += 1"
      if [[ $failcounter -gt 3 ]]; then
        echo "Failed to start emulator"
        exit 1
      fi
  fi
  sleep 10
done
echo “Done”

Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community

Travis CI: Travis CI's use of GitHub API Scopes

Travis CI: How to skip a build

JakeWharton/sdk-manager-plugin · GitHub


PHP+ADB でAndroid画面操作の保存と再現をする

adb経由で getevent/sendevent を使います.

Getevent | Android Developers

adb_—_121×44

やってみておもしろかったの以下からのPHPへの移植です.

getevent/sendeventでAndroid端末の操作自動化

実行方法は同様に,ADB接続したパソコン上コンソールから

保存

$ adb shell getevent /dev/input/event2 | php getevent.php > events.txt

保存したファイルはシェルスクリプトです.

$ cat event.txt
sleep 0.000
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 53 283
sleep 0.010
adb shell sendevent /dev/input/event2 3 54 2331
sleep 0.000
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 57 4294967295
sleep 0.060
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 57 1886
sleep 0.344
adb shell sendevent /dev/input/event2 3 53 800
sleep 0.000
adb shell sendevent /dev/input/event2 3 54 2312
sleep 0.000
adb shell sendevent /dev/input/event2 3 58 64
sleep 0.000
adb shell sendevent /dev/input/event2 3 48 4
sleep 0.000
adb shell sendevent /dev/input/event2 0 0 0
sleep 0.000
adb shell sendevent /dev/input/event2 3 53 798
sleep 0.010
adb shell sendevent /dev/input/event2 3 54 2311
...

このときの タッチパネルを表す /dev/input/event2 は端末によって違います.

コンソールから以下で確認しましょう.

以下Nexus4の場合.

$ adb shell getevent
add device 1: /dev/input/event0
  name:     "pmic8xxx_pwrkey"
add device 2: /dev/input/event1
  name:     "keypad_8064"
add device 3: /dev/input/event4
  name:     "apq8064-tabla-snd-card Headset Jack"
add device 4: /dev/input/event3
  name:     "apq8064-tabla-snd-card Button Jack"
add device 5: /dev/input/event5
  name:     "hs_detect"
add device 6: /dev/input/event2
  name:     "touch_dev"
^C

再現

$ sh events.txt

続きを読む >>


パソコン上で Android を試せる「Genymotion」で GooglePlayStore を使う

公式エミュレータとの比較になるのだけれども。

Genymotion

デメリット

・Geniymotionにアカウント登録が必要。
ダウンロード時、メールアドレス等の登録が必要。

・VirtualBox のインストールが必須。
ダウンロード後、ダブルクリックでインストール完了。

・起動できないアプリもある。
DRMとか課金系とか、厳しいアプリは起動できないように思える。

・動画が見れない。

メリット

・サクサク快適。

起動が早い。低スペックなマシンでは動かなかったNexus10も軽快にうごく。

・インストール、設定が簡単。

公式では、同じ kitkat(API19)でも、intelx86 とか、arm とか、snapshot が、とかあるけども簡単に avd の作成ができる。
対応機種は少ないが機種名から、その機種の最新のOSバージョンが設定されるので便利。例えば、Nexus S なら 2.3.7 とか。
Kitkatならカラー絵文字もフツーに表示されるし、表示サイズもパソコンディスプレイサイズに合わせて表示されている。

・Google Play Store が利用できる。

arm コンバータと、gapps のzipアーカイブをGUI上にドラッグアンドドロップするだけでフラッシュまで完了できる。楽ちん。
ストア上の掲載情報や公開されているapkを実際にインストールできるので間違いがない。

・文字入力、カーソルキーで画面遷移や操作ができる。

結構でかい。パソコンで矢印(ポインタ)を移動させながらのドラッグとかスワイプほどダルい操作はない。

なんせ、動作がキビキビで快速なのが最大のメリット。デフォルト設定でこの快適感。インストールから起動までの作業時間もほんの数分。

ちと、Chromeが不安定に思えるのだがまあいいか。

AndroidStudioプラグインもあるよ。

JetBrains Plugin Repository :: Genymotion

jenkins に。

Use Genymotion with Jenkins for Android testing | Genymobile Blog

で、これって、Googleアカウントがあれば、パソコン上で、Androidを*ある程度*お試しできるよなあ、と。

続きを読む >>