2014-06-08 83 views
3

我正在製作一個使用Android Studio v0.5.9的應用程序,該應用程序有一個庫項目作爲依賴項。但是,每次運行項目時,兩個具有相同名稱和圖標的apks都會部署到我的設備上。第一個apk(應用程序)包含我的主模塊,而第二個則是庫項目本身。但是,當我從Eclipse運行相同的項目時,只部署了一個apk並且它完美地工作。Android Studio同時爲同一個項目構建兩個應用程序

以下是問題的一些截圖 -

enter image description here

第一應用(我的模塊) -

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' 

請幫我解決這個問題。提前致謝!!

+0

分享你的gradle文件請 –

+0

@EugenMartynov我已經添加了'build.gradle'文件,請看一看。 – Swap

+0

你如何連接兩個項目。你能分享'settings.gradle'嗎? –

回答

6

也許這對其他人會有幫助。

Gradle也在進行圖書館項目的明確合併。所以問題是從庫中保持AndroidManifes.xml不變。它有application節點用於演示目的,並且此節點已成功合併到主要AndroidManifest.xml

我打算向谷歌提交問題,因爲我認爲它應該阻止或警告這種情況。

+1

您可以使用Android清單合併工具選項「remove」覆蓋庫項目清單中每個節點上的合併行爲:對於JazzyViewPager,將工具:node =「remove」添加到MainActivity的節點。 (注意:這是針對Android Studio的0.8.2版本的,因爲他們最近更改了清單合併工具) – d370urn3ur

6

Eugen Martynov的答案是正確的,但我決定重申他以外行人的話說。

瀏覽您的圖書館並檢查他們的AndroidManifest.xml。其中一個應該有一個<application>標籤。刪除標記並解決雙應用程序問題。

+0

Kita的答案是[更正確]。你的庫可能不僅有一個應用程序標籤,它可能還有一個定義在其中的Activity!只要它沒有Launcher過濾器意圖,你就可以走了。 – nat101

3

ApplicationManifest.xml中影響創建多個啓動器圖標的特定元素是<intent-filter>,其中包含<category android:name="android.intent.category.LAUNCHER"/>。刪除這個<intent-filter>會讓你控制啓動器圖標的數量。你可以閱讀更詳細的SO回答here

相關問題