当前位置: 首页 > news >正文

在Win10以及SDK为33的环境下——小米便签项目的搭建

文章目录

  • 0. 我的操作系统和开发环境
  • 1. 相关文件下载:
  • 2. import project:
    • 2.1 用import project导入项目
  • 3. make project:
    • 3.1 AS中的命令行乱码问题:
    • 3.2 依赖库缺失问题:
    • 3.3 关于targetSdkVersion
    • 3.4 关于Missing URL
    • 3.5 关于Manifest merger failed
    • 3.6 关于Cannot resolve method 'setLatestEventInfo' in 'Notification'!
    • 3.7 关于Duplicate class found!类重复!
    • 3.8 关于3 files found with path 'META-INF/DEPENDENCIES'.
  • 参考资料

0. 我的操作系统和开发环境

  • Win10操作系统

  • Android Studio 2022版

  • Gradle插件和Gradle版本:
    在这里插入图片描述

  • SDK版本:
    在这里插入图片描述

  • 依赖添加情况:
    在这里插入图片描述

1. 相关文件下载:

  • 项目源代码的下载
  • 缺少的依赖库——httpcomponents-client-4.5.14-bin
    在这里插入图片描述

2. import project:

由于该项目原本是基于Eclipse来进行开发,所以我们需要使用AS的import project来使用gradle将该项目重新构建。

2.1 用import project导入项目

  • 用import project导入项目:
    在这里插入图片描述
  • 导入的过程中遇到了这个问题:
    在这里插入图片描述

主要问题为:这报错信息中的Add google Maven repository and sync project,看来可能Project的build.gradle少了google()* 然后这个问题就解决了~
在这里插入图片描述

3. make project:

点击AS中的绿色小锤子make project

3.1 AS中的命令行乱码问题:

在这里插入图片描述

  • 点击两下shift键引导出搜索框:
    在这里插入图片描述
  • vmoptions文件下去添加-Dfile.encoding=UTF-8语句:
    在这里插入图片描述
  • 重启项目后成功可见:
    在这里插入图片描述

3.2 依赖库缺失问题:

在这里插入图片描述

  • 首先要去httpcomponents-client-4.5.14-bin
    下载依赖文件:
    在这里插入图片描述
  • 将下载后的安装包放到项目的根目录下:
    在这里插入图片描述
  • 通过AS官方的依赖导入功能来导入依赖:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 载入后在build.gradle(app)文件中:会自动创建好这样的语句:
    在这里插入图片描述
  • 至此导入库失败的问题被解决!

3.3 关于targetSdkVersion

在这里插入图片描述

  • targetSdkVersion 14 根据AS的提示改成了targetSdkVersion 33.

3.4 关于Missing URL

在这里插入图片描述

  • 根据AS的提示 (红色小灯泡) 增加了下面的两个语句:
    在这里插入图片描述

3.5 关于Manifest merger failed

在这里插入图片描述

  • 这个问题是我找的所有的参考文中都没有遇到的情况,所以最后只能硬啃报错内容来改Bug
    最后是在这个博文中找到解决办法:
    解决安卓组件不允许进行跨进程调用的问题
    原理在这篇博客中有细说:
    android:exported=“true”
  • 简单来说就是Android12的新特性,当我的SDK大于31时,如果要使得我的安卓组件可以进行跨进程调用的话,我就必须加上这句:
    android:exported="true"

3.6 关于Cannot resolve method ‘setLatestEventInfo’ in ‘Notification’!

在这里插入图片描述

  • 这个问题的解决办法在参考文中有详细给出,只需要将大佬们重写的showNotification函数替换原本的函数就可以解决这个问题。
private void showNotification(int tickerId, String content) {PendingIntent pendingIntent;if (tickerId != R.string.ticker_success) {pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,NotesPreferenceActivity.class), 0);} else {pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,NotesListActivity.class), 0);}Notification.Builder builder = new Notification.Builder(mContext).setAutoCancel(true).setContentTitle(mContext.getString(R.string.app_name)).setContentText(content).setContentIntent(pendingIntent).setWhen(System.currentTimeMillis()).setOngoing(true);Notification notification=builder.getNotification();mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification);}

