自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(379)
  • 资源 (3)
  • 收藏
  • 关注

原创 JDK版本与Class版本的对应关系对照表

使用十六进制的方式打开.class文件,第5~8这4个字节表示Class版本,其中5、6字节表示次要版本号,7、8字节表示主要版本号。后4个字节:00 00 00 37表示Class版本号,此处的次要版本号为00 00,值为0;主要版本号为:00 37,此处为十六进制,将其转换为十进制后,即为:00 55。Class版本:即Class文件的编译版本,表示java文件编译时所采用的JDK版本号,此信息存在编译后生成的.class文件中。JDK版本:即Java SE版本,比如:1.4、5.0、8、11等。

2025-03-28 17:18:08 207

原创 AGP与Android Studio版本的兼容对照表

注:此对照表来源于官方的:https://developer.android.com/build/releases/gradle-plugin?通常配置在Android工程的根build.gradle中,例如:classpath 'com.android.tools.build:gradle:7.0.4'。AGP与Android Studio版本的兼容对照表。

2025-03-27 13:13:22 362

原创 AGP与Gradle版本的兼容对照表

AGP:全称为Android Gradle Plugin,或称Android Gradle插件。通常配置在Android工程的根build.gradle中,例如:classpath 'com.android.tools.build:gradle:7.0.4'。Gradle版本:通常配置在gradle-wrapper.properties中,例如:distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip。

2025-03-27 12:56:34 274

原创 Android代码中获取系统默认WebView浏览器内核版本

【代码】Android代码中获取系统默认WebView浏览器内核版本。

2025-03-12 11:57:38 125

原创 解决No matching client found for package name xxx编译报错的问题

但是google-services.json文件是从谷歌后台下载的,所以通常不修改此文件,而是修改app包名。修改app包名或修改google-services.json中package_name属性与app包名一致。

2025-02-14 17:14:41 299

原创 Android中获取so文件来源于哪个库

如果你不确定该怎么写,也可以Rebuild工程,然后在Build选项卡中的输出信息中查找关键字:NativeLibs,看到类似:Task :xxx:merge***NativeLibs的打印,其中merge***NativeLibs就是我们想要的取值。Android app中可能有很多的.so文件,有时我们不确定这些.so文件都是来源于哪些库的,可以通过在build.gradle中添加代码来统计。首先Clean Project,然后Run app。

2025-02-14 16:05:19 539

原创 Android中解决Button组件英文全部自动大写的问题

从Android5.0开始Button组件的textAllCaps属性默认为true,意为将英文字符全部转为大写。而Android5.0之前的系统默认为false,不会自动转换大写。

2025-02-12 17:18:12 380

原创 Android中获取系统屏幕高度和宽度的方法

/** * 获取应用实际可使用的屏幕高度,不包括系统状态栏和导航栏等系统UI占用的空间 * @return 应用实际可使用的屏幕高度,单位:像素 */ private int getDisplayHeight() { WindowManager windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); Displa

2025-02-12 14:22:41 194

原创 从Intent中获取所有参数的key和value

从Intent中获取所有参数的key和value的方法如下:Activity1页面中创建Intent对象,添加参数,并跳转Activity2页面:Intent intent = new Intent();intent.putExtra("key1", "value1");intent.putExtra("key2", "value2");intent.putExtra("key3", 100);intent.setClass(this, Activity2.class);this.start

2024-09-27 17:13:26 479

原创 Android中为文本添加下划线、删除线、加粗效果

Android中如果要为文本添加下划线、删除线、加粗效果的话,需要在代码中执行:TextView txtTest = findViewById(R.id.txt_test);txtTest.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); // 删除线txtTest.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); // 下划线txtTest.getPaint().setFlags(Paint.FAKE

2024-09-27 16:34:50 864

原创 Android中开启系统WebView的inspect调试功能

