Android Studio找不到默认活动。

6

我创建了自己的应用程序类之后:

package com.example.bezzabarovaa.myapplication;
import android.app.Application;
import android.content.Context;

/**
 * Created by bezzabarovaa on 04.08.2017.
 */

public class app extends Application {
public static Context context;

@Override public void onCreate() {
    super.onCreate();
    context = getApplicationContext();
}

}

我已经更改了manifest.xml文件(将application更改为app类)。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bezzabarovaa.myapplication">

<app
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    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" />
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>
</app>

我收到了一条消息,错误信息为“运行未命名的应用程序时出错:找不到默认活动”。

如果我在manifest.xml文件中将我的类app改回application,一切都正常了。 问题出在哪里呢? 谢谢。


你的Activity在哪里? - SripadRaj
你怎么能认为更改标签名称不会导致程序出错呢? - Tim
2
你不能更改标签名称!你应该使用 <application android:name=".app"> 并遵循 Java 准则,其中类名应为 CamelCase(在你的情况下不是 app,而是 App)。 - shimatai
8个回答

8
这个<app应该是<application,你需要在这里指定你自定义的应用程序:
<application android:name=".app" ...

请查看 文档,其中“name”部分说明如下:

应用程序所实现的 Application 子类的完全限定名。当应用程序进程启动时,在任何应用程序组件之前都会实例化此类。子类是可选的;大多数应用程序不需要。如果没有子类,则 Android 使用基本 Application 类的实例。

完整的示例(包括您的代码):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bezzabarovaa.myapplication">

<application
    android:name=".app"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    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" />
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>
</application>
</manifest>

4
通过点击“与Gradle文件同步项目”解决。

1
我之前遇到了同样的问题,是在将默认活动更改为其他活动后出现的。
解决方法是:使缓存无效并重新启动Android Studio: 文件 -> 使缓存无效 / 重新启动... 然后点击使其无效并重新启动

1
使用以下代码片段。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bezzabarovaa.myapplication">

<application
    android:name=".app"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    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>”,它就可以正常工作。这恰恰是你在这里推荐的。 - Cody Gray
1
@CodyGray;提问者的代码没有包含android:name =“。app”部分,而这个答案(和其他答案)包含它。 - 0xDEADC0DE

0

你可以通过进入“编辑配置”菜单(按下“Shift”键三次,输入“编辑配置”)来让Android Studio不再抱怨,然后将启动选项>启动改为“无”。

我可能会添加一个通用的活动,包含说明,以避免任何困惑。


0

在你的清单应用标签中添加以下行

<application
    android:name=".app"
    ...
     </application>

2
这段代码是如何解决提问者的问题的?他已经说过,如果将其改回 <application>,它就可以正常工作。这正是你在这里推荐的。 - Cody Gray

-1
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.bluetoothlegatt">

    <uses-feature
        android:name="android.hardware.bluetooth_le"
        android:required="false" />

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.Light">
        <activity
            android:name="com.example.android.bluetoothlegatt.DeviceScanActivity"
            android:icon="@drawable/app_icon"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.android.bluetoothlegatt.DeviceControlActivity" />

        <service android:name="com.example.android.bluetoothlegatt.BluetoothLeService" />
    </application>

</manifest>

2
至少给你的答案一些定义,不加描述就留下代码会很混乱。 - Akshay Paliwal
检查意图过滤器中是否包含 "<category android:name="android.intent.category.LAUNCHER" />"。 - HARI HARAN
目前来看,这是一个质量较差的答案。请提供代码解释,并可能强调您解决的具体问题。 - Janis F

-1

我通过以下步骤解决了同样的问题:

关闭Android Studio

从以下位置删除:

C:\Users\你的用户名.android/log 和 gradle 文件夹

C:\Users\你的用户名.gradle

从C:\Users[你的用户名]中删除

重新启动计算机并运行Android Studio(需要一些时间进行重建)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接