android studio module build,踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中...
最近工作中遇到了需要将一个完整的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引入到自己的项目中...相关推荐
- Android Studio 的 build 过程
我们知道,在 Android 项目的开发过程中,只需要点一下 Android Studio 的运行按钮![](https://user-gold-cdn.xitu.io/2018/6/24/16431 ...
- Thingsboard Build踩坑(一)
Thingsboard Build踩坑(一) 编译时错误代码: [Error] Timed out waiting 250s for another ngcc process, with id 330 ...
- Flutter之Android Studio环境配置采坑记录
Flutter之Android Studio环境配置 IDE和SDK的安装 Device配置 AVD Genymotion 安装 ADB设置 AS中安装Genymotion插件 踩坑记录 IDE和SD ...
- android里build报错怎么办,Android Studio 当build时候出错解决办法
Android Studio在build的时候出现transformClassesWithDexForDebug Android Studio在build的时候出现以下问题: Error:Execut ...
- android 沉浸栏灰色,Android 沉浸栏实践——踩坑
当前开发环境:Android Studio 2.1.3,compileSdkVersion 24,buildToolsVersion "24.0.2",support:appcom ...
- Android华为推送踩坑,极光推送集成华为遇到的坑?
一.前言: 首先极光推送对各个厂商通道对接是没有在开发者平台提供文档的,需要申请VIP资格后,极光才会提供对应对接文档. 1.极光普通集成 1.步骤1 图片.png 2.步骤2 图片.png 3.步骤 ...
- android sdk v28,Android Studio Gradle Build失败 – 要求提供不存在的sdk版本
24小时前我的项目完美构建,没有错误.在不更改单个代码的情况下,当我恢复工作时,它将不再构建. 签出旧的工作提交现在会产生相同的错误. 这些是我得到的错误代码: Information:Gradle ...
- Android Studio的build.gradle里面的各种版本信息
Android studio 是采用 Gradle 来构建项目.Gradle 是一个非常先进的项目构建工具. 我们在导入Android项目后,只要项目同步成功,就会出现以下文件夹. 如图是build. ...
- 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 ...
- android手机屏幕共享神器踩坑指南
开源项目地址:https://github.com/Genymobile/scrcpy scrcpy,由 Genymobile 推出的可跨平台的.可自定义码率的.开源的屏幕共享工具.它提供了在 USB ...
最新文章
- Sharepoint学习笔记--Farm Backup Error:Administration 2010 Service is not started
- 博弈论笔记1:囚徒困境与纳什均衡
- 科大星云诗社动态20210225
- android按下enter键如何让光标跳到下一个edittext,我们如何知道光标已经移动到edittext的下一行android...
- 云开发数据库又增新技能!
- Deepgreen数据库日志清理脚本
- AP 1532E register Cisco 2504 AP注册WLC
- java中catch ()_有关java中的try{}catch(){}的讲解
- 可并堆试水--BZOJ1367: [Baltic2004]sequence
- android+新版本+menu,【Android界面实现】SlidingMenu最新版本使用详解
- 黑马程序员---初学java建议(亲身经历)
- Linux系统管理---linux计划任务和日志的管理
- 振耀退休感言及海辉执行董事长视频访谈
- hbase snappy 安装_【hbase-部署】配置snappy压缩
- INSERT 语句与 FOREIGN KEY 约束FK_comment_news冲突。该冲突发生于数据库newssystem,表dbo.news, column 'id'。 语句已终止。
- 百度云网盘-kyee_ye的分享
- 迭代法求一元三次方程
- 《初级会计实务》考试学习分享之第八章 ——政府会计基础【考试大纲】
- 图片另存为原来有快捷键!
- Python+大数据-知行教育(一)-环境搭建 数据仓库
热门文章
- c3p0 mysql 连接池配置文件_使用XML配置c3p0数据库连接池
- Zookeeper之事件监听机制
- Java集合相关面试题总结
- Java集合Collection之遍历方法总结(List、Map、Set)
- JOIN查询流程与驱动表
- C++ 数组动态分配
- Linux root找回密码的方法
- GitHub引入了Reactions来提供对issue和pull request的反馈
- discuz清空session,导致session保存机制失败,session无法更新与解决
- .NET Framework总三