如何使用自定义目录结构构建 AndroidManifest.xml

How to structure AndroidManifest.xml with custom directory structure

我有这样的目录结构:

build.gradle
module/
  build.gradle
  pack/
    AndroidManifest.xml
    src/
      com/
        example/
          sub/
            main/
              index.java
            foo/
              index.java
            bar/
              index.java

我不太确定这是否正确(看起来顶级文件夹太多)。似乎应该更像这样:

build.gradle
AndroidManifest.xml
com/
  example/
    sub/
      main/
        index.java
      foo/
        index.java
      bar/
        index.java

理想情况下,我希望它是这样的:

build.gradle
AndroidManifest.xml
src/
  main/
    index.java
  foo/
    index.java
  bar/
    index.java

无论哪种方式,问题是如何编写 AndroidManifest.xml 以便它处理 main/index.java 作为起点。我目前有这个:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sub">
  <application android:label="myproject">
    <activity
        android:name=".main"
        android:label="myproject">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
  </application>
</manifest>

想知道我应该如何更改这三个部分:

<application android:label="myproject">
  <activity
    android:name=".main"
    android:label="myproject">

我不想像在 res 文件夹中那样创建 xml 资源文件,以保留 strings.xml 作为名称等。如果可能的话,我只想将名称硬编码为 the AndroidManifest.xml

另请注意,main/index.java 文件包含一个 class,例如 MyActivity

因为您要访问位于 path

中的 index.java file
src/
      com/
        example/
          sub/
            main/
              index.java

您需要更改 package 名称,如下所示:-

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sub.main">
  <application android:label="myproject">
    <activity
        android:name=".index"
        android:label="myproject">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
  </application>
</manifest>

参考:-Why so many metadata files in Android studio?

据我所知,不可能。它是默认的项目结构,您无法修改 AndroidManifest.xml 文件以获得您的 Android 项目的自定义目录结构。

<application android:label="myproject">
  <activity
    android:name=".main"
    android:label="myproject">

此处android:label值为字符串资源。您可以在 res/values/strings.xml 中修改它们,即 recommended 或者您可以对它们进行硬编码并仅在此处更新它们。