0

AndroidでGoogleマップAPI v2に取り組んでいます。

MapExample.java コード

 public class MapExample extends FragmentActivity {  
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);             
}

main.xml コード

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

マニフェスト ファイル コード

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<uses-feature android:glEsVersion="0x00020000" 
                android:required="true" />

<permission
    android:name="com.example.android.mapexample.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>

                                                                                                                                                                                                                                                                         <uses_permission                                                                                 android:name="com.example.android.mapexample.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission  android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />    
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />




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

    <meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="My API_KEY"/>

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

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


</application>

このコードをエミュレーターで実行しています。エミュレーターにメッセージが表示され、LogCat に警告が表示されます。

メッセージ: 一部のアプリケーションが依存している Google Play サービスは、お使いのデバイスではサポートされていません。[OK] ボタンについては、製造元にお問い合わせください。警告: Google Play 署名が無効です。

そのボタンをクリックするたびにエラーが発生します

03-02 13:17:30.746: D/AndroidRuntime(905): Shutting down VM
03-02 13:17:30.746: W/dalvikvm(905): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-02 13:17:30.776: E/AndroidRuntime(905): FATAL EXCEPTION: main
03-02 13:17:30.776: E/AndroidRuntime(905): java.lang.NullPointerException
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1409)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivityForResult(Activity.java:3351)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivityForResult(Activity.java:3312)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivity(Activity.java:3522)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.Activity.startActivity(Activity.java:3490)
03-02 13:17:30.776: E/AndroidRuntime(905):  at com.google.android.gms.internal.e$2.onClick(Unknown Source)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.view.View.performClick(View.java:4084)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.view.View$PerformClick.run(View.java:16966)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.os.Handler.handleCallback(Handler.java:615)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.os.Handler.dispatchMessage(Handler.java:92)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.os.Looper.loop(Looper.java:137)
03-02 13:17:30.776: E/AndroidRuntime(905):  at android.app.ActivityThread.main(ActivityThread.java:4745)
03-02 13:17:30.776: E/AndroidRuntime(905):  at java.lang.reflect.Method.invokeNative(Native Method)
03-02 13:17:30.776: E/AndroidRuntime(905):  at java.lang.reflect.Method.invoke(Method.java:511)
03-02 13:17:30.776: E/AndroidRuntime(905):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-02 13:17:30.776: E/AndroidRuntime(905):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-02 13:17:30.776: E/AndroidRuntime(905):  at dalvik.system.NativeStart.main(Native Method)

どうすればこれを修正できますか?

4

4 に答える 4

3

ここのスタック オーバーフローに関する投稿の 1 つで、2 つのファイルのファイル セットを見つけました。

com.android.vending.apk

と:

com.google.android.gms.apk

ここに私が自分用に保存したリンクがあります:

http://www.filedropper.com/comandroidvending-1

http://www.filedropper.com/comgoogleandroidgms-1

また:

https://www.dropbox.com/s/u3blse4z3l2et96/com.google.android.gms-6413100ccfca460007fdc988b1363db8.apk

https://www.dropbox.com/s/8jiban3pq2cgkvo/com.android.vending-108b71f4793186b8fd1768a9cd19bbd5.apk

どちらが機能しているかは覚えていませんが、どちらかは確実に機能します。

あなたがすべきことは、次のプロパティで AVD を作成することです。

ここに画像の説明を入力

それを起動し、起動が完了したら、コマンド プロンプトを開き、これら 2 つのファイルが配置されているフォルダーに移動し、install コマンドを使用して avd にインストールします。

例:

c:\Users\Downloads\adb インストール com.android.vending.apk

両方のファイルをインストールして成功メッセージを受け取ったら、エミュレータを再起動し、この AVD でマップ アプリケーションを実行しようとすると、動作するはずです。

アップデート:

これは私が使用し、スクリーン ショットに示されている構成の 2 つのワークステーションで動作するファイルです。それらを試して、感想を教えてください。

http://www.mediafire.com/download.php?pxpjfkveemq29qk

http://www.mediafire.com/download.php?zn8wna5wf4ek5le

于 2013-03-02T18:06:35.417 に答える
1

エラー メッセージにあるように、Google Play Services が必要ですが、これはエミュレーター (および Google Play ストアを持たないデバイス (Amazon Kindle など) では利用できません) では利用できません。電話でテストする必要がありますが、ハックもあります

于 2013-03-02T08:57:08.720 に答える
0

Androidの公式ドキュメントによると、エミュレータでGoogleマップv2をテストすることはできません。そのため、GooglePlayがインストールされたAndroidデバイスが必要になります...

于 2013-03-02T09:11:44.370 に答える
0

私はそれを機能させる方法(ドイツ語)の説明を作成しました:

http://linuxchef.blogspot.de/2013/05/google-maps-api-v2-im-android-emulator.html

基本的に、API レベル 9 以上で Google API を含まないエミュレータが必要です。次に、ルート化されたデバイスから APK を取得する必要があります。

adb -d プル /data/app/com.android.vending-2.apk adb -d プル /data/app/com.google.android.gms-2.apk

エミュレーターにインストールします。

adb -e com.android.vending-2.apk をインストール adb -e com.google.android.gms-2.apk をインストール

API レベル 14 以上のエミュレーターがあり、さらに com.google.android.apps.maps-1.apk をインストールすると、ネイティブの Google マップ アプリを実行することもできます。

楽しむ。

于 2013-05-08T05:52:54.683 に答える