编译时,Android Manifest 会导致问题阻止其运行?

Posted

技术标签:

【中文标题】编译时,Android Manifest 会导致问题阻止其运行?【英文标题】:When compiling, Android Manifest causes problems preventing it from running? 【发布时间】:2020-08-10 10:29:49 【问题描述】:

我对 android Studio 比较陌生,所以我一直在尝试制作这款笔记应用。

今天早上运行良好,直到我不得不制作菜单来添加注释。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add_note" android:title="Add Note"  ></item>

这是为了创建一个菜单,我可以在其中添加注释和内容,但是在分别在我的 MainActivity 和我的 NoteEditing 活动中引用它并编译之后,它开始起作用了。

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".NoteEditorActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

具体来说,我没有 android:theme="@style/AppTheme">android:label="@/app_name" 我不知道程序是从哪里得到的。如果我更改这两个并运行它,它会崩溃。我将android主题更改为“添加注释”的标题,它崩溃了

虽然我从未在 xml 文档中编写过这两个代码中的任何一个,并且在我的文件中也没有找到“styles.xml”。我真的很难过——在解决这个问题时,任何帮助都将不胜感激! 编辑:哎呀!我收到的错误是

Android 资源链接失败 C:\Users\mrwad\AndroidStudioProjects\MyJournal\app\src\main\AndroidManifest.xml:5:5-20:19: AAPT: error: resource style/AppTheme (aka com.example.myjournal:style/AppTheme) not找到了。

【问题讨论】:

你能发布你收到的错误吗?仅从您的描述很难判断出了什么问题。 (另外,你确定它不应该是@string/app_name吗?) 哎呀!是的,我得到的错误当然是 Android 资源链接失败 C:\Users\mrwad\AndroidStudioProjects\MyJournal\app\src\main\AndroidManifest.xml:5:5-20:19: AAPT: error: resource style/找不到 AppTheme(又名 com.example.myjournal:style/AppTheme)。是的,我会试试@string/app_name,谢谢! 【参考方案1】:

啊,好吧,我想我明白发生了什么。

所以你说你没有 strings.xml,我假设你的 styles.xml 也没有正确设置。

所以在一个Android项目中,你应该在res下有一个名为values的目录:

应用程序-> src-> 主/ 分辨率/ 布局 值 strings.xml colors.xml styles.xml (您可能拥有的其他资源文件夹)

在这个values 目录中包含项目使用的重要资源。这包括字符串、样式、颜色等。

因此,如果您缺少应用主题,请确保您的样式中存在主题(错误指向style/AppTheme。这是一个示例styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

这些颜色可以存储在colors.xml:

<resources>
    <color name="colorPrimary">#FF0000</color>
    <color name="colorAccent">#00FF00</color>
    <color name="white">#FFFFFF</color>
</resources>

最后,您的app_name 应该驻留在strings.xml 文件中:

<resources>
    <string name="app_name">My New App</string>
</resources>

如果缺少这些文件中的任何一个,则只需在app/src/main/res/ 内的values 目录下创建上述文件。您会注意到,当您开发时,android 不喜欢硬编码值,并且每当您想编写字符串或颜色等时,它都会提示您在上述文件之一中创建一个资源条目以代替使用。

我强烈建议您阅读一些 android 文档,它们有一组非常详细的文档。你可以了解更多关于资源管理here

【讨论】:

【参考方案2】:

android:label="@string/app_name" 您缺少字符串。 你可以在 res/values 目录中看到这些值。

【讨论】:

当我检查值目录时,它们似乎因为某种原因不存在?我不确定——我可以意外删除它们吗?是否可以创建一个新的值文件夹? prnt.sc/s6f0kx 是的,您可以制作 styles.xml string.xml 并保留此资源 您的应用程序名称

以上是关于编译时,Android Manifest 会导致问题阻止其运行?的主要内容,如果未能解决你的问题,请参考以下文章

图标的问题,以及更改electron.manifest.json会导致崩溃。

Android:manifest targetSdkVersion 更改导致:图标不可见,小部件不再工作,并且无法访问数据

我必须在 Android Manifest 中指定父活动名称吗?

APK注入,重新编译android manifest

Android编译异常` Cause: duplicate entry: META-INF/MANIFEST.MF`

运行项目时缺少 android manifest 的变化