1. 程式人生 > >解決R.java無法自動生成

解決R.java無法自動生成

在網上搜索了很多相關內容,解決辦法無非就有幾個:

1.project->clean  然後 build  automatically

2.adt 出問題,讓從新安裝

3.資原始檔編碼有錯

第一個方法很簡單,但是無效。

第二個方法我排除了,新建一個android工程,clean再build是能夠生成R.java的。

第三個方法排除,因為我之前是能夠編譯的通過的。

實在想不出辦法了,決定看一看problem中的錯誤,全都是R資源無法找到的錯誤。

這時是使用build  automatically自動編譯的。在不斷嘗試中,將工程clean後,取消自動編譯,手動編譯,發現第一個錯誤報出了Error executing aapt: Return code -1073741819(以下簡稱aapt錯誤)。(手動編譯才出現錯誤的可能原因是之前有編譯通過過,在新增程式碼後出現問題,再編譯時就不檢測編譯過的東西了)

然後在網上搜相關內容,內容大部分與下面連線內容相同。

受原文啟發,最終發現,我的錯誤原因是在res->menu中存在某個xml檔案,內容如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.PwdModifyActivity" >


    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never"/>


</menu>

原文中提到是由於@+id導致的,於是我刪除了@+id行,aapt錯誤確實是不存在了,但是R.java檔案還是無法自動生成,考慮到這個xml檔案是在使用eclipse建立activity的時候自動生成的,由於我沒有使用menu功能,所以直接刪除掉這個檔案,結果就OK了。但是根本原因還是不知道。

後來我又把檔案拷貝回去後測試,如果一直保持先clean再手動編譯,刪除掉item的所有內容就能編譯成功,如果是clean後自動編譯的,就會無法生成R.java,但是aapt錯誤會消失。

希望對遇到同樣問題的朋友帶來幫助。