3.7 关于Duplicate class found!类重复!

在这里插入图片描述

  • 这个难题我找了很多资料也没有解决,最后是靠自己的顿悟,想到既然类重复的原因是各种jar之间的冲突,那我只需要保留我最需要的包,把其它有冲突的包都忽略不就行了吗?

  • 顺者网上相关问题的无效版,我了解到大概重要的jar包是哪些:
    在这里插入图片描述

  • 我把和这3个jar包有冲突的包都exclude了:
    在这里插入图片描述

3.8 关于3 files found with path ‘META-INF/DEPENDENCIES’.

在这里插入图片描述

  • 只需要结合日志的提示,添加了这一句配置:
    在这里插入图片描述
  • 至此在该环境下的小米便签的搭建完成~

参考资料

解决项目搭建的问题:

项目搭建参考博客1

项目搭建参考博客2

解决Could not find com.android.tools.build:gradle:(各种版本)
Could not find com.android.tools.build:gradle:(各种版本)

解决项目运行的问题:
解决命令行乱码问题
在这里插入图片描述
解决项目依赖包缺失的问题
解决安卓组件不允许进行跨进程调用的问题
在这里插入图片描述

android:exported=“true”

android:exported="true"是什么
android:exported 其实并不是Android12的新属性在前面的版本也可以看见它。它是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。
作用是什么
在Activity中该属性用来标示:当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动。
如果它写在service中并且为false则表示则该服务不能够跨进程使用。
所以总体来说它的主要作用是:是否支持其它应用调用当前组件。
以前在我们需要的时候需要自己手动写,但是在Android12中他会默认添加并且默认为true。
把里面提到的所有的安卓的组件中都给加上了android:exported=“true”

解决Cannot resolve method ‘setLatestEventInfo’ in 'Notification’的问题
在这里插入图片描述
用重写的函数替代原本的函数。

相关文章:

在Win10以及SDK为33的环境下——小米便签项目的搭建

文章目录0. 我的操作系统和开发环境1. 相关文件下载:2. import project:2.1 用import project导入项目3. make project:3.1 AS中的命令行乱码问题:3.2 依赖库缺失问题:3.3 关于targetSdkVersion3.4 关于Missing URL3.5 关于Manifest merger f…...

FPGA纯verilog实现RIFFA的PCIE通信,提供工程源码和软件驱动

目录1、前言2、RIFFA简介RIFFA概述RIFFA架构RIFFA驱动3、vivado工程详解4、上板调试验证并演示5、福利:工程代码的获取1、前言 PCIE是目前速率很高的外部板卡与CPU通信的方案之一,广泛应用于电脑主板与外部板卡的通讯,PCIE协议极其复杂&…...

Linux网络配置

文章目录一、Linux网络配置原理图二、查看网络IP和网关ping测试主机之间网络连通性三、linux网络环境配置第一种方法(自动获取)第二种方法(指定ip)四、设置主机名和hosts映射设置主机名设置hosts映射五、主机名解析过程分析(Hosts、DNS)Hosts是什么DNS一、Linux网络配置原理图 …...

【Java学习笔记】多线程与线程池

多线程与线程池一、多线程安全与应用1、程序、进程与线程的关系2、创建多线程的三种方式(1)继承Thread类创建线程【不推荐】(2)实现Runnable接口创建线程(3)Callable接口创建线程3、线程的生命周期4、初识线…...

尺取法

尺取法是一种线性的高效率算法。记 (L, R ) 为一个序列内以L为起点的最短合法区间, 如果R随L的增大而增大的,就可以使用尺取法。具体的做法是不断的枚举 L,同时求出R。 因为 R 随 L增大而增大,所以总时间复杂度为 O(n) 指针i、j的两种方向: 反向扫描:i、j方向相反,i从头…...

20.有效的括号

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括…...

使用QT C++编写一个带有菜单和工具条的文本编辑器