Android的app中如果直接使用WebView组件加载网页,并且需要进行H5页面inspect调试的话,可以在app中调用如下接口:WebView.setWebContentsDebuggingEnabled(true);推荐在Application的onCreate()接口中调用。如果要在电脑端进行Android app中H5页面的inspect调试,最常用的方式有2种:1.使用Chrome浏览器:(需要翻墙)在地址栏中输入:chrome://inspect,即可打开inspect调试页面

2024-09-25 16:47:56 930

原创 Android中解决fi、fl字符显示时连在一起的问题

在某些手机或设置某些字体时,会出现fi、fl字符显示的时候连在一起,具体来说就是:f和i这两个字符在一起的时候,i上方的点跟f上方的钩子末端重合了;f和l这两个字符在一起的时候,l顶端和f的钩子末端重合了。其实这称为:合字(或称:连字、链接字、合体字,英文:Ligature),详细解释见:https://zh.wikipedia.org/wiki/%E5%90%88%E5%AD%97。为什么要有合字?简单来说就是:为了解决印刷排版上的问题而诞生的。所以合字并不是bug,而是一种显示风格或显示方式。而

2024-08-14 19:47:57 517

原创 Android Studio中创建apk签名文件

本文以macOS中Android Studio 2021.1.1版本为例介绍创建apk签名文件的操作步骤:1.启动Android Studio,并打开一个Android项目。2.依次点击菜单:Build -> Generate Signed Bundle / APK...。3.在弹出的"Generate Signed Bundle or APK"弹窗中选择"APK"选项,并点击"Next"按钮。4.在弹窗中点击"Create new..."按钮,以创建一个新的签名文件。5.在弹出的"New Key

2024-08-10 14:42:47 1296

原创 Android中判断当前语言是否为繁体中文

