Android Studio会为每个模块安装一个APK

Pri*_*990 7 android apk android-studio android-gradle-plugin

我有一个项目,在Android Studio v 0.3.2中使用Gradle构建.我的项目依赖于其他两个模块(android库).使用build.gradle文件很好地定义了项目结构.问题是......当我在Android设备上运行项目时,我在我的设备上安装了3个apk.一个是主项目(唯一正确的项目),另外两个来自导入的模块(两个我不想安装).我怎样才能实现这一目标?或者我做错了什么?

项目结构:

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

其中MyLibModule与Main项目位于同一路径,因为我还需要在其他项目中使用此模块.

需要明确的是:整个项目构建正常,所有依赖项都可以,但为什么我的设备上有3个APK?

Pri*_*990 15

经过一整天的努力解决这个问题,我找到了这种奇怪行为的原因.问题是图书馆模块的清单.在我切换到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>
Run Code Online (Sandbox Code Playgroud)

变成:

<?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>
Run Code Online (Sandbox Code Playgroud)

....对于MyOtherModule也一样.

注意:空应用程序节点必须保留在清单中,以避免构建错误.


tan*_*wei 10

从库的启动活动中删除intent-filter

<application>
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

变成

<application>
   <activity android:name=".MainActivity"/>
</application>
Run Code Online (Sandbox Code Playgroud)