您好,这是必应。我可以帮您生成一段使用QT C编写一个带有菜单和工具条的文本编辑器的代码,但是请注意,这只是我的创造性的输出,并不代表任何权威或专业的观点。如果您想要了解更多的相关知识,请自行搜索或咨询专家。以…...

文法和语言的基本知识

一、什么形式化的方法用一套带有严格规定的符号体系来描述问题的方法二、什么是非形式化的方法对程序设计语言的描述从语法、语义和语用三个方面因素来考虑所谓语法是对语言结构定义所谓语义是描述了语言的含义所谓语用则是从使用的角度去描述语言三、符号串字母表和符号串字母…...

学习其他人的代码,成为更好的程序员

学习其他人的代码,成为更好的程序员1. 广泛阅读2. 分析代码3. 记笔记4. 实验5. 分享你的发现6. 结论参考如何成为一名更好的Python程序员??? 学习编码是一个持续的过程,需要实践、实验和向他人学习的意愿。提高编码技能的最佳方法之一是学习他人的代…...

新星计划-JAVA学习路线及书籍推荐

CSDN的各位友友们你们好,今天千泽为大家带来的是JAVA学习路线及其经典书籍推荐,接下来让我们一起了解一下JAVA的学习路线吧!如果对您有帮助的话希望能够得到您的支持和关注,我会持续更新的! 目录 1.JAVASE及其书籍推荐 2.初级数据结构与算法及其书籍推荐 3.MySQL及其书籍推荐…...

【大数据】Hive系列之- Hive-DML 数据操作

