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

導(dǎo)致了在運(yùn)行代碼時(shí)無(wú)法正常啟動(dòng)。
解決方法
-
在AndroidManifest.xml文件中,增加如下代碼:
AndroidManifest.xml 重新啟動(dòng),問(wèn)題解決
原因分析
Error running app:Default Activity not found
通過(guò)提示我們可以看到,是沒(méi)有發(fā)現(xiàn)默認(rèn)的Activity
由于是在啟動(dòng)時(shí)報(bào)的錯(cuò),所以這個(gè)默認(rèn)的Activity指的肯定是app啟動(dòng)的第1個(gè)活動(dòng)。而啟動(dòng)活動(dòng)的順序又是在AndroidManifest.xml中定義的,所以查看AndroidManifest.xml文件對(duì)第1個(gè)活動(dòng)的配置
通過(guò)AndroidManifest.xml文件,在第1個(gè)活動(dòng)中沒(méi)有配置<category>,所以在啟動(dòng)的時(shí)候,就找不到啟動(dòng)的app,造成Default Activity not found
那么category屬性到底是什么意思,它對(duì)于activity來(lái)說(shuō)是必須的嗎?繼續(xù)往下看...
知識(shí)點(diǎn)擴(kuò)展
根據(jù)Android開(kāi)發(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ù)需要進(jìn)行添加。
<category>中android:name屬性的值,一般為android.intent.category.LAUNCHER,表示:決定應(yīng)用程序是否顯示在程序列表里。
因?yàn)樵谏a(chǎn)環(huán)境上這個(gè)應(yīng)用是連接到華為平臺(tái)的,所以代碼中將<category>注釋了,通過(guò)華為平臺(tái)來(lái)啟動(dòng)MainActivity。而測(cè)試環(huán)境中沒(méi)有華為平臺(tái)的環(huán)境,所以需要將<category>放開(kāi)。
