Android Studio一个项目引入另一个项目作为依赖Libary

2023-11-08

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!

16年做的项目,因公司是某国企很注意保密,即有了奇葩要求不允许用svn、git版本控制工具,所以就有了此篇文章的诞生,下面是我对以前笔记的整理 Android Studio一个项目引入另一个项目作为依赖Libary
一、源码,详见地址
https://download.csdn.net/download/yudbl/10874222
说明:
NoTest为原文件,testSuccess为源文件经过测试成功的文件
MG_InternalControl 项目为主项目,mjptouchProject项目为library库

二、实践篇
1、导入依赖项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
module的名字我改为mjptouchProject
在这里插入图片描述
在Project目录下,可以看到导入进来的依赖项目
在这里插入图片描述
这时候会报错如下:
在这里插入图片描述
详细错误信息:
在这里插入图片描述

Element: class org.jetbrains.plugins.groovy.lang.psi.impl.GroovyFileImpl because: different providers: SingleRootFileViewProvider{myVirtualFile=file:///Users/luminal/Desktop/test_mjb/MG_InternalControl/settings.gradle, content=VirtualFileContent{size=15}}(2ba0f4af); SingleRootFileViewProvider{myVirtualFile=file:///Users/luminal/Desktop/test_mjb/MG_InternalControl/settings.gradle, content=VirtualFileContent{size=15}}(47a17b71)
invalidated at: see attachment

2、配置添加依赖项目
不管上面报的错,回到Android目录下,如下图添加:include ':app',':mjptouchProject'
配置添加依赖项目,这时候我们可以在Android目录下看到mjptouchProject
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、把依赖项目设置为兼容的library

接下来有可能会报错:
Unable to resolve dependency for ‘:app@debug/compileClasspath’: Could not resolve project :mjptouchProject.

解决方式:
如下图,添加apply plugin: 'com.android.library',注释或删除applicationId
在这里插入图片描述

我在主项目执行了MainActivity跳转依赖项目mjptouchProject的代码,进行测试调用:

startActivity(new Intent(MainActivity.this, com.luminal.mjptouch.MainActivity.class));

注:两个都叫MainActivity,带包名区分即可。平常建议还是不要命名同样的名字

运行项目,接下来有可能会报错:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.luminal.control/com.luminal.mjptouch.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

解决方式:
因为我的activity一个继承了Activity,一个继承了AppCompatActivity。把它都继承Activity
在这里插入图片描述

运行项目,接下来有可能会报错:
java.lang.NoSuchFieldError: No field pb_flash of type I in class Lcom/luminal/mjptouch/R i d ; o r i t s s u p e r c l a s s e s ( d e c l a r a t i o n o f ′ c o m . l u m i n a l . m j p t o u c h . R id; or its superclasses (declaration of 'com.luminal.mjptouch.R id;oritssuperclasses(declarationofcom.luminal.mjptouch.Rid’ appears in /data/app/com.luminal.control-1/split_lib_slice_8_apk.apk)

解决方式:
改变依赖项目同名的layout文件。我把依赖项目同名的 activity_main 改成 activity_main_mjptouch
https://blog.csdn.net/qq_30552993/article/details/74003966

运行项目,大家可能很早就发现手机上安装了两个相同的app
解决方式:
(1)把依赖项目清单文件AndroidManifest.xml里面的权限声明、组件声明等,移到主项目里面
注:有相同的activity等,记得加包名进行区分

(2)依赖项目的清单文件改完以后如下图:
在这里插入图片描述

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.luminal.mjptouch">

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true">
    </application>

</manifest>

运行项目,这时候手机上面只安装了一个app了!

其他报错-接下来有可能会报错:
Manifest merger failed : Attribute application@label value=(@string/app_name) from AndroidManifest.xml:8:9-41
is also present at [:mjptouchProject] AndroidManifest.xml:13:9-40 value=(mjptouchProject).
Suggestion: add ‘tools:replace=“android:label”’ to element at AndroidManifest.xml:5:5-32:19 to override.

解决方式:
在主项目添加如下代码,如图:

xmlns:tools="http://schemas.android.com/tools"
tools:replace="android:label"

在这里插入图片描述
https://blog.csdn.net/goodmentc/article/details/51088621

接下来有可能会报错:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.luminal.control/com.luminal.mjptouch.Main_mjptouchActivity}: java.lang.SecurityException: ConnectivityService: Neither user 10417 nor current process has android.permission.ACCESS_NETWORK_STATE.
缺少ACCESS_NETWORK_STATE权限,有可能没有把依赖项目的权限,复制到主项目里面

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

Android Studio一个项目引入另一个项目作为依赖Libary 的相关文章

  • Kapt 未在即时应用程序功能模块中生成类

    我在我的 Android 应用程序中使用 dagger2 即使没有错误 它也不会生成匕首组件类 我已经在设置中启用了注释处理器并重新启动了我的 android studio 但这对我来说不起作用 我也读过这个帖子Dagger2 不生成 Da
  • 使用 GoogleServices 插件时忽略 Gradle ArchivesBaseName

    我经常使用 archivesbasename 来重命名我的输出 apk 但自从使用 google services 插件后 它就被忽略了 我能做些什么来让它再次工作吗 下面附上了我完整的 build gradle 感谢您的指点 apply
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • FLAG_ACTIVITY_REORDER_TO_FRONT 被忽略

    我有一个包含项目列表的 FragmentActivity 当应用程序处于后台时 可以推送该项目列表 发生这种情况时 我想创建一个状态栏通知并提醒用户更新 当用户单击通知时 活动应重新排序到前面并显示在屏幕上 同时在列表底部显示新项目 所以我
  • 使用 RxJava 限制吞吐量

    我现在遇到的情况很难解释 所以我会写一个更简单的版本来解释这个问题 我有一个Observable from 它发出一系列由ArrayList文件数量 所有这些文件都应上传到服务器 为此 我有一个函数可以完成这项工作并返回一个Observab
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • Android:BATTERY_STATUS_DISCHARGING 和 BATTERY_STATUS_NOT_CHARGING 之间的区别

    我想知道这两个标志之间的区别 BatteryManager BATTERY STATUS DISCHARGING And BatteryManager BATTERY STATUS NOT CHARGING 我开发了一个使用这两个标志的应用
  • Android 消费品:“已经拥有该商品”,但 inventory.hasPurchase() 为 false

    我被 Google In App v3 困住了 我测试了一次没有消费的购买 例如 当应用程序在购买和消费之间崩溃时 现在我找不到出路 如果我尝试再次购买 它会显示 您已经拥有该商品 但是当我测试所有权时 它说我不拥有它 Inventory
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个
  • 如何更改 Android 12 启动屏幕中的图标形状?

    我想要矩形形状的启动屏幕图标 而不是 android 12 中的圆形形状 我不相信你可以 如果你看这里的第 3 点 https developer android com about versions 12 features splash
  • 在 android 中,第一次单击时按钮侦听器未注册

    因为我是 Android 新手 所以我遇到了按钮监听器的问题 我正在使用 OnClickListener 来处理胸像 但它第一次点击后不执行一旦我单击多个 它就会表现良好 但如何使其在第一次单击时成为可能 这是我的代码 public cla
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • Android 4.2 - Environment.getExternalStorageDirectory().getPath() 行为

    我一直在开发一个android应用程序 在上次更新到4 2之前 我使用 Environment getExternalStorageDirectory getPath 它返回了我 storage sdcard0 但自从更新后我现在得到了 s
  • 使用 RecyclerView.Adapter 在 onBindViewHolder() 内设置 onItemClickListener

    我有一个自定义对象 学生班 public class Student private String name private String age public String getName return name public void
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • 如何从灰度字节缓冲区图像创建位图?

    我正在尝试使用新的 Android 人脸检测移动视觉 API 来处理帧图像 所以我创建了自定义检测器来获取帧并尝试调用 getBitmap 方法 但它为空 所以我访问了帧的灰度数据 有没有办法从它或类似的图像持有者类创建位图 public
  • 查询联系人 - 有时返回空游标

    我正在尝试查询联系人的显示名称 Override public void onActivityResult int requestCode int resultCode Intent data switch requestCode case

随机推荐

  • 【计算机组成原理】——知识点复习(期末不挂科版)

    课本 考试题型 题型一 计算题 30分 1 定点数表示 用原码 反码 补码 移码表示十进制数 5分 2 浮点数表示 十进制数 单精度浮点数 5分 3 加减运算 变形补码 10分 4 乘除运算 补码一位乘法 Booth算法 原码加减交替法 不
  • 关于将本地jar包引入到项目中的方法。

    1 直接将下载的jar包通过配置引入到项目中 不推荐 比较限制 1 1 首先将自己所需要引入的jar包下载 1 2 打开idea 进入到项目中 在自己所需要引入jar包的模块下新建一个lib文件夹 跟src同级 1 3 将下载好的jar复制
  • 二进制多实例MYSQL

    上一篇部署了3306单实例mysql 先接上一篇部署多实例 一 创建多实例数据目录 mkdir p linux0224 mysql 3307 mkdir p linux0224 mysql 3308 二 初始化3307 3308数据库 my
  • React报错之React hook ‘useState‘ cannot be called in a class component

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Qt程式异常崩溃处理技巧(Win)

    文章转载来自 http www cnblogs com lcchuguo p 5177715 html 作者 lcchuguo 这篇文章谈的是 Qt4 程式在视窗系统下的异常崩溃处理技巧 所以须要在头文件里包括 include
  • Python3.6 异常处理和assert

    Author tyran Date 17 11 13 异常处理 try 代码逻辑 只要其中任意一行报错都会被捕捉 i int aaa print i except Exception as e 如果出错执行 捕捉错误 print e inv
  • awk从放弃到入门(1):awk基础 (通俗易懂,快进来看)

    我们先来用专业的术语描述一下awk是什么 如果你看不懂 没关系 我们会再用 大白话 解释一遍 awk是一个报告生成器 它拥有强大的文本格式化的能力 这就是专业的说法 你可能不理解所谓的报告生成器中的 报告 是什么 你可以把 报告 理解为 报
  • 智能家居创意DIY-智能触摸面板开关

    触摸开关 即通过触摸方式控制的墙壁开关 其感官场景如同我们的触屏手机 只需手指轻轻一点即可达到控制电器的目的 随着人们生活品质的提高 触摸开关将逐渐将换代传统机械按键开关 触摸开关控制原理 触摸开关我们把它理解为三部分构成 信号控制单元 开
  • VS Code 安装

    前端开发工具 VSCode HBuilder sublime WebStorm VS Code 一 介绍 Visual Studio Code 简称 VS Code 是 Microsoft 于2015年4月发布的一款代码编辑器 VS Cod
  • 非华为电脑安装华为电脑管家多屏协同

    1 转载声明 本文转载自 http www hankeer org article non huawei computer install pcmanager html 使用工具为上述链接内的博文的博主所开发 常见问题在其博客主页有所介绍
  • python怎么搭建免费代理IP池,免费代理IP适合爬虫工作吗

    Python可以使用一些第三方库和工具来搭建免费代理IP池 简单来说 搭建代理IP池的步骤如下 1 获取代理IP 从一些免费或付费代理IP网站上爬取并验证IP地址和端口信息 2 验证代理IP 使用代理IP访问一些网站或服务 验证代理IP的可
  • 【Audio】基于STM32 I2S移植WM8978 Audio Codec驱动

    相关文章 1 Audio I2S传输PCM音频数据分析总结 一 2 Audio I2S传输PCM音频数据分析总结 二 3 Audio 基于STM32 I2S移植WM8978 Audio Codec驱动 1 WM8978简介 WM8978是一
  • 【Python】python -m pip install 和 pip install 的区别

    文章目录 一 pip install 二 python m pip install 三 两者的总结 一 pip install 当你使用 pip install 命令时 你正在使用 Python 包管理器 pip 来安装 Python 包或
  • 使用VSCode SSH公网远程连接本地服务器开发 - cpolar内网穿透

    文章目录 前言 视频教程 1 安装OpenSSH 2 vscode配置ssh 3 局域网测试连接远程服务器 4 公网远程连接 4 1 ubuntu安装cpolar内网穿透 4 2 创建隧道映射 4 3 测试公网远程连接 5 配置固定TCP端
  • Kibana 导出csv

    过几秒就会出现下面这图 直接点击Download即可
  • centos7下ldap服务搭建

    1 安装ldap服务 bin bash echo install ldap rpm yum install y openldap servers openldap clients cp usr share openldap servers
  • 计算机视觉论文

    1 Temporal Cluster Matching for Change Detection of Structures from Satellite Imagery 标题 时态聚类匹配用于卫星影像结构变化检测 链接 https arx
  • 网络编程中当强制结束TCP服务端之后客户端可能出现Connection refused错误

    当客户端连接到服务端时 强制结束服务端程序 当再次启动服务端 客户端在连接时出现Connection refused错误 原因为服务端重新启动后的端口号发生改变 改变的原因不清楚 可以用getsockname 函数获取bind 后socke
  • PyTorch:torch.nonzero——非零元素的定位

    PyTorch学习笔记 torch nonzero 非零元素的定位 torch nonzero input out None as tuple False LongTensor or tuple of LongTensors 功能 用于输出
  • Android Studio一个项目引入另一个项目作为依赖Libary

    声明 本教程不收取任何费用 欢迎转载 尊重作者劳动成果 不得用于商业用途 侵权必究 16年做的项目 因公司是某国企很注意保密 即有了奇葩要求不允许用svn git版本控制工具 所以就有了此篇文章的诞生 下面是我对以前笔记的整理 Androi