Hive系列-DML 数据操作数据导入向表中装载数据(Load)语法操作用例通过查询语句向表中插入数据(Insert)创建一张表插入数据基本模式插入(根据单张表查询结果)查询语句中创建表并加载数据(As Sele…...

day2 —— 判断字符串中的字符是否唯一

目录 前言 问题描述 代码解释 前言 若是想要了解基本语法的话,请到(7条消息) C语言从练气期到渡劫期_要一杯卡布奇诺的博客-CSDN博客查看相应的语法细节 强烈安利这篇文章 —— (4条消息) 筑基五层 —— 位运算看这篇就行了_要一杯卡布奇诺的博客-CSDN博客 问题…...

176万,GPT-4发布了,如何查看OpenAI的下载量?

大家好,这里是程序员晚枫。 昨天新一代GPT4发布了,今年GPT不断给大家带来惊喜。 在OpenAI的官网,也公开了GPT的Python调用第三方库:openai。 今天我们就来看看,这个Python智能接口~ 1、代码说明 开发过Python项目…...

蓝蓝算法题(一)

讲在前面:1.本人正在逐步学习C,代码中难免有C和C(向下兼容)混用情况。2.算法题目来自蓝蓝知识星球,没有对应的判决系统,运行到判决系统可以会有部分案例不能通过。 求素数 暴力求解(1 - n试探…...

Python截图自动化工具

1、展示部分源码(写的比较乱,哈哈) 2、功能展示 1)首页 2)按钮截图(用于自动翻页) 3)保存位置按钮(选择图片保存的位置) 4)重复次数,就是要截取多少次 5)定位截屏(截取的内容&#x…...

网络作业2【计算机网络】

网络作业2【计算机网络】前言推荐网络作业2一. 单选题(共3题,19.8分)二. 多选题(共1题,6.6分)三. 填空题(共8题,52.8分)四. 判断题(共3题,20.8分&…...

如何给网页加速,如何加速网页速度?

如何加速网页速度?提高移动网页加载的速度,可以从服务器的优化、网页的容量、请求响应等方面入手,这些方面优化后必然可以提高加载速度。1、服务器硬件软件配置要好,网络、读写响应等要做好优化。2、可以开启gzip压缩技术&#xf…...

linux kernel 5.0 inline hook框架

github:https://github.com/WeiJiLab/kernel-hook-framework 一、项目介绍 Usually we want to hack a kernel function, to insert customized code before or after a certain kernel function been called, or to totally replace a function with new one. How can we…...

【Java版oj】day12二进制插入、查找组成一个偶数最接近的两个素数

目录 一、二进制插入 (1)原题再现 (2)问题分析 (3)完整代码 二、查找组成一个偶数最接近的两个素数 (1)原题再现 (2)问题分析 (3&#xff0…...

【24】Verilog进阶 - 序列检测2

VL35 状态机-非重叠的序列检测 1 思路 状态机嘛,也是比较熟悉的朋友啦, 我就火速写出了STG。如下黑色所示: 2 初版代码 `timescale 1ns/1nsmodule sequence_test1(input wire clk ,input wire rst ,input wire data ,output reg flag ); //*************code**********…...

详解线段树 ---更新查询

目录 一.问题引入 二.线段树 1.什么是线段树 2.线段树的举例 三.构建线段树 1.思路分析 2.代码实现 四.更新 1.思路分析 2.代码实现 五.查询 1.思路分析 2.代码实现 一.问题引入 有n个整数的数组,我们要 求解下标从left到right的元素之和为多少(query操作),然后还…...

【C语言进阶:刨根究底字符串函数】strncpy、strncat、strncmp函数

再前几篇的博客中大家可能发现了,strcpy,strcat,strcmp 这三个函数在使用时对源字符串没有长度限制,几乎是将源字符串的内容全部进行操作。在VS编译器中的这些函数显得不安全了,因此VS会提醒你在其后加上 _s &#x…...

计算机面试常见问答题目

英语口语 自我介绍 Hello, teachers. My name is Wang Xu. I come from Ningxia. I graduated from the School of Computer Science, Xi an Jiaotong University, majoring in Internet of Things. Next, I will introduce myself from four aspects. First of all, I studi…...

mac pro m1:安装dump文件内存分析工具——MAT

0. 引言 本文主要针对mac m1下安装Jprofiler进行讲解,安装核心步骤同样适用于其他系统 1. 安装 如果使用的是eclipse可以在插件中直接安装MAT,因为我使用的是idea开发,所以选择独立安装MAT工具 1、下载地址:https://www.eclip…...

并发基础之线程池(Thread Pool)

目录前言何为线程池线程池优势创建线程池方式直接实例化ThreadPoolExecutor类JUC Executors 创建线程池线程池挖掘Executors简单介绍ThreadPoolExecutor核心类ThreadPoolExecutor 类构造参数含义线程池运行规则线程设置数量结语前言 相信大家都知道当前的很多系统架构都要求高…...

【C语言进阶】内存函数

天生我材必有用,千金散尽还复来。 ——李白 目录 前言 一.memcpy函数 ​1.实现memcpy函数 2.模拟实现memcpy函数 二.memmove函数 1.实现memmove函数 2.模拟实现memmove函数 三.memcpy函数和memmove函数的关系 四.memcm…...

Java开发 - ELK初体验

前言 前面我们讲过消息队列,曾提到消息队列也具有保存消息日志的能力,今天要说的EL看也具备这个能力,不过还是要区分一下功能的。消息队列的日志主要指的是Redis的AOF,实际上只是可以利用了消息队列来保存,却并不是消…...

AI_Papers周刊:第六期

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 2023.03.13—2023.03.19 文摘词云 Top Papers Subjects: cs.CL 1.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation 标题:UPRISE:改进零样本评估…...

JS运行环境、包管理、打包工具总结

🌳JS运行环境-node.js 运行环境就是代码解析和执行的程序,比如jvm等虚拟机,他们的主要工作就是根据设定的语法规则解析编译代码,然后运行代码。 js的语法规则遵循ES规范。 🍁node.js Node.Js官网 Node.js是一种基于Ch…...

day4网络编程(广播和组播)

1.广播 发送端&#xff08;类似于客户端&#xff09; 流程&#xff1a; 创建套接字 填充接收端&#xff08;服务器&#xff09;网络信息结构体 bind(非必须绑定) 设置允许广播 向接收端&#xff08;服务器&#xff09;发送数据 关闭套接字文件 #include <stdio.h> #in…...