Error running app:Default Activity not found

問(wèn)題描述

最近在使用Android Studio編譯的時(shí)候,遇到一個(gè)這樣的錯(cuò)誤:

Error running app:Default Activity not found

表現(xiàn)形式如下:


app顯示紅叉

導(dǎo)致了在運(yùn)行代碼時(shí)無(wú)法正常啟動(dòng)。

解決方法

  1. 在AndroidManifest.xml文件中,增加如下代碼:


    AndroidManifest.xml
  2. 重新啟動(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)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容