踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中

2023-10-27

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

操作步骤:

1,在主项目下新建一个module随意命名,然后将需要导入的项目的src,res,AndroidManifest等文件全部copy过来(这一步可能有其他更好方法),然后将build.gradle文件里的  apply plugin: 'com.android.application' 改为 apply plugin: '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,一直到现在才真正实现,以后再接再厉吧!




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中 的相关文章

  • 【汤圆名叫“小刺猬”和“雪化了”】——吃另类汤圆 听奇特民俗

    听奇特民俗 TITLE 汤圆名叫鈥溞 题澓外溠 蒜潯库斺敵粤砝嗵涝 听奇特民俗 gt 把汤圆微出创意来 吃另类汤圆听奇特民俗感世界之大无奇不有 叹那些正在消失的民俗 我挺懒的 而且又不是那么爱吃汤圆 减肥 所以就没有那么勤快来DIY 但节总
  • python字符串与数字类型转换

    str与int i 10 s str i s 10 s 1 i int s i 1 str与float st 4 t float st t 0 4 st 0 4 t float st t 0 4 t 0 4 st str t st 0 4
  • libevent (一) socket属性设置与初始化操作

    socket属性设置与初始化操作 libevent是一个事件触发的网络库 适用于windows linux bsd等多种平台 内部使用select epoll kqueue等系统调用管理事件机制 著名分布式缓存软件memcached也是li
  • 小程序怎么搭建?学会这些技巧,开启创业之路

    随着移动互联网的发展 小程序成为了一种重要的创业工具 小程序具有开发周期短 运营成本低 用户体验好等特点 被越来越多的企业和个人用来实现商业价值 本文将通过一个案例来介绍小程序的搭建技巧 帮助创业者更好地开启创业之路 案例介绍 某家生鲜电商
  • CentOS下安装配置Phabricator

    1 下载快捷安装sh http download csdn net detail u012547633 9882697 把centos版的phabricator安装脚本下载到opt目录并安装 cd opt chmod 777 install
  • java版本号分段比较_版本号判断,例如:1.0.0比较1.0.1

    有的时候可能会判断客户端的版本号信息 多位数的版本号判断做个记录 代码分享者 zzp 注意 Java中应该吧分割的正则使用 来分割小数点字符串 分割 NSArray curVerArr currentVersion componentsSe
  • 了解Chat GPT

    CHATGPT是一款强大的人工智能语言模型 可以回答任何问题和开启有趣的对话 以下是一些使用CHATGPT的技巧和提示 提问明确 CHATGPT能够回答任何问题 但它需要清晰和明确的问题来给出准确的答案 因此 在提问时要尽可能明确和具体 尝
  • 【JDBC】-- Java连接数据库方法(Mysql8+idea)

    Java Database Connectivity 简称JDBC 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口 提供了诸如查询和更新数据库中数据的方法 Java如何连接数据库 下面使用Mysql8版本 编译器使用ide
  • Flink_CDC搭建及简单使用

    Flink CDC搭建及简单使用 1 CDC简介 CDC Change Data Capture 在广义的概念上 只要能捕获数据变更的技术 都可以称为 CDC 但通常我们说的CDC 技术主要面向数据库 包括常见的mysql Oracle M
  • Dubbo-admin 新版本启动问题记录

    Dubbo admin 新版本启动问题记录 文章目录 Dubbo admin 新版本启动问题记录 1 安装步骤 a 下载zookeeper b 下载并编译dubbo 2 总结 1 安装步骤 直接按照官网下载下来的软件 并按照说明安装软件会存
  • Vagrant虚拟机安装,磁盘扩容以及局域网内访问教程

    1 下载vagrant以及virtualBox 配上vagrant virtualBox线上下载地址 vagrant下载地址 virtualBox下载地址 2 开始准备安装镜像文件 找到需要安装的系统镜像文件 配上vagrant镜像地址 v
  • Linux strace 命令 说明

    Strace是Linux中一个调试和跟踪工具 它可以接管被跟踪进程执行的系统调用和收到的信号 然后把每一个执行的系统调用的名字 参数和返回值打印出来 可以通过strace找到问题出现在user层还是kernel层 strace 显示这些调用
  • 集群基础3——haproxy负载均衡apache

    文章目录 一 环境说明 二 安装配置httpd 三 安装配置haproxy 四 验证http负载均衡 五 配置https负载均衡 六 haproxy网页监控 6 1 监控参数详解 6 2 页面操作 一 环境说明 使用haproxy对apac
  • jmeter中body data使用post请求的json格式提交

    之前介绍过jmeter中post的默认提交形式form表达提交 Content type application x www form urlencoded 使用直接 填写参数的形式 本次介绍的是jmeter中body data使用也就是j
  • 学历和工作年限决定了程序员的工资水平吗?

    根据中国互联网络信息中心 CNNIC 近日发布的第 45 次 中国互联网络发展状况统计报告 可知 截至 2020 年 03 月 中国网民规模为 9 04 亿 较 2018 年底增加 7508 万 其中农村网民规模达 2 55 亿 占网民整体
  • 时序预测

    时序预测 MATLAB实现SVM 支持向量机 时间序列多步预测 目录 时序预测 MATLAB实现SVM 支持向量机 时间序列多步预测 预测效果 模型描述 程序设计 学习总结 参考资料 预测效果 模型描述 Options 可用的选项即表示的涵
  • maven环境快速搭建

    最近 开发中要用到maven 所以对maven进行了简单的学习 因为有个maven高手在身边 所以 很快就上手了 我这里算是自我总结吧 关于maven是什么东东 请参考其它文章 准备工作 Jdk 1 5以上java开发环境 Eclipse
  • 图解TCP/IP

    第1章 网络基础知识 本章总结了深入理解TCP IP所必备的基础知识 其中包括计算机与网络发展的历史及其标准化过程 OSI参考模型 网络概念的本质 网络构建的设备等 1 5 4 OSI参考模型中各个分层的作用 应用层 为应用程序提供服务并规
  • Python爬虫入门6:模拟浏览器访问网页的http报文体压缩传输

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 引言 在前面章节中介绍了使用urllib包的request模块访问网页的方法 但上节特别说明http报文头Accept Encoding最好不
  • pytorch和tensorflow有什么区别?

    PyTorch 是一种用于构建深度学习模型的功能完备框架 同时tensorflow也是常用的框架之一 大家在学习的时候 尝尝会用来做比较 那么pytorch和tensorflow有什么区别 大家所关心的问题 解答来了 pytorch和ten

