2014-09-01 62 views
0

我正在开发一个应用程序,我决定在三个项目中潜入代码。Gradle使用共享库结果生成多个菜单图标

其中包含我想在所有应用程序中使用的通用代码。其中一个包含我想在一些类似项目中使用的通用代码,它取决于通用代码。最后一个是依赖于第二个项目的特定于客户的主应用程序。

在根目录下创建一个settings.gradle文件中像这样

include ':CommonLib',':RdsManager',':RdsCommonLib' 

在每个子目录创建一个build.gradle文件的依赖性。请参阅下面的示例代码。

apk得到正确编译,但是当我安装它在设备(Android 3.2)中时,我发现我的应用程序的三个图标。

一个正确启动主应用程序。一次崩溃,最后一次启动测试活动。

如果我用eclipse创建apk,一切都很正常。

如何使用gradle解决此问题。我必须从库项目中删除Androidmanifest.xml文件吗?

的配置的gradle

的snipets下面CommonLib/build.gradle

buildscript { 
repositories { 
    mavenCentral() 
} 
.... 
apply plugin: 'android-library' 

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar', exclude: 'android-support-v4.jar') 
     compile 'com.android.support:support-v4:18.0.+' 

} 

RdsCommonLib/build.gradle

evaluationDependsOn(':CommonLib') 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10.+' 
    } 
} 
apply plugin: 'android-library' 

和finnaly在RdsManager

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10.+' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
    compile project(':RdsCommonLib') 
} 

回答

1

我是否必须从库项目中删除Androidmanifest.xml文件?

您可能必须在某处修改或删除某些<activity>元素。

Gradle for Android将合并清单。如果库项目中有一个<activity>的清单,那么该活动将自动添加到使用该库的任何应用程序的清单中。

在你的情况,你的图书馆有在他们<activity>元素,其中显然你需要或者删除清单的<intent-filter>(如果你想在活动中使用的应用程序,只要不与MAIN/LAUNCHER过滤器) ,或完全删除<activity>元素。

documentation for the manifest merging process,尽管在Gradle for Android达到1.0后该链接可能会过时。

0

好的,谢谢删除<intent filter>是解决方案。 Gradle构建配置是正确的。

谢谢。