Langkah saya:
- mendapat kode SHA1 dari debug.keystore
- buat aplikasi di konsol google apis
- mengaktifkan google map api v2
- masukan SHA1; my.package.name
- dapatkan kunci API
membuat file AndroidManifest:
<permission android:name="my.package.name.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="my.package.name.permission.MAPS_RECEIVE"/> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <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"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_HERE" /> <activity android:name="MyActivity" 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> </manifest>
membuat tata letak
- letakkan "google-play-services.jar" ke libs
Setelah kompilasi, saya mengalami crash:
ERROR/AndroidRuntime(10182): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
at android.app.Activity.onCreateView(Activity.java:4716)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
at android.app.Activity.setContentView(Activity.java:1881)
at com.example.gm2.MyActivity.onCreate(MyActivity.java:16)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Setelah itu saya mengubah tata letak menjadi:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
dan mengubah MyActivity menjadi
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.map, MapFragment.newInstance());
transaction.commit();
Hasilnya, aplikasi dijalankan, tetapi saya tidak melihat petanya.
Log konsol:
ERROR/Google Maps Android API(10369): Authorization failure.
Jawaban:
Langkah-langkahnya :
android.library.reference.1=google-play-services_lib
YOUR_PROJECT/proguard-project.txt
.
Sekarang Anda siap untuk membuat aplikasi Google Map Anda sendiri dengan menggunakan Google Map API V2 untuk Android.
Jika Anda membuat aplikasi dengan min SDK = 8, gunakan pustaka dukungan android v4 + SupportMapFragment sebagai ganti MapFragment.
sumber
to enable "Google Maps Android API v2"
-langkah memecahkan masalah saya.Juga periksa posting ini: Kode Sampel Google Map Android Api V2 tidak berfungsi , jika Anda benar-benar yakin Anda melakukan langkah-langkah yang benar kemudian ikuti jawaban kedua, otentikasi disimpan di suatu tempat, coba hapus instalan aplikasi secara manual (seperti yang Anda lakukan dengan aplikasi normal) lalu "Jalankan" lagi proyek tersebut
sumber
bin
dangen
. Bersihkan, bangun kembali, dan kredensial yang di-cache diperbarui.Karena saya hanya membuang banyak waktu untuk mengaktifkan API, saya akan mencoba memberikan validasi langkah demi langkah untuk Map API v2:
Langkah 1: Ajukan permohonan untuk kunci API Anda
Jika Anda tidak terbiasa dengan konsol Google API, baca jawaban yang sangat bagus dari Rusfearuth di atas.
Langkah 2: Periksa Anda SHA Hash (dalam hal ini saya menggunakan kunci debug dari eclipse):
Di mesin Windows, masuk ke direktori pengguna Anda pada prompt perintah:
Anda akan mendapatkan sesuatu seperti:
Kemudian lihat nama paket Anda dari aktivitas peta, misalnya com.example.mypackagename
Gabungkan ini dan periksa dengan setelan Anda di konsol Google API:
di mana Anda mendapatkan kunci API Anda:
Langkah 3. Manifestasikan meta data
Periksa apakah meta-data ada dan berisi kunci yang benar. Jika Anda merilis aplikasi, Anda memerlukan kunci yang berbeda.
Langkah 4. Fitur manifes:
Anda memerlukan entri ini karena API peta memerlukan beberapa dukungan grafik:
Jangan khawatir, 99,7% perangkat mendukung ini.
Langkah 5. Perpustakaan manifes:
Tambahkan perpustakaan google.
Langkah 6. Izin manifes:
Periksa nama paket dua kali: com.example.yourpackage
Tambahkan izin berikut:
Izin berikut ini opsional dan tidak diperlukan jika Anda hanya menampilkan peta. Cobalah untuk tidak menggunakannya.
Langkah 7. Sertakan fragmen peta ke dalam tata letak Anda:
Jika rilis Anda ke versi Android 2.x, Anda perlu menambahkan dukungan dalam Aktivitas Anda:
Untuk peta: entri untuk bekerja termasuk
dalam layout aktivitas Anda (misalnya LinearLayout).
Dalam kasus saya, saya harus membersihkan proyek setiap kali saya mengubah sesuatu di tata letak. Sepertinya bug.
Langkah 8: Gunakan Eclipse - Project - Clean.
Nikmati!
sumber
Anda perlu menggunakan proyek perpustakaan yang terletak di: ANDROID-SDK-DIRECTORY / extras / google / google_play_services / libproject
Ini akan memperbaiki masalah pertama Anda.
Saya tidak yakin tentang yang kedua, tetapi itu mungkin efek samping dari yang pertama. Saya masih mencoba membuat peta berfungsi di aplikasi saya sendiri :)
sumber
Hari ini saya menghadapi masalah ini. Saya menggunakan Android Studio 2.1.3, windows 10. Sementara debugging berfungsi dengan baik, tetapi jika saya memperbarui ke mode rilis itu tidak berfungsi. Saya menghapus semua kondisi proguard, diperbarui, tetapi ini bukan solusi.
Solusinya terkait dengan struktur proyek. File google_maps_api.xml berbeda antara app \ src \ debug \ res dan app \ src \ release \ res. Saya melakukan copy paste manual dari debug ke folder rilis.
Sekarang berhasil.
sumber
Saya mengikuti sebagian besar, jika tidak semua, saran Gunnar Bernstein yang disebutkan di atas dan masih tidak berhasil. Namun, itu mulai bekerja setelah saya mengikuti sarannya DAN yang berikut ini:
Saya membuat MapActivity baru dengan menggunakan daftar opsi klik kanan Android Studio: New -> Google -> Google Maps Activity
Saya kemudian membuka file google_maps_api.xml yang secara otomatis dihasilkan dan menggunakan tautan yang dinyatakan untuk membuat KUNCI API baru. Saya melakukan semua langkah dan menyimpan kunci baru saya di bawah proyek saya saat ini. Saya kemudian menghapus KUNCI API lama saya yang terdaftar karena tidak lagi diperlukan.
Di bawah file Manifes, saya mengganti nilai API KEY lama dengan pintasan string yang dibuat oleh file XML baru ini:
android:value="@string/google_maps_key
", alih-alih menyatakan KUNCI secara langsung.Terakhir, hapus MapActivity baru, tetapi pertahankan file xml yang telah dibuat dalam proses itu.
Catatan: Dengan membuat API KEY dengan cara ini, kolom Pembatasan, di bawah Kredensial, sekarang menyatakan "Aplikasi Android". Sebelumnya, jika tidak berhasil, kolom menyatakan "Aplikasi Android, 1 API" atau yang serupa. Saya tidak tahu apakah ini membuat perbedaan atau tidak.Catatan: Tidak, itu hanya berarti saya tidak memiliki API khusus yang dipilih untuk kunci API ini (Konsol -> Kunci API -> Batasan kunci -> Batasan API).Catatan: Sepertinya tag meta-data di bawah file Manifes:
telah digantikan oleh:
Saya rasa keduanya dapat digunakan tetapi lebih baik dari awal menggunakan yang terakhir.
Catatan: Nilai yang dinyatakan, dalam file build.gradle, di bawah android -> defaultConfig -> applicationId harus cocok dengan teks Nama paket di bawah halaman Kredensial.
sumber
Solved!!!
Tambahkan saja ini ke file manifes Anda:
Sebagai contoh...
Dan mohon perbarui lib layanan google play Anda ... Buka Window -> Android sdk manager-> perbarui layanan google play ... pasang itu..hapus yang lama dan simpan yang ini. Ambil ini dari ANDROID-SDK-DIRECTORY / extras / google / google_play_services /
Terima kasih..Silakan pilih
sumber
Saya memecahkan kesalahan ini dengan memeriksa nama paket di manifes dan aplikasi
build.gradle
.Dalam manifes:
Saya menggunakan nama paket sebagai:
Dalam app build.gradle:
Setelah berubah menjadi
com.app.triapp
dibuild.gradle
, memecahkan masalah saya.sumber
Saya bermigrasi dari V1 ke V2 dari Google Maps. Saya mendapatkan kegagalan ini saat mencoba menjalankan aplikasi melalui Eclipse. Akar masalah bagi saya adalah menggunakan keystore sertifikat rilis saya daripada keystore debug Android yang digunakan saat Anda menjalankannya melalui Eclipse. Perintah berikut (OSX / Linux) akan memberi Anda kunci SHA1 dari keystore debug:
Jika Anda menggunakan Windows 7, Anda akan menggunakan perintah ini:
Mungkin yang terbaik adalah mencopot pemasangan aplikasi Anda sepenuhnya dari perangkat Anda sebelum mencoba dengan kunci baru karena Android menyimpan cache kredensial keamanan.
sumber
"java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable"
A mengalami kesalahan ini juga, Anda perlu: File -> import -> Kode Android yang Ada Ke Ruang Kerja -> Jelajahi -> Android sdks -> ekstra -> google -> google_play_services -> lib_project -> google_play_services_lib dan OK. Periksa proyek dan Selesai.
Proyek masuk ke Package Explorer. Sekarang masuk ke proyek Anda (dengan kesalahan) -> properti -> Android dan di Perpustakaan klik Tambah ... google_play_services_lib seharusnya ada di sana! tambahkan dan coba lagi :)
sumber
Saya memiliki masalah yang sama tetapi ternyata itu karena saya membuat dua kunci API peta yang berbeda dengan sidik jari SHA-1 yang sama dengan nama paket yang hampir serupa
com.bla.bla
dan yang lainnyacom.bla.bla.something
.sumber
Saya memiliki masalah yang sama persis dan saya hanya perlu mengatur SDK untuk proyek perpustakaan MapsApiV2 ke Android 2.3.3 (API lvl 10)
sumber
Saya memiliki masalah yang sama. Setelah sekitar dua jam googling, mencoba lagi, membuat ulang API Key berkali-kali, dll. Saya menemukan bahwa saya mengaktifkan layanan yang salah di Google APis Console. Saya mengaktifkan Layanan Google Maps API v2 , tetapi untuk Aplikasi Android Anda harus menggunakan Google Maps Android API v2 . Setelah mengaktifkan layanan yang tepat, semuanya mulai bekerja.
sumber
ECLIPSE ANDA MUNGKIN BERUBAH KUNCI SHA1, jadi Anda harus memperbarui kunci google dengan kunci SHA1 baru di sini: https://console.developers.google.com/project/watchful-net-796/apiui/credential Setelah itu, salin kunci baru ke dalam manifes dan muat ulang halaman google ini beberapa kali, dan kunci Anda akan diperbarui, membangun kembali proyek Anda, itu akan berfungsi. P / S: Untuk kesalahan saya, saya menghapus folder .android jadi gerhana regen SHA1.
sumber
Saya mengikuti langkah yang sama yang disediakan di Google Doc tetapi saya mendapatkan kesalahan yang sama. Kemudian saya menyadari bahwa saya menandatangani aplikasi saya dengan app.keystore saya dan kunci SHA yang saya gunakan untuk menghasilkan kunci API adalah kunci debug.
Jadi saya hanya menghapus
signingConfig signingConfig.generic
daribuild.gradle
file dan peta saya mulai berfungsi dengan baik.Semoga ini bisa membantu seseorang.
sumber
Saya menghadapi masalah yang sama.
Jika Anda mengeluarkan api untuk versi rilis aplikasi Anda. Kemudian api itu hanya akan bekerja untuk versi rilis bukan untuk versi debug. Jadi pastikan Anda menggunakan versi rilis di ponsel atau emulator Anda.
sumber
Bagi saya, semuanya berfungsi baik di emulator maupun di perangkat fisik.
Namun, itu berhenti berfungsi untuk saya ketika saya menyiapkan mesin kedua untuk men-debug aplikasi yang sama di emulator dengan level API yang lebih baru.
Saya tidak menyadari bahwa sidik jari untuk mesin itu berubah. Setelah melihat log kesalahan kegagalan otentikasi di Log Perangkat, saya membandingkan sidik jari di Konsol Pengembang Google saya dengan sidik jari di pesan kesalahan. Saat itulah saya melihat perbedaannya. Setelah menambahkan sidik jari baru ke Konsol Pengembang (dikombinasikan dengan nama paket) aplikasi saya mulai bekerja seperti yang diharapkan di emulator pada sistem baru.
Jadi, jika Anda menyiapkan sistem baru, periksa sidik jari Anda lagi!
sumber
SDK for Android
diaktifkan di konsol API.sumber