web-dev-qa-db-ja.com

このアプリは、Google Play Servicesを更新しない限り実行されません(Bazaar経由)。

Android用の新しいGoogle Maps API V2をテストしています。アプリが起動したときにこのメッセージが表示されます。

MainActivity showing error message

これは4.1エミュレータで動作しています。

これが私のAndroidManifest.xmlファイルです。

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.maptest"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="15" />

    <permission
        Android:name="com.example.maptest.permission.MAPS_RECEIVE"
        Android:protectionLevel="signature"/>
    <uses-permission Android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission Android:name="Android.permission.INTERNET"/>
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>

    <!-- Require OpenGL ES version 2 -->
    <uses-feature
          Android:glEsVersion="0x00020000"
          Android:required="true"/>

    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >

        <activity
            Android:name=".MainActivity"
            Android:label="@string/title_activity_main" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            Android:name="com.google.Android.maps.v2.API_KEY"
            Android:value="##myapikey##"/>

    </application>
</manifest>

ファイルMainActivity.Java:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

ファイルactivity_main.xml

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/map"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        class="com.google.Android.gms.maps.MapFragment"/>
</RelativeLayout>

「更新」をクリックすると、次のスタックトレースでアプリがクラッシュします。

E/Trace(1034): error opening trace file: No such file or directory (2)
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
D/gralloc_goldfish(1034): Emulator without GPU emulation detected.
D/AndroidRuntime(1034): Shutting down VM
W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300)

E/AndroidRuntime(1034): FATAL EXCEPTION: main
E/AndroidRuntime(1034): Android.content.ActivityNotFoundException: No Activity found to handle Intent
  { act=Android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \
  id=com.google.Android.apps.Bazaar flg=0x80000 pkg=com.Android.vending }
E/AndroidRuntime(1034):     at Android.app.Instrumentation.checkStartActivityResult(Instrumentation.Java:1545)
E/AndroidRuntime(1034):     at Android.app.Instrumentation.execStartActivity(Instrumentation.Java:1416)
E/AndroidRuntime(1034):     at Android.app.Activity.startActivityForResult(Activity.Java:3351)
E/AndroidRuntime(1034):     at Android.app.Activity.startActivityForResult(Activity.Java:3312)
E/AndroidRuntime(1034):     at Android.app.Activity.startActivity(Activity.Java:3522)
E/AndroidRuntime(1034):     at Android.app.Activity.startActivity(Activity.Java:3490)
E/AndroidRuntime(1034):     at com.google.Android.gms.internal.c$2.onClick(Unknown Source)
E/AndroidRuntime(1034):     at Android.view.View.performClick(View.Java:4084)
E/AndroidRuntime(1034):     at Android.view.View$PerformClick.run(View.Java:16966)
E/AndroidRuntime(1034):     at Android.os.Handler.handleCallback(Handler.Java:615)
E/AndroidRuntime(1034):     at Android.os.Handler.dispatchMessage(Handler.Java:92)
E/AndroidRuntime(1034):     at Android.os.Looper.loop(Looper.Java:137)
E/AndroidRuntime(1034):     at Android.app.ActivityThread.main(ActivityThread.Java:4745)
E/AndroidRuntime(1034):     at Java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1034):     at Java.lang.reflect.Method.invoke(Method.Java:511)
E/AndroidRuntime(1034):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:786)
E/AndroidRuntime(1034):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:553)
E/AndroidRuntime(1034):     at dalvik.system.NativeStart.main(Native Method)

Google Play Servicesプロジェクトも参照しました。私はここで何をしていますか?

UPDATE

Google issue trackerの対応するバグ( https://issuetracker.google.com/issues/35822258 )は、しばらく前に解決されました。

これで、エミュレータでGoogle Maps Android APIを使用して、この回答で説明されているようにPlayサービスを使用して仮想デバイスを作成できます。

https://stackoverflow.com/a/46246782/5140781

99
soren.qvist

Google+の Android Developers によると、現時点ではエミュレータで新しいMap APIを実行することはできません。

(コメントは昨日23:18のZhelyazko Atanasovからのものです。直接リンクする方法がわかりません)

また、実際のデバイスから実行しても "(via Bazaar)"という部分は表示されず、更新ボタンをクリックするとPlayストアが開きます。 BazaarはAndroidエミュレータ上でGoogle Playサービスを提供することを意図していますが、まだ準備ができていません...

42
nicopico

UPDATE

Google maps API v2が最新のGoogleシステムイメージ(api:19 ARMまたはx86)にインストールされました。
それで、あなたのアプリケーションはちょうど新しいイメージで動作するべきです。これらのファイルをインストールする必要はありません。

私はAndroid Google Maps V2アプリケーションをエミュレータで実行しようとしていましたが、ついにGoogle Play Servicesが実行されるようになると、私のSDKをGoogle Play Servicesリビジョン4に更新しました。

私は今私の変圧器タブレットから私のエミュレータを更新する方法を考え出しました。 (以下のファイルをダウンロードできるので、タブレットは必要ありません。)

Titanium Backupを使って私の Asus Eee Padトランス (TF101)をバックアップしてから、com.Android.vendingとcom.google.Android.gms をつかみました。バックアップからの_ apk _ ファイル。

私はこれらをプラットフォーム4.1.2、APIレベル16、CPU Intel/Atom x86)で構成されたエミュレータにインストールしましたが、私のGoogle Maps V2アプリケーションは再び動作します。