Locale locale;if (Build.VERSION.SDK_INT >= 24) { locale = LocaleList.getDefault().get(0);} else { locale = Locale.getDefault();}String systemLanguage = locale.getLanguage();if (systemLanguage.equals("zh")) { String languageTag = locale.to

2024-08-10 13:09:50 554

原创 macOS中使用QuickTime Player查看视频的每一帧

macOS中使用QuickTime Player查看视频的每一帧,有2种方法:1.使用QuickTime Player打开视频文件,然后点击菜单:显示->显示剪辑,按键盘的左右方向键可以逐帧查看画面。此方法适用于查看视频每一帧的显示效果。2.使用QuickTime Player打开视频文件,然后点击菜单:编辑->修剪...,拖动底部的滑块,会实时显示时间,精确到10毫秒。此方法适用于统计两帧画面之间的精确时间长度。

2024-08-10 10:41:08 2017

原创 各品牌手机设置导航方式的操作路径的不完全统计

各品牌手机设置导航方式的操作路径的不完全统计:OPPO:OPPO Find X:设置-便捷工具-导航方式OPPO Find X3:设置-系统设置-系统导航方式一加9 Pro:设置-其他设置-系统导航方式vivo:iQOO Z5:设置-系统导航华为:华为nova 10:设置-系统和更新-系统导航方式荣耀:荣耀7X:设置-系统-系统导航方式荣耀9X:设置-系统和更新-系统导航方式小米:小米14 Pro:设置-桌面-系统导航方式红米note5:设置-更多设置-全面屏魅族:

2024-08-08 18:35:35 322

原创 java中使用递归方式删除目录及子文件

/** * 递归删除目录及子文件 * @param file 删除的文件或目录 */public static void deleteFiles(File file) throws Exception{ File[] list = file.listFiles(); if (list != null) { for (File tempFile : list) { deleteFiles(tempFile); // 递归调用 } }

2024-08-01 17:36:30 480

原创 解决加载so时出现java.lang.UnsatisfiedLinkError dlopen failed xxx.so is 32-bit instead of 64-bit异常的问题

解决加载so时出现如下异常:java.lang.UnsatisfiedLinkError: dlopen failed: "/data/user/0/com.test/.../libtest.so" is 32-bit instead of 64-bit说明当前App加载的so都是64位的,而libtest.so是32位的,所以加载时抛出异常。因为App加载so时,只能加载同样位数的so:只加载32位的so或只加载64位的so,不能混合加载。所以可能出现这种问题的情况有:1. App打包有问题

2024-08-01 14:59:07 538

原创 Android中接入hook框架:lancet-base

me.ele:lancet-base是"饿了么"开发的Android平台的开源hook框架,GitHub地址为:https://github.com/eleme/lancet。此框架的优点如下:1.编译速度快, 并且支持增量编译。2.简洁的 API, 几行 Java 代码完成注入需求。3.没有任何多余代码插入 apk。4.支持用于 SDK, 可以在SDK编写注入代码来修改依赖SDK的App。接入me.ele:lancet-base框架的步骤如下:1.在项目根目录的build.gradle

2024-07-21 14:57:54 666

原创 kotlin中判断变量类型的方法

在java中如果想判断一个变量是什么类型,可以使用instanceof关键字,例如:if (str instanceof String) { // 逻辑代码}而在kotlin中没有instanceof关键字,但有is关键字,其作用与instanceof相同,例如:if (str is String) { // 逻辑代码}

2024-07-16 20:04:04 266

原创 一种下载谷歌商店中应用apk文件的方法

通常在谷歌商店中的应用,只能安装到设备,不能获取到应用的apk安装文件。如果要获取应用的apk文件,可以使用如下方法:1.复制应用在谷歌商店的首页地址:谷歌商店(网址:https://play.google.com/store/apps)中搜索需要下载的应用,然后跳转到此应用的首页,然后复制此页面的url。比如:Google Home,其首页的url是:https://play.google.com/store/apps/details?id=com.google.android.apps.chrom

2024-05-25 13:32:26 6523

原创 macOS访达中如何使用键盘打开文件

在Windows的资源管理器中在选中的文件上按键盘的回车(Enter)键即可打开文件。但是macOS的访达中按回车键的话,却是重命名文件,类似于Windows的F2键功能。而大多数情况下,用户最常用的功能是打开文件,而非重命名文件。其实访达中也可以实现键盘打开文件,只不过是组合键:command+O或command+↓。

2024-05-13 12:56:36 1339

原创 Activity去掉默认动画效果

Activity无论是否设置style主题,默认都是有动画效果的。如果要去掉默认的动画效果,只需要在原有主题的基础上添加一个属性:windowAnimationStyle,并设置为@null即可。具体步骤如下:1. styles.xml中添加主题: @null

2024-05-06 12:54:17 736

原创 查看Android系统默认WebView浏览器内核版本

首先了解2个概念:1.Android系统默认WebView浏览器内核版本:是指Android的app中如果直接使用WebView组件加载网页的话,所使用的浏览器内核。这个浏览器来源于Android系统,app端无法修改。2.系统内置的浏览器应用的内核版本:是指Android系统中内置的名叫"浏览器"的app中所使用的浏览器内核。而这个"浏览器"app虽然是系统内置的,但是其本质上跟用户自己安装的app没有太大区别。所以此app可能使用了自定义的浏览器,所以其与系统默认浏览器内核版本可能不同。了解了上

2024-04-11 20:30:38 6708 1

原创 macOS中设置触发角快捷功能

macOS中可以设置屏幕的四个角的快捷功能,当鼠标移动到屏幕的四个角的时候可以触发特定的功能,设置方法如下:1.点击屏幕左上角的苹果图标,选择菜单:系统偏好设置...。2.打开系统偏好设置界面,点击"调度中心"。3.点击页面左下角的"触发角...",打开"活跃的屏幕角"界面。4.可以看到屏幕四个角旁边都有一个下拉列表用于设置,默认是"-"表示没有功能。可以只设置部分角的功能。比如要设置屏幕右上角显示桌面功能,可以在右上角的下拉列表中选择:"桌面"。选择好功能后,点击"好"按钮,设置完成。

2024-04-01 19:36:04 4289

原创 GIMP中修改图片DPI

DPI(Dots Per Inch,每英寸点数)是一个量度单位,用于点阵数码影像,指每1英寸(2.54厘米)长度中,取样、可显示或输出点的数目。通俗来讲就是:图像每英寸长度内的像素点数。jpg(或jpeg)是最常用的基于像素的图片文件格式,图片文件的dpi直接影响到图片打印出来的效果。理论上来说,dpi越大打印出来越清晰。查看图片dpi的方法:文件管理器中:Windows系统:文件管理器中在图片文件上点击右键,弹出快捷菜单,点击“属性”。点击“详细信息”选项卡,在“图像”中可以看到:水平分辨率和垂

2024-03-10 15:09:12 2968

原创 Android代码中判断是否为澎湃系统、获取澎湃系统版本号

/** * 是否为澎湃系统 * * @return true为澎湃系统 */public static boolean isHyperOs() { return ("Xiaomi".equalsIgnoreCase(android.os.Build.BRAND) && !TextUtils.isEmpty(getHyperVersion()));}/** * 获取澎湃系统版本号 * * @return 版本号 */public static Stri

2023-12-06 12:55:27 1513 3

原创 解决Build was configured to prefer settings repositories over project repositories编译报错的问题

Android编译时出现如下报错:Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle'原因是重复配置repositories导致的,所以解决方案就是删除多余的repositories定义,比如settings.gradle中的定义。可以全局搜索关键字:repositories,保

2023-10-11 19:59:57 17129

原创 解决No PSK available. Unable to resume编译报错的问题

如果使用jdk11编译Android工程时,出现如下报错:> Could not GET 'https://maven.aliyun.com/repository/public/com/test/open_sdk/1.0.0/open_sdk-1.0.0.pom'.> No PSK available. Unable to resume.可能的原因是jdk11版本过低,这是一个jdk11的已知bug:https://bugs.openjdk.java.net/browse/JDK-8213202

2023-10-11 19:47:20 2314

原创 设置DialogFragment背景透明

设置DialogFragment背景透明的方法如下:1.在onCreateView()方法中设置弹窗内部的背景透明。@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { // 设置弹窗内部的背景透明 getDialog().getWindow().setBackgroundDrawableResour

2023-08-18 14:01:54 1463 1

原创 解决Android8.0中透明Activity锁定方向崩溃问题

该问题为 Android 8.0 系统 bug。在 8.0 手机上,当应用 targetSdkVersion > 26 时,透明背景的 Activity 如果锁定了屏幕方向,打开该 Activity 就会触发必现的崩溃。触发具体条件为:①App的targetSdkVersion > 26。②Activity使用了透明属性的主题:Activity使用的 theme 中 windowIsTranslucent属性为true 或 windowIsFloating属性为true或未配置windowIsTrans

2023-08-18 13:51:46 1999

原创 AndroidManifest的activity标签中配置的theme属性的生效流程

AndroidManifest的activity标签中配置的theme属性的生效流程大体如下:1.android.content.pm.PackageParser.parseActivity()接口中读取AndroidManifest的activity标签中配置的theme属性,代码如下:a.info.theme = sa.getResourceId(R.styleable.AndroidManifestActivity_theme, 0);说明:① a.info为android.content

2023-08-11 19:54:08 584

原创 解决使用Timer时出现Task already scheduled or cancelled异常的问题

在使用java.util.Timer和java.util.TimerTask执行定时任务时,如果在调用Timer的schedule或scheduleAtFixedRate方法时,报错如下:java.lang.IllegalStateException: Task already scheduled or cancelled说明当前Timer对象已经执行结束或被取消了,通常情况下是执行过Timer或TimerTask的cancel()接口,当前的Timer和TimerTask已经被消耗了,不能继续使用。如

2023-07-29 09:53:04 2393

原创 类图画法总结

1.普通关联关系单向关联【带箭头的实线,箭头指向被关联类】:类中持有一个成员变量,成员变量即为被关联类。双向关联【不带箭头的实线或带双箭头的实线】:两个类中分别持有对方的成员变量。自关联【带箭头的实线,箭头指向自己】:类中持有自己类的成员变量。2.聚合关系【带空心菱形的实线,菱形指向整体】:类中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。3.组合关系【带实心菱形的实线,菱形指向整体】:整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不

2023-07-25 15:59:47 661

原创 解决小米手机无法通过数据线安装app的问题

如果小米手机无法通过数据线安装app,并且有如下错误的情况:Installation did not succeed.The application could not be installed: INSTALL_FAILED_USER_RESTRICTEDList of apks:[0] '/Users/zhao/sw/workspace/demo/app/build/outputs/apk/debug/app-debug.apk'Installation via USB is disable

2023-07-05 16:48:26 1717 1

原创 Android源码在线查看的网站

如果想查看Android各个历史版本的源码,有如下几个网站可供参考:http://aospxref.com说明:包含Android 5.0~Android 13的源码,目前算是比较新的。搜索功能比较强大。推荐使用。http://androidxref.com/说明:包含Android 1.6~Android 9的源码,搜索功能比较强大。https://www.androidos.net.cn/sourcecode说明:包含Android 1.6~Android 10和Kernel 2.6.

2023-07-05 16:40:47 7829

原创 Android代码中判断当前App是否为64位

/** * 当前App是否为64位 * * @param context 上下文 * @return 当前App为64位返回true,反之返回false */public static boolean isApp64BitAbi(Context context) { try { String nativeLibraryDir = context.getApplicationInfo().nativeLibraryDir; int nextIndexOfL

2023-06-27 09:35:46 802 10

原创 解决执行shell命令时出现argument list too long错误的问题

如果执行shell命令时出现argument list too long的错误,其原因是需要操作的目标文件过多,比如超过2万个文件。解决方式就是分批甚至逐个处理目标文件。1. grep命令命令行执行:grep "Java" * -l如果返回:zsh: argument list too long: grep命令改为:ls | xargs -n 100 grep "Java" -l说明:-n参数表示每批执行多少条数据。2. cp命令命令行执行:cp -r *.zip ..

2023-06-26 13:01:49 2708

原创 解决No signature of method编译报错的问题

编译Android工程时,如果出现类似如下的错误:Build file '/Users/zhao/sw/workspace/myProject/app/build.gradle' line: 3A problem occurred evaluating project ':app'.> No signature of method: build_3iciaioon0bu97t06e9d2wjmp.android() is applicable for argument types: (build_3

2023-05-26 14:42:35 3981

原创 Android代码中判断so文件是否为64位

/** * 判断so文件是否为64位 * @param soFile so文件 * @return so文件为64位返回true,反之返回false */ public boolean isSo64BitAbi(File soFile) { RandomAccessFile randomAccessFile = null; try { randomAccessFile = new RandomAc

2023-05-24 09:19:25 680

阿里mPaaS日志的分析工具,Chrome插件:LogAnalyzer

阿里mPaaS日志的分析工具,Chrome浏览器的插件。

2021-06-03

SnowPad(冰雪记事本)打包下载

SnowPad(冰雪记事本),是一款java代码实现的记事本程序,可以在Windows和Linux下运行的增强型记事本。本资源中包括源代码和打包好的jar包。

2018-09-29

jEdit-V5.1.0 exe安装程序

jEdit是一个用Java语言开发的文本编辑器,在GPL下发布。它可以在Windows、Linux、Mac OS等多种平台下运行,并且有很多插件,可以扩充基本功能。它也支持80多种文件类型的文法加亮显示。功能比较强大~此版本是目前最新的!

2013-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除