2013-02-13 311 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