2013-02-13 312 views
2

我已将Google Play Services作为库项目添加到Intelli-J的Android项目中,但看起来资源仍未被IDE识别。当应用程序试图膨胀地图时,出现以下错误:Intellij IDEA无法识别Android库资源

ERROR/AndroidRuntime(16002): 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) 

这是布局XML中片段的代码。

<fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     map:cameraZoom="13" 
     map:mapType="normal" 
     map:uiCompass="false" 
     map:uiRotateGestures="true" 
     map:uiScrollGestures="false" 
     map:uiTiltGestures="true" 
     map:uiZoomGestures="true" /> 

maps_attrs.xml在谷歌播放项目,<declare-styleable name="MapAttrs"> “MapAttrs” 以红色突出显示。

在Eclipse中编译时,代码的功能正确。

有谁知道如何让IDEA识别资源?

+0

检查库的项目配置正确,并添加到依赖关系为主营项目。 JAR文件,如果库项目应该启用** Export **选项。 [检查此问题](http://youtrack.jetbrains.com/issue/IDEA-96525)了解如何在IDEA中导入无源代码的库项目。如果没有帮助,请分享一个示例项目来重现问题。 – CrazyCoder 2013-02-13 23:40:37

+0

一个示例项目在这里:https://github.com/TheDirtyCalvinist/MapStyleable 据我所知,项目属性中的一切都是正确的。我没有发现类的问题,只是资源属性,在这种情况下,可修改的属性。 – 2013-02-14 16:18:19

+0

看来,Intellij错误地生成了google-play-services R.java文件。当在Eclipse中构建google-play-services库时,R.java会被填写,但不会在Intellij中填写。 – 2013-02-14 17:30:33

回答

0

我能够通过从Android重新安装Google Play服务,在Eclipse中编译它,然后将其重新附加到我的IDEA项目并将google-play-services-lib的R.java输出重定向到一个虚拟目录(在google-play-services模块的Android人脸的编译器选项卡下将R.java输出的目录从'.../gen'更改为'.../_ gen')。我仍然不确定是什么原因造成的。

看起来JetBrains公司将改变在12.1这一行为:http://youtrack.jetbrains.com/issue/IDEA-99045

+0

IDE的当前行为不应该引起任何问题,除非您使用任何外部工具在“gen”文件夹中生成其他文件或处理其内容,因此它看起来像一个错误。我试图从github构建项目,但我还有另外两个运行时错误:“Google Maps Android API仅支持OpenGL ES 2.0和上面的”和“找不到API密钥”。看来我设法修复它们,但在它之后,应用程序正常运行而没有运行时错误。您能否在JetBrains跟踪器中创建问题并将示例项目附加到它? – ekudel 2013-02-15 10:47:25