問題描述
最近在使用Android Studio編譯的時候,遇到一個這樣的錯誤:
Error running app:Default Activity not found
表現(xiàn)形式如下:

導致了在運行代碼時無法正常啟動。
解決方法
-
在AndroidManifest.xml文件中,增加如下代碼:
AndroidManifest.xml 重新啟動,問題解決
原因分析
Error running app:Default Activity not found
通過提示我們可以看到,是沒有發(fā)現(xiàn)默認的Activity
由于是在啟動時報的錯,所以這個默認的Activity指的肯定是app啟動的第1個活動。而啟動活動的順序又是在AndroidManifest.xml中定義的,所以查看AndroidManifest.xml文件對第1個活動的配置
通過AndroidManifest.xml文件,在第1個活動中沒有配置<category>,所以在啟動的時候,就找不到啟動的app,造成Default Activity not found
那么category屬性到底是什么意思,它對于activity來說是必須的嗎?繼續(xù)往下看...
知識點擴展
根據(jù)Android開發(fā)者中文網(wǎng)站的描述,AndroidManifest.xml的文件結(jié)構(gòu)示例如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<uses-configuration />
<uses-feature />
<supports-screens />
<compatible-screens />
<supports-gl-texture />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>
<activity-alias>
<intent-filter> . . . </intent-filter>
<meta-data />
</activity-alias>
<service>
<intent-filter> . . . </intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission />
<meta-data />
<path-permission />
</provider>
<uses-library />
</application>
</manifest>
其中只有 <manifest> 和 <application> 元素是必需的,它們都必須存在并且只能出現(xiàn)一次。其他大部分元素可以出現(xiàn)多次或者根本不出現(xiàn)。但清單文件中必須至少存在其中某些元素才有用。
而我們關(guān)注的<category>,它是包含在<intent-filter>中的。<intent-filter>中<action>是必須存在的,<category>和<data>可根據(jù)需要進行添加。
<category>中android:name屬性的值,一般為android.intent.category.LAUNCHER,表示:決定應用程序是否顯示在程序列表里。
因為在生產(chǎn)環(huán)境上這個應用是連接到華為平臺的,所以代碼中將<category>注釋了,通過華為平臺來啟動MainActivity。而測試環(huán)境中沒有華為平臺的環(huán)境,所以需要將<category>放開。
