마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Google Map v2 오류 문의

0 추천
08-29 17:13:23.725: E/AndroidRuntime(24707): java.lang.NoClassDefFoundError: com.ercompany.minggle.android.apt.activity.general.MapDialogActivity
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at com.ercompany.minggle.android.apt.activity.MainActivity.onClick(MainActivity.java:57)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at android.view.View.performClick(View.java:4223)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at android.view.View$PerformClick.run(View.java:17275)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at android.os.Handler.handleCallback(Handler.java:615)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at android.os.Handler.dispatchMessage(Handler.java:92)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at android.os.Looper.loop(Looper.java:137)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at java.lang.reflect.Method.invoke(Method.java:511)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
08-29 17:13:23.725: E/AndroidRuntime(24707): 	at dalvik.system.NativeStart.main(Native Method)

원래 잘 됬던 부분인데 갑자기 이런 오류가 발생하네요 .. 라이브러리도 정상등록이고 manifest 부분도 다 등록이 되어있는대 검색해도 다들 lib 추가나 이미 다 확인한부분만 말씀해주시구요.. 뭐가문젠지 전혀 감이 안옵니다.ㅠ

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp" android:layout_height="500dp"
    android:orientation="vertical" android:layout_gravity="center" >
    
    <fragment android:id="@+id/map_mapview"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:name="com.google.android.gms.maps.SupportMapFragment" />
    
	<Button android:id="@+id/map_btn_close"
	    android:layout_marginLeft="7dp" android:layout_marginTop="7dp"
	    android:layout_width="wrap_content" android:layout_height="wrap_content"
	    android:layout_alignParentLeft="true" android:background="@drawable/btn_dialog_close"/>

</RelativeLayout>

xml은 단순하구요 . 

package com.ercompany.minggle.android.apt.activity.general;

import java.util.ArrayList;

import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import com.ercompany.minggle.android.apt.R;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapDialogActivity extends FragmentActivity implements android.location.LocationListener{
	private GoogleMap gMap;
	private LocationManager locationManager;
	
	private ArrayList<LatLng> locations = new ArrayList<LatLng>();
	private String bestProvider;
	private Button btn_close;
	
	@Override
	protected void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		setContentView(R.layout.dialog_map);
		btn_close = (Button)findViewById(R.id.map_btn_close);
		
		Intent intent = getIntent();
		
		locations = intent.getParcelableArrayListExtra("locations");
		
		GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);		
		locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
		bestProvider = locationManager.getBestProvider(new Criteria(), true);
		
		if(bestProvider != null){
			locationManager.requestLocationUpdates(bestProvider, 0, 0, this);
			setUpMapIfNeeded();
		}
		
		btn_close.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				finish();
			}
		});
	}
	private void setUpMapIfNeeded(){
		if(gMap == null){
			gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map_mapview)).getMap();
			for(LatLng loc: locations) {
				CameraPosition cp = new CameraPosition.Builder().target(loc).zoom(12).build();
				MarkerOptions marker = new MarkerOptions().position(loc).title("도착지").snippet("도착지 메세지"); // 마커 표시
				gMap.moveCamera(CameraUpdateFactory.newCameraPosition(cp));
				gMap.addMarker(marker);
			}
		} if(gMap != null) {
			setUpMap();
		}
	}
	private void setUpMap(){
		gMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
		gMap.setMyLocationEnabled(true);
		gMap.getMyLocation();
		gMap.getUiSettings().setCompassEnabled(false);
		gMap.getUiSettings().setZoomControlsEnabled(false);
		gMap.getUiSettings().setRotateGesturesEnabled(false);
	}
	@Override
	protected void onResume() {
		super.onResume();
		setUpMapIfNeeded();
	}
	
	@Override
	protected void onPause() {
		super.onPause();
		locationManager.removeUpdates(this);
	}

	@Override
	public void onProviderDisabled(String provider) {
		
	}
	@Override
	public void onProviderEnabled(String provider) {
		
	}
	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		
	}
	@Override
	public void onLocationChanged(Location location) {
		
	}

}

자바코드입니다..

원인이 보이시는분 도움좀 부탁드립니다.. 완전 초급 개발자가 밑에서 배우면서 삽질하는대 감이 안옵니다 .ㅠ

구기웅 (1,110 포인트) 님이 2013년 8월 29일 질문

2개의 답변

0 추천
또 같은 대답일지도 모르겠지만 이클립스의 빌드페스 프로퍼티에서  lib의 사용이 체크가 되어있는지 한번 확인해 보세요.

private library에 체크가 되어 있지 않으면 인식이 안되는 경우가 상위 sdk에서는 발생합니다.
안들오 (790 포인트) 님이 2013년 8월 29일 답변
0 추천
라이브러리가 2개가 겹쳐 있었네요 프로젝트 2개를 합쳤더니 ..

둘다 삭제하고 상위프로젝트에 재등록시 정상 구동 되네용 ㅠ
구기웅 (1,110 포인트) 님이 2013년 8월 29일 답변
...