このアプリは、(Bazaar経由で)Google Play開発者サービスを更新しない限り実行されません


100

新しいGoogle Maps API V2 for Androidをテストしていますが、アプリの起動時に次のメッセージが表示されます。

エラーメッセージを示すMainActivity

これは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プロジェクトも参照しました。ここで何が悪いのですか?

更新

Google Issue Tracker(https://issuetracker.google.com/issues/35822258)の対応するバグは少し前に解決されました。

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

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


あなたはグーグルAPIまたはプレーンAndroidでAVDを使用していますか?
セルヴィン

単純なAndroid、ただし4.1のGoogle APIに切り替えてみたところ、同じです。
soren.qvist

不思議なことに、私はまったく同じ問題をまったく同時に見ています。これまでのところ、Google Play Services APKがエミュレーターにインストールされていないためだと思います。エラーは、アプリがAPKをインストールするためにGoogle Play(ストア)を起動しようとしているためです。それはおそらくデバイス上でうまく動作します。
ガスリース


回答:


42

Google+のAndroid開発者の話し合いによると、エミュレーターで新しいMap APIを実行することは現時点では不可能です。

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

また、実際のデバイスから実行すると、「(Bazaar経由)」の部分が表示されず、更新ボタンでPlayストアが開きます。私はBazaarがAndroidエミュレーターでGoogle Play開発者サービスを提供するためのものであることを想定していますが、まだ準備ができていません...


15
まあ、それは残念です
soren.qvist

最新のGmsCore.apkをエミュレータに直接コピーしてみましたが、それも機能しません。ルート権限を取得されたデバイスからコピーするAPKを正確に知っていれば、おそらく機能します。
James Wald

56

更新

Google Maps API v2が最新のGoogleシステムイメージ(api:19 ARMまたはx86)にインストールされました。
したがって、アプリケーションは新しい画像で動作するはずです。これらのファイルをインストールする必要はありません。

私はエミュレーターの下でAndroid Google Maps V2アプリケーションを実行しようとしていましたが、ついにGoogle Play開発者サービスを実行すると、SDKをGoogle Play開発者サービスのリビジョン4に更新しましたが、エミュレーターはアプリケーションを実行しなくなりました。

これで、トランスフォーマータブレットからエミュレーターを更新する方法がわかりました。(以下のファイルをダウンロードできるため、タブレットは必要ありません。)

Titanium Backupを使用してAsus Eee Pad Transformer(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

それで全部です。


エミュレータがx86でもARMでもかまいません。プラットフォーム:4.2も問題ありません。
Dan Brough

1
developer.android.com/google/play-services/index.htmlによると。デバイスはまた、GL ESバージョン2持つ長いほど(APIレベル8)アンドロイド2.2 Deveicesは十分であるべきである
ヤール

1
それらのファイルをインストールしようとしましたが、adbはファイルが既にインストールされているという失敗メッセージを示しました。再インストールを試みましたが、証明書に一貫性がないと表示されました。どうしたらいいですか?
huong

私はとアンプリインストールされたパッケージすることができたadb uninstall com.android.vendingadb uninstall com.google.android.gms。上記のパッケージをインストールした後、アプリケーションは実行されEGL_emulation: eglSurfaceAttrib not implementedますが、ログに警告メッセージが表示され、アプリケーションにマップが表示されません。これは、エミュレーター/ GPUの問題だと思います。私のGPUはRadeon HD6870、エミュレータでGoogle APIなしでAndroid 4.1.2を実行していました。
dvim 2013年

「EGL_emulation:eglSurfaceAttrib not implement」については、エミュレーションオプションの下で「Use Host GPU」を試してください。
Dan Brough、2013年

39

Androidエミュレーターで新しいgmaps API(Google Maps Android API v2)を構成するのに約1日かかりました。私がインターネットで見つけた方法のどれも、私にとって正しく機能していませんでした。しかし、それでも私はそれをしました。方法は次のとおりです。

  1. 次の構成で新しいエミュレータを作成します。

ここに画像の説明を入力してください

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

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マップをインストールします。Google Playストアからインストールすると、491エラーが発生します。アプリをエミュレータにアップロードし、ローカルでインストールを実行しました。(adbこれをインストールするために使用できます)。アプリへのリンク:

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

グーグルマップ


この方法には、不必要なステップがいくつかあると思います。APKを2つだけインストールして、他の回答の1つから私の方法を試してください...
Nemanja Kovacevic

私はあなたの方法を試しましたが、アプリケーションをsystem / app dirにロードすると、adbは十分な空き容量がないというエラーを生成しました。大量のメモリを備えた新しいエミュレータを作成しても、役に立ちませんでした。エミュレータの他のバージョンでは、メソッドは機能しませんでした。
Paha

1
手順3)では、インストールコマンドはadb install com.google.android.apps.maps-1.apkand adb install com.google.android.gms-2.apkです。
sulai 2013年

そして、あなたがあなたのニーズに合ったバージョンのグーグルプレイサービスを得ることを確認してください。それらはpapktop.com/tag/google-play-services-apkからダウンロードできます。
sulai 2013年

現時点では、常に最新のGoogle Play APKバージョンをインストールしていることを確認してください。現時点では、Google Play v2ではアップデートをインストールできず(厄介な491エラーが発生します)、このアップデートはGoogleマップアプリケーションを実行するために必要です。
Serhiy 2013

29

私がこの質問に2回目の回答をします。これは、最初は機能しなかった解決策が機能するようになり、機能させるための手順を再現できるためです:)

