之前TeachCourse寫過一篇文章《Eclipse開發專案中紅色感嘆號問題解決辦法》介紹出現紅色歎號的問題解決辦法,這裡出現的錯誤和上面的錯誤有點區別,匯入另一臺電腦中的Android專案時,錯誤只出現在res/values/style.xml,錯誤原因如下:
工具/原料
Android開發工具:Android Studio或Eclipse
Android除錯工具:虛擬裝置或測試手機
一、分析Eclipse新建專案或匯入專案報錯原因
Eclipse新建專案選擇哪個API版本決定專案是否報錯,經過測試選擇的API版本低於23,建立的專案裡面無法生成R檔案,然後MainActivity首先報錯,開啟style.xml檔案,裡面到沒有出現紅色叉叉,如下圖:
在新建Android專案時,MainActivity檔案找不到R檔案,類檔案出現紅色叉叉,原因在gen資料夾找不到R檔案,那為什麼無法生成R檔案呢?TeachCourse寫過一篇文章《Eclipse開發專案中紅色感嘆號問題解決辦法》可以回答這個問題,說明專案某個地方有問題,所以Eclipse才無能為力,無法生成R檔案,那麼出錯的地方在哪?
點選專案“Build Path——Configure Build Path——Android——Is Library”開啟當前Android專案引用的appcompat庫,如果匯入的專案來自另外的Eclipse或另一臺電腦,通常這裡出現紅色叉叉,說明引用的類庫找不到了,如果是因為類庫找不到的錯誤,很好解決,刪除該類庫後,重新匯入自己workspace工作間的appcompat庫即可
顯然,這裡引入類庫沒有問題,第二步appcompat_v7類庫沒有報錯,說明新建Android專案和匯入另一個Android專案到Eclipse工作間中報錯的原因不一樣。很有可能和API版本有關,因為Eclipse新建專案時,只有API 低於23版本才出現這種問題,第一種解決的辦法,在一個建成的Android專案中,更換API 版本,選擇API 23版本,如下圖:
在《Eclipse開發專案中紅色感嘆號問題解決辦法》文章,TeachCourse詳細分析如何重新生成R檔案的方法,執行完成第四步後,點選“Project——>Clean”,意外發現,重新生成了R檔案,原先MainActivity報錯的地方,不再出現紅色的叉叉,專案可以正常的跑起來,如下圖:
二、第二種解決新建Android專案報錯辦法
為什麼選擇了API 23版本出錯了呢?而且,如果TeachCourse開發的專案必須以API 19為編譯版本,那該怎麼辦呢?上面的步驟,大概可以清楚,報錯的原因是當前專案選擇低於API 23版本,專案建立的時候又同時引用了API 23的一些類、樣式,所以無法生成R檔案,MainActivity類出現紅色叉叉,第二種解決的辦法,手動更改引用API 23版本的一些類或樣式,首先去掉appcompat引用,如下圖:
開啟MainActivity,繼承非appcompat_v7 jar包下的Activity,比如:FragmentActivity或Activity,然後刪除MainActivity引用的v7 jar包的類,如下圖:
然後,點選“Project——>Clean”清楚專案,這一步目的是檢查value的style檔案,哪個xml還引用appcompat_v7 jar包的Theme主題,引用v7 Theme的地方出現紅色叉叉,如下圖:
上述這一句話提示錯誤,如果你僅僅是刪除該句話或更改parent屬性值的話,接下來會在values-vxxx其他包中報錯,因為別的包同樣引用該樣式。如果你不嫌棄麻煩的話,每個values-vxxx裡面的樣式都更改或刪掉,也是可以解決問題的。這裡最好,將Theme.AppCompat.Ligh替換成非appcompat_v7 jar包下的Theme,比如:@android:style/Theme.Light,同時刪除menu資料夾下的item選項,如下圖:
注意事項
Android Studio開發不會出現新建專案報錯的問題
Eclipse匯入另一電腦開發中的Android專案,需要更換專案引用的類庫