101

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

エラーメッセージを表示する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)

また、GooglePlayサービスプロジェクトについても言及しました。私はここで何が間違っているのですか?

アップデート

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

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

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

4

12 に答える 12

56

アップデート

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

エミュレーターでAndroidGoogleMaps V2アプリケーションを実行しようとしていましたが、最終的にGoogle Playサービスを実行すると、SDKをGoogle Playサービスリビジョン4に更新しましたが、エミュレーターでアプリケーションを実行できなくなりました。

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

TitaniumBackupを使用してAsusEeePad Transformer(TF101)をバックアップし、バックアップからcom.android.vendingファイルとcom.google.android.gmsAPKファイルを取得しました。

プラットフォーム:4.1.2、APIレベル:16、CPU Intel / Atom x86)で構成されたエミュレーターにこれらをインストールすると、GoogleMapsV2アプリケーションが再び機能します。

それがすべてでした../system/appに関する他のステップは必要ありませんでした。

私のアプリケーションはGoogleMapsAPIのみを使用しています。間違いなく、他のGooglePlayサービスを使用する場合はさらに多くの手順が必要です。

最新のGooglePlayサービスの新しいファイル:

以前と同じ手順:任意の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

それで全部です。

于 2012-12-13T22:07:01.200 に答える
42

Google+のAndroidデベロッパーとの話し合いによると、現時点ではエミュレータで新しいMapAPIを実行することはできません。

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

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

于 2012-12-04T10:25:19.363 に答える
39

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

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

グーグルマップ

于 2012-12-07T14:32:09.143 に答える
29

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

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

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

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


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

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

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


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


ADBインストールコマンドを介してcom.android.vending -1.apkcom.google.android.gms-1.apkをインストールします


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

于 2012-12-06T00:19:03.623 に答える
3

私はそれを機能させる方法について(ドイツ語の)説明を作成しました。基本的に、少なくともAPIレベル9を備え、GoogleAPIを備えていないエミュレーターが必要です。次に、ルート化されたデバイスから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

楽しむ。

于 2013-05-08T05:49:16.340 に答える
2

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

これらのファイル「com.google.android.gms.apk」、「com.android.vending.apk」をエミュレーターにインストールしましたが、アプリのGoogleMapsv2は正常に機能しました。/ system/appに関する他の手順は必要ありませんでした。

于 2013-03-11T12:32:23.570 に答える
2

このアプリは、GooglePlayサービスを更新しない限り実行されません。長い間試してみましたが、地図が取れませんでした…下記のコメントでグーグルプレイサービスを変更しても、空白の画面しか表示されません。


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ファイルを取得しました。

于 2013-08-23T13:18:59.047 に答える
2

次の手順でこれらの問題を解決しました。

  • エミュレーターの場合:

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

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

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

  • APIキー:

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

  • Google Playサービス:

    最新のGooglePlayサービス com.android.vending-4.8.20.apkをダウンロードする必要があります。そのサイトでGooglePlayサービスが機能していなかった場合は、インターネットで.という名前のサイトをたくさん見つけることができますcom.android.vending 4.8.20.apk

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

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

    出力

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

于 2014-05-30T13:34:24.063 に答える
0

Androidプライベートライブラリが原因でADT22.0.1にアップデートした後、Googleマップサービスでエラーが発生し、アプリがクラッシュしました。それで私はついに解決策を見つけました、そしてそれは私のために働きました。

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

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

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

それはうまくいくでしょう。

于 2013-06-03T07:06:50.017 に答える
0

エミュレーターでアプリをテストでき、ライブラリの古いバージョンに戻す必要がない優れたソリューションを見つけました。AndroidエミュレータでのGoogleMapsv2の実行に関するStackOverflowの質問への回答をご覧ください。

于 2013-06-11T04:11:52.310 に答える
0

Android SDK Managerから、インストール:Extras:GooglePlayサービス

于 2015-11-21T14:48:03.633 に答える
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です

于 2016-12-03T11:32:20.370 に答える