Поверьте мне, я прошел через как минимум десяток ответов перед публикацией, так как никто из них не помогает мне решить проблему, стоящую перед лицом, эта интеграция google действительно больна.Google map V2 exception NoClassDeffFound
Итак, вот описание проблемы «Показать карту».
и вот что я до сих пор сделал.
- импортировал сервисы Google Play Lib проекта в рабочем пространстве (с помощью Eclipse)
- Добавил этот проект как Lib в моем проекте
- Добавлено требуется разрешение и мета-Infos в manifiest файл
- Полученных собственные APIs ключей и добавил в manifiest
Manifiest.XML
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapdemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="21" />
<permission
android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature" >
</permission>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<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.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCp8z8qSQdO_gFb92iru8Vyr7R7YNQglTo" />
<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>
</manifest>
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:id="@+id/container"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mapdemo.MainActivity" >
</RelativeLayout>
MainActivity.java
пакет com.example.mapdemo;
import com.google.android.gms.maps.MapFragment;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapFragment frag = MapFragment.newInstance();
getFragmentManager()
.beginTransaction()
.add(R.id.container, frag)
.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
и вот за исключение.
11-29 19:05:11.868: E/AndroidRuntime(19653): FATAL EXCEPTION: main
11-29 19:05:11.868: E/AndroidRuntime(19653): Process: com.example.mapdemo, PID: 19653
11-29 19:05:11.868: E/AndroidRuntime(19653): java.lang.NoClassDefFoundError: com.google.android.gms.maps.MapFragment
11-29 19:05:11.868: E/AndroidRuntime(19653): at com.example.mapdemo.MainActivity.onCreate(MainActivity.java:19)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.Activity.performCreate(Activity.java:5248)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.ActivityThread.access$800(ActivityThread.java:139)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.os.Handler.dispatchMessage(Handler.java:102)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.os.Looper.loop(Looper.java:136)
11-29 19:05:11.868: E/AndroidRuntime(19653): at android.app.ActivityThread.main(ActivityThread.java:5086)
11-29 19:05:11.868: E/AndroidRuntime(19653): at java.lang.reflect.Method.invokeNative(Native Method)
11-29 19:05:11.868: E/AndroidRuntime(19653): at java.lang.reflect.Method.invoke(Method.java:515)
11-29 19:05:11.868: E/AndroidRuntime(19653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
11-29 19:05:11.868: E/AndroidRuntime(19653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
11-29 19:05:11.868: E/AndroidRuntime(19653): at dalvik.system.NativeStart.main(Native Method)
Пожалуйста, помогите мне, ребята, я действительно теряю контроль.
Снимок моего проекта Eclipse buildpath и андроид свойства
спасибо, Techfist.
Вы пытаетесь использовать SupportMapFragment вместо MapFragment? –
@HareshChhelana: Поскольку код использует 'Activity', а не' FragmentActivity', 'MapFragment' - соответствующий класс для использования. – CommonsWare
Кажется, что вы, возможно, вручную изменили путь сборки или что-то еще, чтобы JAR с Maps V2 существовал при компиляции, но не был упакован в APK для использования во время выполнения. – CommonsWare