Error running app:Default Activity not found

問題描述

最近在使用Android Studio編譯的時候,遇到一個這樣的錯誤:

Error running app:Default Activity not found

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


app顯示紅叉

導致了在運行代碼時無法正常啟動。

解決方法

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


    AndroidManifest.xml
  2. 重新啟動,問題解決

原因分析

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>放開。

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

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

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