Android Studio同时为同一个项目构建两个应用程序

时间:2014-06-08 13:33:01

标签: android eclipse android-studio android-library

我正在使用Android Studio v0.5.9创建一个应用程序,该应用程序具有库项目作为依赖项。但是,每次我运行项目时,两个具有相同名称和图标的apks都会部署到我的设备上。第一个apk(app)包含我的主模块,而第二个是库项目本身。但是,当我从Eclipse运行相同的项目时,只部署了一个apk,它运行正常。

以下是该问题的一些截图 -

enter image description here

First App(我的模块) -

enter image description here

第二个应用程序(库项目) -

enter image description here

顶级build.gradle文件 -

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

主模块build.gradle文件 -

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.3'
    defaultConfig {
        packageName 'com.Swap.Rooms'
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile 'com.android.support:appcompat-v7:19.+'
    compile project(':lib')
}

库项目build.gradle文件 -

apply plugin: 'android-library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        packageName "com.jfeinstein.jazzyviewpager"
        minSdkVersion 4
        targetSdkVersion 17
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/nineoldandroids-2.4.0.jar')
}

settings.gradle -

include ':app'
include ':lib'

请帮我解决这个问题。在此先感谢!!

4 个答案:

答案 0 :(得分:6)

也许这会对其他人有所帮助。

Gradle也正在为库项目进行清单合并。所以问题是让AndroidManifes.xml与库保持不变。它有application节点用于演示,此节点已成功合并到主AndroidManifest.xml

我打算向Google提交问题,因为我认为它应该阻止或警告这种情况。

答案 1 :(得分:6)

欧根马丁诺夫的回答是正确的,但我决定重申他所说的外行人的话。

浏览您的图书馆并查看他们的AndroidManifest.xml。其中一个应该有一个<application>标签。删除标签,双重应用程序问题将得到解决。

答案 2 :(得分:3)

ApplicationManifest.xml中影响创建多个启动器图标的特定元素是包含<intent-filter>的{​​{1}}。删除此<category android:name="android.intent.category.LAUNCHER"/>可让您控制启动器图标的数量。你可以阅读更详细的答案here

答案 3 :(得分:2)

我花了一些时间才知道问题出在哪里,但最终为我解决了问题。 问题出在Manifest.xml文件中。这意味着您有两个活动设置为LAUNCHER。 只需从不是您的LAUNCHER

的活动中删除与下面代码类似的代码即可
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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