また、Google Playストアの不足が原因であると感じていたため、このリンクこのリンクを組み合わせて、Google Playストアをエミュレータにインストールしてみました。私はいくつかの問題を抱えていましたが、最終的にはGoogle Playストアのインストールに成功し、ランダムアプリをダウンロードしてテストしました。しかし、マップアクティビティは、[更新]ボタンを使用してメッセージを表示し続けました。そのボタンをクリックすると店に連れて行かれますが、「アイテムが見つかりません」というメッセージが表示され、マップはまだ機能しませんでした。その時点で私はあきらめました。

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

とにかく、今はAndroid Google Maps API v2が私のエミュレータで動作しています。これを行う手順は次のとおりです。


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

  • 以下のための装置、 "5.1 '' WVGA(:MDPI 480×800)"を選択します
  • ターゲット、「アンドロイド4.1.2 - APIレベル16」を選択してください
  • 「CPU / ABI」は「ARM」を選択
  • 残りはデフォルトのままにします

これらは私のために働いている設定です。別のものについてはわかりません。


エミュレータを起動します


インストールcom.android.vending-1.apkcom.google.android.gms-1.apkを ADB経由でコマンドをインストール


これで、エミュレータでGoogleマップが機能するはずです。


これが私のブログへのリンクで、私がこの作品を作ろうとしたものの説明が付いています。nemanjakovacevic.net/ blog / 2012/12 /…
Nemanja Kovacevic

残念ながら、Google Play Servicesのリビジョン4では、新しいエラーが発生します。GooglePlayサービスが最新ではありません。2012100が必要ですが、2010110が見つかりました
Ilja S.

3
OK、プレイサービスの4番目のリビジョンがある場合は、@ danbroughの回答を確認し、コメントで指定されたapkをダウンロードします。リンク
Ilja S.

1
これはx86でも機能するため、エミュレーターがよりスピーディーになります。
カフェイン2013年

3

(ドイツ語の)説明を作成しました。基本的に、少なくとも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以上のエミュレーターがあり、さらにインストールすると、ネイティブのGoogleマップアプリを実行することもできます。 com.google.android.apps.maps-1.apk

楽しんで。


2

私はエミュレーターの下で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マップ v2は正常に動作しました。/ system / appに関する他の手順は必要ありませんでした。


1
これらはインストールするファイルです:vending.apkgms.apk
Adil

2

このアプリは、Google Play開発者サービスを更新しない限り実行されません。長い間試してみましたが、地図を取得できませんでした...以下のコメントでGoogle Playサービスを変更しても、空白の画面しか表示されません。


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

次の手順を実行して、これらの問題を解決しました。

  • エミュレーター:

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

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

    ここに画像の説明を入力してください

  • APIキー:

    新しいAPIキーを作成し、Google Map APIキーとSHAキーについて注意深く確認します。

  • Google Playサービス:

    最新のGoogle Play 開発者サービスをダウンロード する必要がありますcom.android.vending 4.8.20.apk

    コマンドプロンプトを使用して、Google Playサービスを実行できます adb install com.android.vending 4.8.20.apk

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

    出力

    ここに画像の説明を入力してください


1
@JJD私はそれをチェックアウトして編集されます。それは動作します。それを指摘してくれてありがとう。
Steve

0

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

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

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

最後に、プロジェクト-> Androidツール-> Androidサポートライブラリに移動します。ライセンスに同意し、インストール後にプロジェクトを実行します。

正常に動作します。



0

Android SDK Managerから、次をインストールします:Extras:Google Play services


0
 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です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.