概述

最近公司需要将原来的app和现在的app合并(主要是为了用原来的功能),先说一下思路,分成一个主module和一个附module,其实就是一个app添加一个library,下面总结一下遇到的错。

将附module添加为library

1.首先在主module中通过File-->New-->Import Module引入附工程的module

2.打开附module的build.gradle修改apply plugin: 'com.android.application'为apply plugin: 'com.android.library'

这样就将你的附工程油app改为了library了,否则回报这个错

各种报错解决

1.如果你项目用到了Butterknife,或者onClick用到了switch(v.getId())的获取控件那么都会报错,因为附module的R.java里面的id都是变量(没用final修饰),而主module的R.java的id是常量(用final修饰),这是因为当附module添加到主moudle时两份R.java文件里面的id可能冲突,这时会修改附module的R.java文件,所以不能用final修饰。而注解和switch都只能用常量,switch还是乖乖改成if else吧。Butterknife提供了解决办法,在你工程的build.gradle中添加如下依赖,用8.8.1的版本我这里报错,可能有冲突

然后在附module中添加

这个插件是用来生成R2.java文件的,R2.java文件是copy的R.java文件的,但是多了final修饰(Butterknife最终findViewById时还是通过R.java文件找的)。

详情https://github.com/JakeWharton/butterknife

2.接下来你可能出现依赖冲突

,解决办法,将依赖统一管理起来,在工程的build.gradle做统一依赖配置

这样在各个module引用就没问题了

3.运行时又可能出现layout重名冲突,由于两个module都有同名的layout.xml文件,导致id错乱,只需要把附module的id对应的layout文件重命名就好了

到这就差不多了

android两个app合并相关推荐

  1. Android两个app间跳转-deepLink的使用

    在开发过程中,经常会遇到两个app之间跳转.或者浏览器链接跳转app的需求,这里简单总结一下. 1.简单的从一个app跳转到另一个app 直接用intent就可以实现. 只要知道目标activity的 ...

  2. Android合并两个APP的具体做法(掌握)

    有时候因公司需求,要求合并两个APP 使用里面的功能. 平台:Studio 小白鼠:二维码扫描 和自己项目 具体步骤: /**  * 1.将解压后的android/assets文件夹拷贝到项目中的ma ...

  3. Android之通过ContentProvider实现两个app(进程间)间通信以及函数调用

    1.ContentProvider简单介绍 ContentProvider以在不同的应用程序之间共享数据,ContentProvider底层实现是Binder,它为存储和获取数据提供统一的接口 2.实 ...

  4. android 不能安装app,android中两个不同名称的app不能同时安装

    ---恢复内容开始--- 两个app,第一个安装后,再安装第二个,会提示安装包损坏或者一切其他问题,但是这个安装包在别的手机可以正常安装,可以是因为以下问题 两个app中,包含有相同名称的provid ...

  5. Android Jetpack组件App Startup简析

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  6. Android两个注意事项.深入了解Intent和IntentFilter(两)

    深入理解Intent和IntentFiler(二) 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)     在上一篇文章中,我们比較具体学习了&q ...

  7. Android架构组件-App架构指南

    Android架构组件-App架构指南 Android架构组件-WorkManager Android架构组件- Room数据库的使用 Android架构组件-Lifecycle Android架构组 ...

  8. Program type already present: android.support.v4.app.BackStackRecord$Op

    Program type already present: android.support.v4.app.BackStackRecord$Op 原文:https://blog.csdn.net/zww ...

  9. android app系统的测试_计算机毕设项目003之基于Android系统的App点餐外送系统

    计算机毕设项目之基于Android系统的App点餐外送系统 一. 项目名称 基于Android系统的App点餐外送系统 二. 项目简介 本项目是基于Android系统的手机点餐系统,整个项目分为App ...

  10. android 两种实现计时器时分秒的实现,把时间放在你的手中~

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...

最新文章

  1. python期末知识点总结_期末考试必备复习提纲丨9年级数学上册知识点总结归纳(人教版)...
  2. BUUCTF-[网鼎杯 2020 青龙组]singal——angr学习记录
  3. python怎么索引txt数据中第四行_python txt读取第一行数据库
  4. aspectj xml
  5. Idea导入web工程,并运行
  6. 接口自动化测试中的用例编写问题总结
  7. 博文视点大讲堂41期-SEO难点之网站内部链接结构
  8. 做游戏开发,选择Unity还是Unreal?
  9. Ruby之父松本行弘的编程人生
  10. 模拟器安装magisk
  11. 项目管理工具和技术——PERT图和甘特图
  12. 5学工坊整理|关于大数据发展趋势
  13. 华为社招16级待遇2020_2020年3月16日乌鲁木齐沙依巴克区发生3.5级地震简报
  14. 团队作业8----第二次项目冲刺(Beta阶段) 第三天
  15. 苹果M1芯片为何如此快?
  16. 浏览器无法访问此网站,连接已被重置,无法加载
  17. 动态图解实例 ConstraintLayout Chain
  18. 计算机关系差 并 交,计算机三个关系投影 交 并 差是什么意思
  19. Qt 错误 The process was ended forcefully(无法定位程序输入点 于动态链接库)
  20. mysql语法错误1064_MySQL语法错误#1064

热门文章

  1. python3 用socket编写ftp
  2. 力扣(LeetCode)244. 最短单词距离 II(2022.09.01)
  3. 通过任意数量点拟合曲线
  4. Tomcat-幽灵猫GhostCat漏洞复现
  5. php匹配ubb,UBB类 php UBB 解析实现代码
  6. python版问答聚合采集工具源代码+反编译完美还原
  7. 亚特兰蒂斯_亚特兰蒂斯的命运与可下载内容的作用
  8. 数据从网卡到应用的过程
  9. html 中 超链接的写法,网页超链接样式的CSS写法
  10. vsftp虚拟账户登录失败331 Please specify the password.