2013-11-25 157 views
6

我有一個項目,在Android Studio v 0.3.2中使用Gradle構建。 我的項目依賴於其他兩個模塊(android庫)。使用build.gradle文件可以很好地定義項目結構。 問題是......當我在Android設備上運行項目時,我在我的設備上安裝了3個apk。一個是主項目(唯一正確的項目),另外兩個來自導入的模塊(這兩個我不想安裝)。 我怎樣才能做到這一點?或者我做錯了什麼?Android Studio爲每個模塊安裝APK

項目結構:

  • MyLibModule
  • MainProject
  • MainProject-> libraries->MyOtherModule

MyLibModule是在與主項目相同的路徑,因爲我還需要在其他項目中使用此模塊。

只是要清楚:整個項目建立的確定,所有依賴關係都可以,但爲什麼我的設備上有3個APK?

回答

14

經過了一整天與這個問題掙扎,我找到了這種奇怪的行爲的原因。問題在於庫模塊的清單。在我切換到Android工作室之前,我使用了Eclipse。我有一個testActivity在庫項目的清單中聲明。從我的庫模塊清單中刪除所有測試活動解決了這個問題。現在Android Studio只安裝MainProject apk。

一些代碼: MyLibModule的清單:

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

    <uses-sdk android:minSdkVersion="7"/> 
    <application> 
     <activity 
      android:name=".TestActivity" 
      android:label="@string/app_name"> 
     </activity> 
    </application> 
</manifest> 

更改爲:

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

    <uses-sdk android:minSdkVersion="7"/> 
    <application> 
    </application> 
</manifest> 

....與同爲MyOtherModule。

注意:空的應用程序節點必須停留在清單中,以避免構建錯誤。

+0

喲,這幫助了我! – Skynet

+0

確實,我有一個圖書館,有一個演示活動的應用程序,它創建了兩個應用程序的「版本」。 –

1

這是因爲您的庫在其build.gradle文件中被定義爲應用程序而不是庫。尋找這一行:

apply plugin: 'android' 

,取而代之的是:

apply plugin: 'android-library' 

您可能需要進行其他調整構建文件,因爲並非適用於應用程序都可以在圖書館構建文件中指定。有關更多信息,請參閱http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-projects

+0

謝謝你的快速答覆。我注意到之前還閱讀了文檔。但問題出在圖書館的表現上。我將很快發佈我的解決方案作爲答案。 – Primoz990

9

從資料庫中的發射活動中刪除意圖過濾

​​

改爲

<application> 
    <activity android:name=".MainActivity"/> 
</application> 
+0

非常好的答案。正在使用工作室創建aar圖書館。創建aar庫文件後,導入到另一個項目。同時將主apk文件安裝到手機中,其在手機屏幕上顯示兩個apk文件。我遵循你的步驟。我得到了完美的輸出。 – harikrishnan