/ system/appに関する他の手順は必要ありませんでした。

私のアプリケーションはGoogle Maps APIのみを使用しています。もちろん、他のGoogle Playサービスを使用している場合はさらに手順が必要です。

最新のGoogle Playサービス用の新しいファイル

以前と同じ手順:任意の CPU / ABI 、Google以外のAPIターゲットを使用して新しいエミュレータを作成します(バージョン10-19で動作)および GPU エミュレーションをオンまたはオフにしてから、ファイルをインストールします。

adb install com.Android.vending-20140218.apk
adb install com.google.Android.gms-20140218.apk

既存のエミュレータをアップグレードする場合は、次の方法で以前のバージョンをアンインストールする必要があります。

adb uninstall com.Android.vending
adb uninstall com.google.Android.gms

それで全部です。

55
Dan Brough

私はAndroidエミュレータで新しいgmap API (Google Maps Android API v2)を設定するのに1日ほどかかりました。私がインターネットで見つけた方法のどれも私のために正しく働いていませんでした。それでも私はやった。方法は次のとおりです。

  1. 次の設定で新しいエミュレータを作成してください。

Enter image description here

他のバージョンでは、必要なアプリケーションをインストールしたときにさまざまなエラーが発生したため、設定できませんでした。

2)エミュレータを起動して以下のアプリケーションをインストールします。

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

次のコマンドでこれを実行できます。

2.1)adb Shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.2)adb Shell chmod 777 /system/app
2.3-2.5)adb Push Each_of_the_3_apk_files.apk /system/app/

APKファイルをダウンロードする へのリンク。私は自分の根ざしたAndroidデバイスからそれらをコピーしました。

3)エミュレータにGoogle PlayサービスGoogleマップをインストールします。私はグーグルプレイストアからそれらをインストールする場合、私はエラー491があります。アプリをエミュレータにアップロードし、インストールをローカルで実行しました。 (これをインストールするにはadbを使うことができます)。アプリへのリンク:

4)これらの手順の後、エミュレータでデモサンプルを正常に実行しました。これがスクリーンショットです。

Google Maps

39
Paha

私はこの質問に2度目に答えています。最初にはうまくいかなかった解決策が今やうまくいくので、うまくいくようにステップを作り直すことができるからです。

私はここでグーグルプレイストアの欠如が原因であるという感覚も持っていたので、私は このリンクこのリンク についてのアドバイスによってエミュレータにグーグルプレイストアをインストールしようとしました=結合しました。いくつか問題がありましたが、最後にGoogle Playストアのインストールに成功し、ランダムアプリをダウンロードしてテストしました。しかし、mapsアクティビティは "Update"ボタンでメッセージを表示し続けました。そのボタンは私を店に連れて行ってくれるでしょう、しかしそこに私は「品物が見つかりません」についてのメッセージを得るでしょうそして地図はまだうまくいきませんでした。その時点で私はあきらめた。

昨日、私は偶然同じテストアプリを起動しました、そしてそれはうまくいきました!私は非常に混乱していましたが、すぐにそれが動作するエミュレータと新しいクリーンなものとの差分を作成し、動作するものに2つのアプリケーションを決定しました:/ data/app /ディレクトリ:com.Android.vending-1。 apkとcom.google.Android.gms-1.apk。これらのサイトからの指示でGoogle Playストアをインストールしていたときに、Phonesky.apk、GoogleServicesFramework.apk、およびGoogleLoginService.apkを別のフォルダ/システム/アプリにプッシュしていたため、これは奇妙なことです。

とにかく、今ではAndroid Google Maps API v2が私のエミュレータに取り組んでいます。これらはこれをするためのステップです:


新しいエミュレータを作成する

  • デバイスには、 "5.1" WVGA(480 x 800:mdpi) "を選択してください。
  • ターゲットには、「Android 4.1.2 - API level 16」を選択してください。
  • 「CPU/ABI」は「ARM」を選択
  • 残りはデフォルトのままにします

これらは私のために働いている設定です。私は違うものを知りません。


エミュレータを起動する


aDBインストールコマンドで com.Android.vending-1.apk and com.google.Android.gms-1.apk をインストールします。


グーグルマップはあなたのエミュレータで動作するはずです。

