Android開發中遇到的問題(二)——新建android工程的時候eclipse沒有生成MainActivity和layout佈局
最近由於工作上的原因,開始學習Android開發,在入門的時候就遇到了不少的坑,遇到的第一個坑就是"新建android工程的時候eclipse沒有自動生成MainActivity和layout佈局”,專案的建立過程如下圖所示:
展開HelloAndroid專案,可以看到建立好的專案的目錄結構,如下圖所示:
我的專案是採用的是官方集成了ADT的Eclipse(adt-bundle-windows-x86_64-20140702)建立的,建立專案時選擇的是【Blank Activity】,結果生成的專案的目錄結構就成了如上圖所示的樣子,正常情況下,Eclipse會在src目錄下建立一個名字為me.gacl.helloandroid的包,然後裡面會有一個MainActivity.java的檔案,然後layout資料夾中會有一個activity_main.xml檔案,但是現在這兩個都沒有生成。由於HelloAndroid專案中沒有可執行的Activity,那麼直接執行HelloAndroid專案是無法執行的,如下圖所示:
在Eclipse中執行Android專案,操作步驟如下圖所示:
執行會在Console打印出 "No Launcher activity found!",並且模擬器也不執行,如下圖所示:
下面說一下"No Launcher activity found!"錯誤,叫Android的專案中都會有一個AndroidManifest.xml配置檔案,如下圖所示:
我們看一下AndroidManifest.xml裡面的程式碼,如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="me.gacl.helloandroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > </application> </manifest>
可以看到,裡面沒有配置啟動項,原因是因為Eclipse在建立專案時沒有幫我們自動生成MainActivity.java和activity_main.xml檔案,這應該是Eclipse在建立【Blank Activity】的bug,在<application></application>中少了這段程式碼
<activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
其中.MainActivity就是你的專案的主Activity,所以凡是遇到"No Launcher activity found!"錯誤,那麼絕對是AndroidManifest.xml檔案中沒有配置啟動的主Activity
二、新建android工程的時候eclipse沒有生成MainActivity和layout佈局的解決辦法
解決辦法:在建立專案時把【Blank Activity】換成【Empty Activity】就可以解決上述所說的問題!
刪除HelloAndroid專案,重新建立,前面的建立步驟都一樣,就是到【Create Activity】時選擇【Empty Activity】,如下圖所示:
很多視訊教程在【Create Activity】這一步時選擇的都是【Blank Activity】,但是經過我實踐證明,【Create Activity】時這一步時如果選擇的是【Blank Activity】,那麼創建出來的Android專案就會出現"新建android工程的時候eclipse沒有自動生成MainActivity和layout佈局”的問題,也就是沒有生成MainActivity.java和activity_main.xml檔案,缺少了MainActivity的Android專案是無法執行的,執行時就會出現上述所說的"No Launcher activity found!"錯誤。所以到了這一步千萬要注意,【Create Activity】這一步時選擇的是【Empty Activity】,而不是【Blank Activity】。這或許和我自身使用的Eclipse版本有關係,我使用的採用的是官方集成了ADT的Eclipse(adt-bundle-windows-x86_64-20140702),而有些版本的Eclipse在【Create Activity】這一步時選擇【Blank Activity】是可以正常生成MainActivity和layout佈局的,反正建立專案到【Create Activity】這一步時,如果自身使用的Eclipse版本在【Create Activity】這一步時選擇【Blank Activity】可以正常生成MainActivity和layout佈局的話,那麼【Create Activity】就可以選擇【Blank Activity】作為建立模板,如果不行,那麼【Create Activity】就選擇【Create Activity】作為建立模板,反正我們的目的就是希望Eclipse自動幫我們生成MainActivity和layout佈局,哪一種模板可以做到就選擇哪一種。
點選【Finish】按鈕完成建立,這樣建立的android專案就會自動生成MainActivity.java和activity_main.xml檔案,如下圖所示:
我們看看AndroidManifest.xml中的程式碼:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="me.gacl.helloandroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
在<application></application>中多了這段程式碼
<activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
我們直接執行建立的Android專案,如下圖所示:
執行Android應用時,是需要在模擬器上面執行的,到這一步時首先是要建立一個模擬器的,不過在Eclipse中建立模擬器時啟動要花很長時間,剛好我手頭上有一臺臺電的平板電腦,可以用於測試,因此就直接使用真機測試了,如下圖所示:
在平板電腦中的執行結果如下:
平板電腦的桌面上也顯示出了我們安裝部署上面的HelloAndriod應用的圖示,如下圖所示: