自动生成的构建清单文件AndroidManifest.xml在设备

时间:2015-06-09 12:02:24

标签: android android-manifest

我在我的项目中使用Todd的ProgressWheel,每次安装我的应用程序时,设备上都会出现两个图标,一个用于我的实际应用程序,另一个用于ProgressWheel。我相信这个问题存在于ProgressWheel的自动生成的清单文件中,我无法编辑它:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.todddavies.components.progressbar"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        <activity
            android:name="com.todddavies.components.progressbar.main"
            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>

我知道“action MAIN”和“category LAUNCHER”导致了这个问题,但是如果我不能编辑文件,我将如何处理这个问题,因为每次编译时它都会被覆盖。 ProgressWheel通过依赖

包含在我的项目中
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.github.Todd-Davies:ProgressWheel:[1.0]'
}

1 个答案:

答案 0 :(得分:1)

  

自动生成的构建清单文件AndroidManifest.xml在设备上安装不需要的应用程序

不,它没有。

  

我在我的项目中使用Todd的ProgressWheel,每次安装我的应用程序时,设备上都会出现两个图标,一个用于我的实际应用程序,另一个用于ProgressWheel。

更准确地说,主屏幕的启动器中会出现两个图标。这些代表两个活动,但只有一个应用程序。

  

但如果我无法编辑文件,如何在每次编译时被覆盖

,我该如何处理呢?

最好的答案是使用更好的进度轮库,因为我们有a few dozen of them,而你选择的那个包装不好。

如果确实想要使用该库,请在您自己的清单中,作为<application>元素的子元素,添加:

<activity
        android:name="com.todddavies.components.progressbar.main"
        tools:node="remove" />

这将要求您将xmlns:tools="http://schemas.android.com/tools"命名空间声明添加到<manifest>元素。

这个<activity>元素的作用是说“嘿,构建系统,我们从库中引入com.todddavies.components.progressbar.main活动,但摆脱它”。这将作为the manifest merger process的一部分进行处理。