2013-04-18 236 views
0

我正在創建一個使用谷歌地圖和maven的android應用程序。我把我的pom.xml兩個依賴Android谷歌地圖v2 maven

 <dependency> 
     <groupId>com.google.android.gms</groupId> 
     <artifactId>google-play-services</artifactId> 
     <version>4</version> 
     <type>apklib</type> 
    </dependency> 

    <dependency> 
     <groupId>com.google.android.gms</groupId> 
     <artifactId>google-play-services</artifactId> 
     <version>4</version> 
     <type>jar</type> 
    </dependency> 

的apklib和jar出現在Maven倉庫。(M2 \庫)

main_map.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/mainLay" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

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

</RelativeLayout> 

我把權限和在我的AndroidManifest中使用api鍵的元數據。

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

<uses-permission android:name="com.map.example.permission.MAPS_RECEIVE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permissionndroid:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

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

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

MainActivity

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 

public class MainActivity extends FragmentActivity { 

private GoogleMap map; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_map.xml); 

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 
} 
}  

我得到這個例外

04-18 10:32:37.939: E/AndroidRuntime(21550): FATAL EXCEPTION: main 
04-18 10:32:37.939: E/AndroidRuntime(21550): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable 
04-18 10:32:37.939: E/AndroidRuntime(21550): at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:269) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.Activity.setContentView(Activity.java:1657) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at com.codespring.androidspeed.ui.newui.MainPager.onCreate(MainPager.java:62) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.os.Looper.loop(Looper.java:123) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at android.app.ActivityThread.main(ActivityThread.java:3729) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at java.lang.reflect.Method.invokeNative(Native Method) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at java.lang.reflect.Method.invoke(Method.java:507) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:632) 
04-18 10:32:37.939: E/AndroidRuntime(21550): at dalvik.system.NativeStart.main(Native Method) 

任何人都可以幫我這個?

+0

您是否引用了Google Play服務庫? –

+0

是的。我嘗試在maven項目中使用google-play-services。我把依賴放在pom.xml中,但是我得到了這個錯誤。 – user2294317

+0

我的2分錢:爲什麼你不使用圖書館的版本5? – rciovati

回答

0

我在我的項目中建立了一個maven版本。

下面是相關POM文件:

http://code.google.com/p/android-maps-extensions/source/browse/android-maps-extensions/pom.xml

http://code.google.com/p/android-maps-extensions/source/browse/android-maps-extensions-demo/pom.xml

這是不明確的谷歌地圖API的Android V2,但基於它一個lib。

你是怎麼開始的應用程序?你應該做mvn android:deploy android:run。我發現從Eclipse bug中運行maven(但也許我做錯了什麼)。