您的位置:首页 > 移动开发 > Android开发

导入Android工程作为Library Module流程及问题集

2017-06-17 15:28 323 查看
导入模块的主要流程:

      一.在主工程中,点击File -> New -> Import Module。导入的目录应该是模块工程目录

           里面的app文件夹。

      二.修改模块工程的build.gradle文件:

1.修改“com.android.application”为“com.android.library”;

2.删除“applicationId”这行。

      三.修改主工程的依赖。

1.打开工程结构对话框,选择app Module,在右侧点击依赖标签;

2.找到加号并点击,从弹出菜单中选择“3 module dependencies”;

3.选择需要添加的模块。

导入工作基本完成。

以下是遇到的问题集:

      一.manifest错误。由于模块不再是app,即作如下修改:

         <application>

         application没有任何的属性。

         在模块manifests文件中,删除与主工程的manifest文件中相同的标签。例如:所需的权限,百度,友盟的key等等。

      二.普通的jar包依赖冲突。可以使用exclude实现。eg:

compile(project(':qianwanli')) {

    exclude group: 'com.squareup.okhttp'

}

或者

compile(project(':qianwanli')) {

    exclude module: 'okhttp'

}

      三.特殊的jar包依赖冲突。例如:百度定位SDK,由于不知道group,module是什么,试了很多都没有成功。

         error信息:com.baidu.location.a冲突。

         最后成功的方法:把百度SDK,单独新建成一个同等的module,且导入工程。然后各自依赖compile project(':BaiduLocSDK')。BaiduLocSDK是我的模块名称。

         这样,再也没有百度SDK的冲突。

      四.针对相同的so库文件,直接保留主工程里面的so库文件,删除子模块里面相同的so文件。

      五.运行错误:找不到id错误,或者inflate构建错误。由于编译后模块中的资源和主工程的资源是合并在一起的,为了避免重名问题,需要对模块中资源进行重命名。

确保模块之间的res资源文件的文件名不要有相同的,否则运行exception。例如:string,layotu布局文件。若有相同的,建议重命名子模块的文件名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: