4

의 단계를 따라 새로운 Google지도 Android v2 API를 사용했지만 시작시 응용 프로그램이 중단되는 오류가 발생했습니다.Google지도 Android v2가 ActionBarSherlock Fragment Activity와 (과) 함께 작동하지 않습니다.

내 Android 응용 프로그램에서 Maven을 사용하고 있으므로 AndroidManifest 및 POM 파일도 게시하고 있습니다.

제발 도와 주실 수 있습니까?

12-22 14:35:41.319: ERROR/AndroidRuntime(8565): 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.SupportMapFragment.onInflate(Unknown Source) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:269) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) at android.view.LayoutInflater.inflate(LayoutInflater.java:408) at android.view.LayoutInflater.inflate(LayoutInflater.java:320) at android.view.LayoutInflater.inflate(LayoutInflater.java:276) at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:853) at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262) at br.com.myapp.activities.MainActivity.onCreate(MainActivity.java:19) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3687) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) at dalvik.system.NativeStart.main(Native Method)

AndroidManifest를 :

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="br.com.myapp" android:versionCode="1" android:versionName="2.0.0"> 
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"></uses-sdk> 
<uses-feature 
    android:name="android.hardware.touchscreen" 
    android:required="false" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > 
</uses-permission> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > 
</uses-permission> 
<permission android:name="br.com.myapp.permission.MAPS_RECEIVE" 
      android:protectionLevel="signature" /> 
<uses-permission android:name="br.com.myapp.permission.MAPS_RECEIVE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 


<application android:label="@string/app_name" android:icon="@drawable/rp_icon" 
      android:logo="@drawable/logo_actionbar" android:theme="@style/Theme.Sherlock.Light.DarkActionBar"> 

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

    <activity android:name=".activities.MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 
</application> 
    </manifest> 

의 pom.xml :

<?xml version="1.0" encoding="UTF-8"?> 

http://maven.apache.org/maven-v4_0_0 여기

는 로그 캣에서 오류 발생 .xsd "> 4.0.0 br.com.myapp myapp-andro ID 2.0.0 APK myapp와는

<properties> 
    <platform.version>4.2 
     </platform.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
     <version>4.2</version> 
    </dependency> 
    <dependency> 
     <groupId>com.loopj.android.http</groupId> 
     <artifactId>async-http-client</artifactId> 
     <version>1.4.2</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>support-v4</artifactId> 
     <version>r7</version> 
    </dependency> 
    <dependency> 
     <groupId>com.actionbarsherlock</groupId> 
     <artifactId>actionbarsherlock</artifactId> 
     <version>4.2.0</version> 
     <type>apklib</type> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android.gms</groupId> 
     <artifactId>google-play-services</artifactId> 
     <version>4</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
      <artifactId>android-maven-plugin</artifactId> 
      <version>3.1.1</version> 
      <configuration> 
       <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
       <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
       <resourceDirectory>${project.basedir}/res</resourceDirectory> 
       <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
       <sdk> 
        <platform>10</platform> 
       </sdk> 
       <undeployBeforeDeploy>true</undeployBeforeDeploy> 
      </configuration> 
      <extensions>true</extensions> 
     </plugin> 

     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

답변

2

당신은 Google지도 라이브러리의 전체 소스를 포함나요? 거기에 리소스가 있습니다 (따라서 java.lang.NoClassDefFoundError에 대한 참조 : com.google.android.gms.Ro $ com.google.android.gms.maps.GoogleMapOptions.createFromAttributes (알 수없는 소스)에서 스타일 가능).

google-play-services.jar 파일을 참조하는 것만으로는 충분하지 않습니다. Google Play 서비스 프로젝트의 루트에있는 README.txt 파일을 다시 확인합니다.

+0

필자는 Android 4.2 플랫폼을 Android 컴파일러에서 Google 4.2 API로 전환하고 com.google.android.maps 종속성을 POM.xml에 추가했지만 여전히 동일한 오류가 발생합니다. README 파일에 "이 안드로이드 라이브러리 프로젝트를 IDE 으로 가져와이 프로젝트를 의존성으로 설정했는지 확인하십시오."라는 메시지가 표시되면 Maven을 사용하여 참조 할 수 없다고 가정합니다. 이 올바른지? –

+1

현재 "라이브러리"유형 프로젝트는 단순 .jar로 참조 될 수 없습니다. Play 서비스 lib 프로젝트를 참조하십시오. –

+0

+ 좋은 점. 사람들은 종종 src /를 확인합니다. 소스가 없으며 항아리 만 있습니다. 아무도 res /를 확인하지 않고 그냥 .jar 파일을 복사합니다. 그리고 lib에 res가 필요합니다. 따라서 res/copy 라이브러리 (더 나은 해결책)로 복사하십시오 –

4

내 프로젝트에서 같은 문제가 발견되었습니다. 또한

<!-- google-play-services. --> 
    <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> 

, 의존성 이 com.google.android.maps :
솔루션 빌드 스크립트를 받는다는하는 com.google.android.gms 모두 apklib항아리 2 종속성을 추가하는 것입니다 지도 v2에는 필요하지 않습니다.

관련 문제