
Android相关
火龙映天
javac MyJava.java↓
java MyJava↓
Hello World!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android崩溃采集工具:xCrash适配16KB对齐
xCrash是一款开源的Android崩溃采集工具,其项目的GitHub地址为:https://github.com/iqiyi/xCrash。由于谷歌强制要求在2025.11.1之后上传的所有app都必须适配16KB对齐。而目前xCrash没有适配16KB对齐,并且此项目已经超过三年没有维护了。所以就需要我们自己来适配了,改动如下:基于官方最新tag:v3.1.0的代码进行修改:1.build.gradle中升级CMake版本:cmakeVersion = "3.18.1"2.xcra原创 2025-07-31 12:00:14 · 210 阅读 · 0 评论 -
解决Android Studio中创建的模拟器第二次无法启动的问题
Android Studio中创建的模拟器,首次启动时一切正常。但是关闭模拟器,下一次启动时一直显示:Connecting to the Emulator,无法启动。无法启动的原因通常是默认开启了模拟器的快速启动功能,首次启动时是“冷启动”,一切正常;但关闭时会保存一个“快照”,下次启动就从这个快照“热启动”恢复,如果快照损坏或保存异常,就会导致模拟器卡在启动界面,无法进入系统。此问题几乎是必现的,所以这算是Android Studio的一个bug,如果要正常启动模拟器,就需要冷启动,而不是热启动。原创 2025-07-31 09:32:51 · 234 阅读 · 0 评论 -
Android Studio历史版本下载方法
Android Studio最新稳定版本下载:https://developer.android.google.cn/studio?hl=zh-cn说明:此网址下载的版本是官方最新的稳定版本,并且是安装包格式的。例如:Windows系统为exe格式、macOS系统为dmg格式、Linux系统一般为deb。Android Studio历史版本下载:https://developer.android.google.cn/studio/archive说明:1.如果此网址打开后没有显示任何版本,则需原创 2025-05-23 10:01:32 · 1532 阅读 · 0 评论 -
解决使用PendingIntent.getBroadcast时出现java.lang.IllegalArgumentException异常的问题
当app为targetSdk31及以上,并且在Android12及以上系统中调用PendingIntent.getBroadcast(context, 0, intent, 0)接口时会抛出异常:java.lang.IllegalArgumentException: com.haier.uhome.uplus.seasia: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be原创 2025-04-08 19:55:09 · 298 阅读 · 0 评论 -
安装adb命令行工具
1.浏览器打开如下链接:https://developer.android.com/tools/releases/platform-tools?按照电脑系统选择对应的工具下载,本文选择:下载适用于 Mac 的 SDK Platform-Tools。2.下载成功后,得到一个压缩包:platform-tools-latest-darwin.zip,将此压缩包解压到合适的位置,比如:/Users/pc/sw/setup/program/platform-tools,然后将此目录配置到PATH环境变量中。原创 2025-04-07 19:28:27 · 438 阅读 · 0 评论 -
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 · 992 阅读 · 0 评论 -
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 · 1932 阅读 · 0 评论 -
Android代码中获取系统默认WebView浏览器内核版本
【代码】Android代码中获取系统默认WebView浏览器内核版本。原创 2025-03-12 11:57:38 · 271 阅读 · 0 评论 -
解决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 · 441 阅读 · 0 评论 -
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 · 790 阅读 · 0 评论 -
Android中解决Button组件英文全部自动大写的问题
从Android5.0开始Button组件的textAllCaps属性默认为true,意为将英文字符全部转为大写。而Android5.0之前的系统默认为false,不会自动转换大写。原创 2025-02-12 17:18:12 · 641 阅读 · 0 评论 -
Android中获取系统屏幕高度和宽度的方法
/** * 获取应用实际可使用的屏幕高度,不包括系统状态栏和导航栏等系统UI占用的空间 * @return 应用实际可使用的屏幕高度,单位:像素 */ private int getDisplayHeight() { WindowManager windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); Displa原创 2025-02-12 14:22:41 · 334 阅读 · 0 评论 -
从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 · 547 阅读 · 0 评论 -
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 · 992 阅读 · 0 评论 -
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 · 1133 阅读 · 0 评论 -
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 · 711 阅读 · 0 评论 -
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 · 1682 阅读 · 0 评论 -
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 · 667 阅读 · 0 评论 -
各品牌手机设置导航方式的操作路径的不完全统计
各品牌手机设置导航方式的操作路径的不完全统计: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 · 483 阅读 · 0 评论 -
解决加载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 · 714 阅读 · 0 评论 -
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 · 844 阅读 · 0 评论 -
一种下载谷歌商店中应用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 · 8879 阅读 · 0 评论 -
Activity去掉默认动画效果
Activity无论是否设置style主题,默认都是有动画效果的。如果要去掉默认的动画效果,只需要在原有主题的基础上添加一个属性:windowAnimationStyle,并设置为@null即可。具体步骤如下:1. styles.xml中添加主题: @null原创 2024-05-06 12:54:17 · 825 阅读 · 0 评论 -
查看Android系统默认WebView浏览器内核版本
首先了解2个概念:1.Android系统默认WebView浏览器内核版本:是指Android的app中如果直接使用WebView组件加载网页的话,所使用的浏览器内核。这个浏览器来源于Android系统,app端无法修改。2.系统内置的浏览器应用的内核版本:是指Android系统中内置的名叫"浏览器"的app中所使用的浏览器内核。而这个"浏览器"app虽然是系统内置的,但是其本质上跟用户自己安装的app没有太大区别。所以此app可能使用了自定义的浏览器,所以其与系统默认浏览器内核版本可能不同。了解了上原创 2024-04-11 20:30:38 · 7899 阅读 · 1 评论 -
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 · 1761 阅读 · 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 · 20278 阅读 · 0 评论 -
解决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 · 2529 阅读 · 0 评论 -
设置DialogFragment背景透明
设置DialogFragment背景透明的方法如下:1.在onCreateView()方法中设置弹窗内部的背景透明。@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { // 设置弹窗内部的背景透明 getDialog().getWindow().setBackgroundDrawableResour原创 2023-08-18 14:01:54 · 1559 阅读 · 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 · 2366 阅读 · 0 评论 -
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 · 660 阅读 · 0 评论 -
解决小米手机无法通过数据线安装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 · 1998 阅读 · 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 · 8156 阅读 · 0 评论 -
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 · 838 阅读 · 10 评论 -
解决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 · 4260 阅读 · 0 评论 -
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 · 725 阅读 · 0 评论 -
解决小米手机app调试时出现Installation via USB is disabled错误的问题
如果小米手机在app调试时无法安装,并且出现如下错误:Installation via USB is disabled.可以尝试如下步骤解决:设置->更多设置->开发者选项,滑动到页面底部,然后关闭选项:启动MIUI优化。原创 2023-05-23 10:09:50 · 2213 阅读 · 1 评论 -
取消三星手机的自动移动的蓝色框
当三星手机显示了自动移动的蓝色框时,通常是因为开启了某个辅助开关造成的。如果想取消这个蓝色框,可以尝试这样设置:设置-辅助功能-敏捷度和互动-通用开关,关闭开关即可。原创 2023-05-12 10:05:32 · 3487 阅读 · 0 评论 -
用adb命令查看Android手机支持的CPU ABI类型
获取当前Android手机支持的最高的CPU ABI类型:adb shell getprop ro.product.cpu.abi得到的可能是:arm64-v8a获取当前Android手机支持的所有CPU ABI类型:adb shell getprop ro.product.cpu.abilist得到的可能是:arm64-v8a,armeabi-v7a,armeabi原创 2023-05-11 16:13:16 · 1917 阅读 · 0 评论 -
Android中获取亮屏状态和监听亮屏和灭屏事件
package com.xiboliya.demo;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Build;import android.os.Bundle;import原创 2023-04-17 16:05:29 · 1439 阅读 · 0 评论 -
使用Animation实现组件闪烁
Animation可以实现组件的简单动画,例如:组件闪烁。实现步骤如下:TestActivity.javapackage com.xiboliya.demo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;imp原创 2023-04-17 11:12:58 · 413 阅读 · 0 评论