最近工作中遇到了需要将一个完整的androidstudio项目移植到自己项目中去,因为考虑到自己已经有的项目和需要引入的项目资源都很庞大,为了方便代码管理,决定将需要引入的项目作为一个module导入到自己现有项目中来。

操作步骤:

1,在主项目下新建一个module随意命名,然后将需要导入的项目的src,res,AndroidManifest等文件全部copy过来(这一步可能有其他更好方法),然后将build.gradle文件里的  applyplugin:'com.android.application' 改为applyplugin:'com.android.library' 然后将compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion  都改为与主项目一样就好,去掉applicationid也是必须,其他配置可以不变就好,主要是去掉原来的作为application的一些配置。还要将AndroidManifest文件里面application下面的Launcher等属性都去掉,只注册activity等其他需要注册的组件就好!(这一步很简答,不详细多说)

2,在主项目中compile一下你建好的module,试着运行一下,可能会出现错误,

这个问题很简单,是因为你原项目用了switch (view.getId()),当作为module的时候view的id变成了非常量,而switch下面的case需要常量。所以没说的,改为if()else()去判断就好了!改完了之后再尝试去跑一下,你会发现又有新的问题,

Warning:Exception while processing task java.io.IOException: Can't write [F:\save\HG-appsoft\app\build\intermediates\transforms\proguard\GOOGLEPLAY\debug\jars\3\1f\main.jar] (Can't read [F:\save\HG-appsoft\app\build\intermediates\classes\GOOGLEPLAY\debug(;;;;;;**.class)] (Duplicate zip entry [com/******/camplayer/HiCamPlayer$HiCamPlayerStateListener.class]))这个问题看起来会让人一脸懵逼,本人各种百度,google也没有得出具体准确解法,花费了一天多时间,最后突然发现HiCamPlayerStateListener这个类是有重复的,原来在我主项目中就已经有这个类了,我点进去查看发现同事之前有将module下的这部分代码放进主项目,知道了之后将所有重复了类文件全部删除。然后再程序,这次就顺利了,安装APP成功。

3,到了这里,将一个独立androidstudio项目添加到自己项目中去的想法已经算是实现了,点击看看module代码的功能是否正常运行吧!一测试又发现了问题,居然报出了NullPointerException ,通过log查看发现在我的某一个类中通过findviewbyid找到的控件对象是null。。刚开始以为这个是简单问题好坚决,一番调试,查找问题原因,发现这个null实在没道理,最后将代码拷出来写了简单demo测试发现是正常的,最后我使用了一个神奇的解决办法,那就是将layout文件名称换了一个,原封不动的复制了xml里面的代码,然后就正常了。不会为空了,最后我估计问题应该还是跟上面那个问题一样,有相同的资源id,导致拿到了错误的资源对象,所以会为空!

ok,,到这里就都完了,很早之前就有想法写Blog,一直到现在才真正实现,以后再接再厉吧!

android studio module build,踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中...相关推荐

  1. Android Studio 的 build 过程

    我们知道,在 Android 项目的开发过程中,只需要点一下 Android Studio 的运行按钮![](https://user-gold-cdn.xitu.io/2018/6/24/16431 ...

  2. Thingsboard Build踩坑(一)

    Thingsboard Build踩坑(一) 编译时错误代码: [Error] Timed out waiting 250s for another ngcc process, with id 330 ...

  3. Flutter之Android Studio环境配置采坑记录

    Flutter之Android Studio环境配置 IDE和SDK的安装 Device配置 AVD Genymotion 安装 ADB设置 AS中安装Genymotion插件 踩坑记录 IDE和SD ...

  4. android里build报错怎么办,Android Studio 当build时候出错解决办法

    Android Studio在build的时候出现transformClassesWithDexForDebug Android Studio在build的时候出现以下问题: Error:Execut ...

  5. android 沉浸栏灰色,Android 沉浸栏实践——踩坑

    当前开发环境:Android Studio 2.1.3,compileSdkVersion 24,buildToolsVersion "24.0.2",support:appcom ...

  6. Android华为推送踩坑,极光推送集成华为遇到的坑?

    一.前言: 首先极光推送对各个厂商通道对接是没有在开发者平台提供文档的,需要申请VIP资格后,极光才会提供对应对接文档. 1.极光普通集成 1.步骤1 图片.png 2.步骤2 图片.png 3.步骤 ...

  7. android sdk v28,Android Studio Gradle Build失败 – 要求提供不存在的sdk版本

    24小时前我的项目完美构建,没有错误.在不更改单个代码的情况下,当我恢复工作时,它将不再构建. 签出旧的工作提交现在会产生相同的错误. 这些是我得到的错误代码: Information:Gradle ...

  8. Android Studio的build.gradle里面的各种版本信息

    Android studio 是采用 Gradle 来构建项目.Gradle 是一个非常先进的项目构建工具. 我们在导入Android项目后,只要项目同步成功,就会出现以下文件夹. 如图是build. ...

  9. Android studio Installed Build Tools revision 31.0.0 is corrupted. Remove and install again

    打包出现错误 31.0.0包出现损坏 错误内容: Installed Build Tools revision 31.0.0 is corrupted. Remove and install agai ...

  10. android手机屏幕共享神器踩坑指南

    开源项目地址:https://github.com/Genymobile/scrcpy scrcpy,由 Genymobile 推出的可跨平台的.可自定义码率的.开源的屏幕共享工具.它提供了在 USB ...

最新文章

  1. Sharepoint学习笔记--Farm Backup Error:Administration 2010 Service is not started
  2. 博弈论笔记1:囚徒困境与纳什均衡
  3. 科大星云诗社动态20210225
  4. android按下enter键如何让光标跳到下一个edittext,我们如何知道光标已经移动到edittext的下一行android...
  5. 云开发数据库又增新技能!
  6. Deepgreen数据库日志清理脚本
  7. AP 1532E register   Cisco 2504 AP注册WLC
  8. java中catch ()_有关java中的try{}catch(){}的讲解
  9. 可并堆试水--BZOJ1367: [Baltic2004]sequence
  10. android+新版本+menu,【Android界面实现】SlidingMenu最新版本使用详解
  11. 黑马程序员---初学java建议(亲身经历)
  12. Linux系统管理---linux计划任务和日志的管理
  13. 振耀退休感言及海辉执行董事长视频访谈
  14. hbase snappy 安装_【hbase-部署】配置snappy压缩
  15. INSERT 语句与 FOREIGN KEY 约束FK_comment_news冲突。该冲突发生于数据库newssystem,表dbo.news, column 'id'。 语句已终止。
  16. 百度云网盘-kyee_ye的分享
  17. 迭代法求一元三次方程
  18. 《初级会计实务》考试学习分享之第八章 ——政府会计基础【考试大纲】
  19. 图片另存为原来有快捷键!
  20. Python+大数据-知行教育(一)-环境搭建 数据仓库

热门文章

  1. c3p0 mysql 连接池配置文件_使用XML配置c3p0数据库连接池
  2. Zookeeper之事件监听机制
  3. Java集合相关面试题总结
  4. Java集合Collection之遍历方法总结(List、Map、Set)
  5. JOIN查询流程与驱动表
  6. C++ 数组动态分配
  7. Linux root找回密码的方法
  8. GitHub引入了Reactions来提供对issue和pull request的反馈
  9. discuz清空session,导致session保存机制失败,session无法更新与解决
  10. .NET Framework总三