29

私は (ドイツ語)それを動かす方法 を作成しました。基本的には少なくともAPIレベル9を持ち、Google APIを持たないエミュレータが必要です。それから、根ざしたデバイスからAPKを取得する必要があります。

adb -d pull /data/app/com.Android.vending-2.apk
adb -d pull /data/app/com.google.Android.gms-2.apk

そしてそれらをエミュレータにインストールします。

adb -e install com.Android.vending-2.apk
adb -e install com.google.Android.gms-2.apk

APIレベル14以上のエミュレータがあり、さらにcom.google.Android.apps.maps-1.apkをインストールしている場合は、ネイティブのGoogle Maps Appを実行することもできます。

楽しむ。

3
Kurt Huwig

このアプリは、Google Playサービスを更新しない限り実行されません。私は長い間それを試してみました、それでも私は地図を得ませんでした...私が以下のコメントによって与えられた私のグーグルプレイサービスを修正したとしても、空白のスクリーンだけが現れます..


プレイサービスのマニフェストファイルを確認し、APKファイルcom.google.Android.gmsのバージョンコードを確認してください。以下では、 "3136110"です。これらのAPKファイルをダウンロードしてDOSプロンプトからインストールしますが、インストールの前にターゲットエミュレータを実行します。

package="com.google.Android.gms"
Android:versionCode="3136110"
Android:versionName="3.1.36 (673201-10)

これらのAPKファイルは このリンク から入手しました。

2
user

私はエミュレータの下でAndroid Google Maps v2を実行しようとしていました、そしてそれをする多くの方法を見つけました、しかしそれらのどれも私のために働きませんでした。 LogcatのGoogle Play services out of date. Requires 3025100 but found 2010110にはいつもこの警告があり、エミュレータでGoogle Playサービスをアップデートしたいときに何も起こりませんでした。問題は、com.google.Android.gms APK が私のAndroid SDKのライブラリのバージョンと互換性がないことでした。

これらのファイル "com.google.Android.gms.apk"、 "com.Android.vending.apk"を私のエミュレータと私のアプリにインストールしました Google Maps v2はうまくいきました。/system/appに関する他の手順は必要ありませんでした。

2
Adil

私は以下のステップを実行することによってこれらの問題を解決しました。

  • エミュレータの場合:

    最新のAPI Google APIs(Google Inc.)-API Level 19を使う必要があります。

    スクリーンショット自体に配置されたものの残りの部分を行います。

    enter image description here

  • APIキー:

    新しいAPIキーを作成し、Google Map APIキーとSHAキーについて慎重に確認します。

  • Google Playサービス:

    あなたは最新のグーグルプレイサービスをダウンロードしなければなりません com.Android.vending-4.8.20.apk 。グーグルプレイサービスがうまくいかなかったならそのサイトであなたが名前付きのインターネットでたくさんのサイトを見つけることができることを意味しますcom.Android.vending 4.8.20.apk

    あなたは、コマンドプロンプトadb install com.Android.vending 4.8.20.apkを使って、Google playサービスを実行することができます。

    注:インターネットで最新のバージョンが更新されるため、最新のGoogle Playサービスをダウンロードする必要があります。

    出力

    enter image description here

2
Stephen
 just change it to 

compile 'com.google.Android.gms:play-services-maps:9.6.0'
compile 'com.google.Android.gms:play-services-location:9.6.0'

これは私のために動作します現在のバージョンは10.0.1です

0
jagapathi

私はあなたがエミュレータであなたのアプリをテストすることを可能にし、またライブラリの古いバージョンに戻すことをあなたに要求しないいい解決策を見つけました。 Stack Overflowの質問に対する回答AndroidエミュレータでのGoogle Maps v2の実行 を参照してください。

0

Android SDK Managerから、インストール:その他:Google Playサービス

0
Franck

Androidのプライベートライブラリが原因でADT 22.0.1にアップデートした後、Googleマップサービスが何らかのエラーを出していてアプリがクラッシュしました。それで私は最終的に解決策を見つけました、そしてそれは私のために働きました。

Google Playサービスライブラリをインストールして、google-play-service/libproject/google-play-services_libからhttps://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2bに移動するだけです。それをワークスペースにインポートしてください。 gogole-play-services-libを使用するプロジェクトをクリーンアップしてから再度ビルドし、Project - > Properties - > Java BuildPath)に移動します。 - > "Android Private Libraries、Android Dependencies、google-play-service"を選択してください。

プロパティ自体では、Androidに移動してから任意のバージョンを選択し、[追加]を選択して[google-play-service-lib]を選択し、[適用]を押して最後に[OK]をクリックします。

最後に、プロジェクト - > Android Tools - > Android Support Librariesに行きます。ライセンスに同意し、インストール後にプロジェクトを実行します。

それはうまくいきます。

0
Honey Shah