错误:找不到默认活动,但已声明

时间:2018-12-15 08:45:44

标签: android android-studio kotlin

我遇到了一种奇怪的情况,两次困扰着我。

我的主模块中有清单-igs_main

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

    <application
            android:name=".CommonApplication"
            android:allowBackup="false"
            android:label="@string/app_name"
            android:hardwareAccelerated="true"
            android:networkSecurityConfig="@xml/network_security_config"
            android:theme="@style/AppTheme"
            android:supportsRtl="false"
            tools:replace="android:supportsRtl,android:allowBackup"
            tools:ignore="GoogleAppIndexingWarning, UnusedAttribute, RtlSupport">

        <activity android:name=".auth.view.SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

当我尝试启动我的应用程序时,它看起来像

enter image description here

我得到一个错误:

enter image description here

我尝试直接指定默认活动,但AS表示该活动未在清单中声明。

enter image description here

然后,我尝试Invalidate Caches and Restart AS和Rebuild项目,但它也没有帮助我。

因此,我浪费了所有可能的解决方案。谁知道如何解决?

4 个答案:

答案 0 :(得分:5)

我不知道为什么可以将其链接到此问题,但是此问题的原因来自Kotlin编译器。当我启动Kotlin编译器选项时,我看到了警告,并且在谷歌搜索了几秒钟后,发现了一个此处描述的答案-https://stackoverflow.com/a/50912853/4969827

useProjectSettings更改为true后,一切都可以正常工作!

为防止信息丢失,我将原始代码段粘贴到此处。

<facet type="kotlin-language" name="Kotlin">
  <configuration version="3" platform="JVM 1.6" useProjectSettings="true">
    <compilerSettings />
    <compilerArguments>
      <option name="destination" value="$MODULE_DIR$/build/tmp/kotlin-classes/debug" />
      <option name="noStdlib" value="true" />
      <option name="noReflect" value="true" />
      <option name="moduleName" value="app_debug" />
      <option name="addCompilerBuiltIns" value="true" />
      <option name="loadBuiltInsFromDependencies" value="true" />
      <option name="languageVersion" value="1.2" />
      <option name="apiVersion" value="1.2" />
      ...
    </compilerArguments>
  </configuration>
</facet>

您必须阅读下面的文字

但是问题仍然存在。很少,但是来了。有一天,我正在编辑xml文件,但发现APPT损坏了。因此问题出在SDK中,我将其删除并重新安装。此后一切正常。

答案 1 :(得分:0)

在您的问题中,您明确提到了“我在模块中有清单” ,但是您正在使用igs_main,如下所示:

您需要像下面将其更改为app模块

然后尝试运行代码。

答案 2 :(得分:0)

通常会在您的Activity类不是公开的而是默认的(当您未指定任何访问修饰符时)发生,是public class SplashScreen吗? 如果您不将所有活动分类都设为公开,那么在某些设备上它可能会崩溃。

答案 3 :(得分:0)

当我将清单allowBackuptrue更改为false android:allowBackup="false"时,这发生在我身上,然后我用谷歌搜索找到了这个答案,我发现他也有allowBackup定义为false。现在,当我改回true时,一切正常。看起来很有线,我没有明确的解释。