随机推荐

  • vue拖拽实现

    拖拽介绍 目标是将左侧list中的item拖入右侧card中 如下所示 将list1和list3拖入右侧拖拽区 一 拖拽样式实现 使用vue vuetifyjs实现 页面布局可根据不同的UI库自行修改 html内容
  • C++消消乐

    键盘版 include
  • 5、JSON.parse()

    JSON parse JSON 通常用于与服务端交换数据 在接收服务器数据时一般是字符串 我们可以使用 JSON parse 方法将数据转换为 JavaScript 对象 语法 JSON parse text reviver 参数说明 te
  • 虚幻引擎程序化资源生成框架PCG 之Extents Modifier 和 Bounds Modifier

    Extents Modifier 和 Bounds Modifier这两个节点看起来很像 都是修改Point的Bouding Box 查看一下源代码 简单看一下它们的区别 文章目录 两个节点的代码对比 Bounds Modifier 源代码
  • MySQL使用ReplicationConnection导致的连接失效分析与解决

    MySQL数据库读写分离 是提高服务质量的常用手段之一 而对于技术方案 有很多成熟开源框架或方案 例如 sharding jdbc spring中的AbstractRoutingDatasource MySQL Router等 而mysql
  • 基于vue-cli、elementUI的Vue超简单入门小例子

    这个例子还是比较简单的 独立完成后 能大概知道vue是干嘛的 可以写个todoList的小例子 开始写例子之前 先对环境的部署做点简单的介绍 其实和Vue官方的差不多 如若没有安装过vue cli 先全局安装一下vue cli cnpm i
  • minikube 快速使用入门 - 安装 - 1

    minikube的官网地址 Welcome minikube k8s io minikube是什么 Minikube是一个单机版的kubernetes集群 可以在windows mac linux 快速的创建一个kubernetes集群 它
  • 原来react的createContext 这么简单

    今天看了下react中createContext相关的源码 特意在这里拿出来分享下 同时也会体现出关于本人看源码的技巧 本文采用源码分析以及源码断点调试的方式进行列举 用法 import React from react const Cou
  • (转)解决windows10下无法安装.net framework 3.5,错误代码0x800F081F

    1 下载 NET Framework 3 5的安装包netfx3 cab 将下载的文件复制到复制到 C 盘的 Windows 文件夹 后请在 命令提示符 管理员 中执行下面的命令 dism online Enable Feature Fea
  • centos下离线安装PostgreSQL

    安装简述 1 配置系统环境 2 安装postgreSQL 3 创建用户和分配权限 4 设置远程连接 配置系统环境 前提条件 文件postgresql 12 2 tar gz 放在 opt路径 步骤1 解压文件 cd opt tar zxvf
  • 编译错误记录

    一 MDK编译错误 1 error 235 variable epos msg was declared with a never completed type 这个错误的意思是epos msg这个变量被一个 没有被完成的的类型 定义 原因
  • Android串口通讯SerialPort(使用篇)

    1 什么是串口 在不会使用串口通讯之前 暂且可以把它理解为 一个可通讯的口 使用篇不深入探讨理论及原理 能理解串口如何使用之后 可以查看Android串口通讯SerialPort 浅谈原理 2 添加依赖 1 在 module 中的 buil
  • 数据库学习笔记之数据查询(一)

    数据库学习笔记之数据查询 一 查询之前先添加几条数据叭 还是基于这个里面建的那三个表 Student Course SC 进行插入查询操作 数据都是书上的 为Student表添加数据 INSERT INTO Student VALUES 1
  • pip install requests 报错 Could not fetch URL https://pypi.python.org/simple/requests/: There was ..r

    如题 pip install requests 报错 Could not fetch URL https pypi python org simple requests There was a problem confirming the
  • pandas读写mysql、h2和oracle数据库

    pandas读写mysql h2和oracle数据库 一 mysql数据库 二 h2数据库 三 oracle数据库 前言 在机器学习过程中 除开自己导入数据 用pandas的read xx之外 很多时候同样需要从数据库导入数据 特别是在做工
  • 夜莺(Flashcat)V6监控(五):夜莺监控k8s组件(下)---使用kube-state-metrics监控K8s对象

    目录 一 前言 二 categraf作为Daemonset的方式去运行监控k8s组件 1 1 24版本以下的k8s集群部署方法 创建autu yaml绑定权限 Daemonset部署categraf采集监控kubelet kube prox
  • 在jsp页面获取url请求参数

    JSP页面 When using the JSTL s expression language the request parameters are made available in the implicit object param T
  • css flex布局 —— 项目属性 flex-grow

    flex grow 属性定义项目的放大比例 解决的问题是 在空间有多余时把多余空间分配给各个子元素 flex grow 的值默认为 0 也就是说 如果存在剩余空间 也不放大 flex grow 取值为非负数 如果取值为负数那么和0的取值效果
  • mybatis拦截器

    最近在用mybatis做项目 需要用到mybatis的拦截器功能 就顺便把mybatis的拦截器源码大致的看了一遍 为了温故而知新 在此就按照自己的理解由浅入深的理解一下它的设计 和大家分享一下 不足和谬误之处欢迎交流 直接入正题 首先 先
  • 踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中

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