ソフトコミュ開発ブログ

SoftCommu は Javaアプリ、Androidアプリの開発を行うディベロッパーです。人材教育もやっています。企業の新人研修の講師からスカイプでのオンライン家庭教師まで!技術書の執筆や翻訳もしています。
2017.02.27 Monday
エミュレータの Google Play Services のバージョンが古いために Google Maps などを使用したアプリが動作しない場合の対応策

Google Map を使用するアンドロイドアプリを開発し、動作確認のためにエミュレータで実行しようとすると下記のようなエラーが表示されて、実行できない場合があります。

 

 

 

表示されているメッセージは、

 

"My Application won't run unless you update Google Play services."

 

です。

 

日本語にすると、

 

「エミュレータの Google Play サービスをアップデートしないとアプリは実行できません」

 

ということですね。

 

で、すぐ下に "UPDATE" というボタンがあるので、それをクリックすればいいのかと思うと・・・あれっ?ボタンをクリックしても何も起きません。

 

出ました!Google の製品で良くある「ユーザーのクリックを平気で無視するやつ」です。困りましたね。

 

さて、この問題の原因は何でしょうか?

 

原因は、開発したアプリ内の Google Play サービスのバージョンが

実行しようとしているエミュレータ端末のバージョンより新しいことです。

 

例えば、

開発したアプリ内の Google Play サービスのバージョンが 10.2.0 とかになっていて、

実行しようとしているエミュレータ端末の Google Play サービスが 9.8.79 などの古いバージョンになっているとうまく動きません。

 

アプリで使用している Google Play サービスのバージョンの確認方法

 

まず、アプリ側で使用している Google Play サービスのバージョンをチェックしてみましょう。

 

これは、build.gradle というファイル内に記述してあるはずです。(この名前のファイルは二つあると思いますが、appフォルダの直下にある方を参照してください)

 

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'
    testCompile 'junit:junit:4.12'
}

 

上記の

 

com.google.android.gms:play-services:10.2.0

 

という記述を見ると、アプリ側で使用している Google Play サービスのバージョンがわかります。

 

このアプリで使用しているバージョンは、10.2.0 ということになりますね。

 

 

エミュレータ端末で使用している Google Play サービスのバージョンの確認方法

 

エミュレータ端末の Google Play サービスのバージョンを確認するには、エミュレータを起動して端末の「設定」あるいは「Settings」の画面からメニューをたどっていきます。

 

 

上記の赤枠内「Settings」をクリックすると下記のような画面が表示されますので「Apps」をクリックしてください。

 

 

スクロールしていくと、Google Play services という項目が見つかるかと思いますので、それをクリック。(もし Google Play setvices という項目がない場合は、そもそもエミュレータ上の端末を作成するときに、Google APIs が含まれない端末イメージを使用したのだと思います。その場合、バージョンの問題以前の問題として、そもそも Google Maps などの Google Play setvices 機能がまったく使えない状態になっていますので、Google API 付きエミュレータ端末を作成しなおしてください。)

 

 

上記の Google Play services をクリックすると下記のようにバージョン番号が表示されます。

 

 

上記の赤枠内を見ると、このエミュレータ端末の Google Play サービスのバージョンは 9.8.79 であることがわかりますね。

 

解決策

 

さて、この問題を解決するにはどうすれば良いでしょうか?

 

方法は大きく分けて二つあります。

 

解決策その1 : アプリ側で使用している Google Play サービスのバージョンを落とす(つまり古いバージョンにする)

解決策その2 : エミュレータ端末側で使用している Google Play サービスのバージョンをアップする(つまり新しいバージョンにする)

 

今回は、簡単にできる前者の方法をご紹介します(後者に関しても後日このブログ内でご紹介する予定です)。

 

アプリ側で使用している Google Play サービスのバージョンを設定しているのは、appフォルダ内の build.graidle というファイル内でしたね。

 

上記でもすでに引用しましたが、その中の dependencies セクションには下記のような記述があると思います。

 

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'
    testCompile 'junit:junit:4.12'
}

 

上記の

 

'com.google.android.gms:play-services:10.2.0'

 

という記述をエミュレータ端末の Google Play サービスのバージョンと合わせて変更してみましょう。

 

たとえば、エミュレータ端末の Google Play サービスのバージョンバージョンが 9.8.79 となっている場合、ドット区切りの3つの数字のうち、最初の二つの数字を使ってください。つまり 9.8 ということになります。

 

そして、3つめの数字はとりあえず 0 を指定しましょう。なぜなら、9.8.79 などといったバージョンのライブラリはネット上に公開されていない可能性があるからです。でも3つめの数字を 0 にしたバージョンは、ほぼ確実に存在するはずです。

 

つまり、たとえば ・・・

 

9.8.79

9.8.0

 

・・・ というようなバージョン番号を使用することにします。

 

この 9.8.0 という数値を appフォルダ内の build.graidle というファイル内に記述します。

 

具体的には・・・

 

compile 'com.google.android.gms:play-services:10.2.0'

compile 'com.google.android.gms:play-services:9.8.0'

 

・・・と変更するということになりますね。

 

上記のように build.graidle を変更後、アプリをコンパイルしなおすと、古いバージョンの Google Play サービスが搭載されているエミュレータ上でも問題なく実行できるようになります。

 

お試しあれ!

 

 

 

ソフトコミュでは、スカイプによる Java や Androidプログラムの

オンライン家庭教師を受け付けています。

料金は30分2,000円から。

ネット検索しながら何日も悩んだ問題が、たった30分で解決すると大好評です!

興味のある方はソフトコミュのホームページからご連絡ください!

 

 

 

 

| SoftCommu | Android | 14:40 | comments(0) | - |
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
+ 人気の記事
1位: ズバリ、ラムダ式 (Lambda)とは何か? それを使うと何がうれしいのか?

2位: Android エミュレータが起動しない場合の復旧手順

3位: Android Studio で "SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable" と表示される問題の原因と対応策

4位: Android 7.0 から Intent の getSerializableExtra() が使えなくなってしまいました!

5位: エミュレータの Google Play Services のバージョンが古いために Google Maps などを使用したアプリが動作しない場合の対応策

6位: Proguard を使用してリリース用APKを出力しようとした際にエラーになるケースの対応策

7位: OneDrive でオフィス文書が同期できなくなるケースの対応策

8位: Java で Firebase を使う方法のまとめ。

9位: Arduino の開発環境に ZIP形式のライブラリをインストールできない場合の対処方法

10位: Bitbucketから、指定した時点でのファイルをすべてまとめて zip でダウンロードする方法

11位: Android Studio で2台のパソコンを行き来しながら開発作業をする方法

12位: AWS (Amazon Web Service) で動作している WEBアプリを SSL対応(HTTPS対応)にする

13位: AWS (Amazon Web Service) の公式ドキュメントで 「HTTPS を終了する」とはどういう意味か?

14位: エクリプスでテキストエディタの背景色を黒っぽくしたらデバッグ中にどの行にいるのかわからなくなった場合の対応策

15位: 任意のレジストラで取得したドメインのSSL認証を AWS で無料で取得し、Elastic Beanstalk の WEBアプリを https で公開するまでの手順まとめ

16位: マイクロソフトの API仕様変更に伴う 「OneDrive API活用術」のサンプルコードの修正のお知らせ

+ ARCHIVES
+ CATEGORIES
+ MOBILE
qrcode
(C) 2016 SoftCommu All Rights Reserved.