自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (1)
  • 收藏
  • 关注

原创 Framework模块编译脚本利器

android源码目录下的build/envsetup.sh文件,描述编译的命令– m: Makes from the top of the tree.(编译所有的模块)– mm: Builds all of the modules in the current directory.(编译当前目录下的模块,当前目录下要有Android.mk文件 )

2025-04-25 13:40:59 588

原创 Android报错Unable to make field private static final java.util.Map java.lang.ProcessEnvironment的解决方法

再导入一个之前项目后出现 Unable to make field private static final java.util.Map java.lang.ProcessEnvironment.theCaseInsensitiveEnvironment accessible: module java.base does not “opens java.lang” to unnamed module @d041cf 的错误提示。JDK版本太高,与项目中使用的jdk版本不对应导致的。

2025-04-21 17:39:25 145

原创 Soong系统构建

为了方便统一管理,Soong将out/soong/build.ninja文件 、out/build-.ninja文件和out/build--package.ninja文件, 合成为out/combined-*.ninja文件,由该文件记录所有待执行ninja文件。soong_ui.bash脚本主要做了两件事: 1.根据"android/soong/cmd/soong_ui/"内容,生成soong_ui的go可执行程序,生成路径:out/soong_ui 2.执行soong_ui程序。

2025-04-16 18:19:22 697

原创 git添加add忽略文件

忽略 .idea 目录,包含 IntelliJ IDEA 或 Android Studio 的项目配置。# 忽略 local.properties 文件,该文件包含本地开发环境的配置。# 忽略 .gradle 目录,包含 Gradle 构建缓存和配置信息。# 忽略 build 目录,该目录包含编译生成的文件。2.将上面的规则添加到.gitignore文件。# 忽略 Kotlin 编译缓存。# 忽略生成的 APK 文件。# 忽略生成的 AAB 文件。# 忽略中间编译产物。

2025-04-15 16:41:12 324

原创 新版本AndroidStudio配置maven阿里云镜像

google()google()google()google()google()google()google {content {google()

2025-04-03 22:26:40 1205

原创 Room 数据库升级问题 java.lang.IllegalStateException: Migration didn‘t properly handle xxx

但是,如果我们希望我们的应用程序更加用户友好,我们可以提供数据库的迁移。使用Room 也很容易实现。Room 会发现它的架构已经改变,并且它与数据库版本不再一致。有时需要更改现有的数据库架构。... 省略getter setter tostring 放法。第一个选项是最简单的选项,但它不是最好的用户,因为我们将清除整个数据库…不推荐这种解决方案,但可以使用。//当添加int 类型数据时,需要添加默认值。//新添加的age 字段。notNull 的值不同。

2025-03-21 16:50:38 806

原创 Two-factor authentication (2FA) is required for your GitHub account

今天在尝试打开 GitHub 页面时,突然出现了一个错误提示:“Two-factor authentication (2FA) is required for your GitHub account”(如图所示)。这个错误提示表明,GitHub 账户需要启用双因素认证(2FA)才能继续使用。在网上找了一些办法可以解决 但是 太麻烦 找了比较简单的方法。选择 “二维码激活” ,然后扫描的码进行注册就可以了。

2024-12-20 15:56:41 1181 1

原创 AndroidStudio AppInspection和Profiler无法选择进程

1.具体情况如下,AndroidStudio AppInspection和Profiler无法选择进程。2.解决方法使用adb root 后使用adb remount命令。

2024-12-18 14:38:49 566

原创 ANR分析实例

那么ANR的原因找到了:线程3持有了一把锁,并且自身长时间不释放,主线程等待这把锁发生超时。这个导致的原因有很多,这个问题无法从ANR日志里去分析,就需要从系统日志里去查找问题,这个报错的时间上,需要往前去找日志信息,从日志里可以找到关键的信息,如下。一般来说,发生内存紧张,会导致多个应用发生ANR,所以在日志中如果发现有多个应用一起ANR了,可以初步判定,此ANR与你的应用无关。3、内存紧张:系统分配给一个应用的内存是有上限的,长期处于内存紧张,会导致频繁内存交换,进而导致应用的一些操作超时。

2024-11-12 14:15:09 1384

原创 Android 代码混淆详解

Android SDK自带了混淆工具Proguard。它位于SDK根目录下面。ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名。最后,预校验的Java6或针对Java MicroEdition的所述处理后的码。如果开启了混淆,Proguard。

2024-10-14 17:25:08 2255

原创 网络请求监测利器-NetWorkInspector

打开androidStudio的AppInspector,切换到NetWorkInspector,选择需要监测的应用进程,点击到应用会发起网络请求的页面,会出现图一的图形变化,然后点击它,出现图二。如上图,请求状态,请求地址,请求参数,返回参数,还有调用堆栈,应有尽有,真是太方便了。

2024-10-12 16:19:26 375

原创 【Android Gradle 插件】Android 依赖冲突处理

再执行。

2024-09-29 10:36:23 1154

原创 matrix demo运行报 Need zipalign apk but D:\Android\android-sdk/build-tools/29.0.3/zipalign is not exist

D:\Android\android-sdk\build-tools\29.0.3 路径下,找到。找到build.gradle文件有提示 window平台,要补全全称。运行腾讯matrix性能分析工具demo,报以下错误。,补全名字,补全名字如下图。

2024-09-09 11:20:37 406

原创 拦截指定http请求头,请求参数,请求方法,保存到本地

将拦截器添加到okhttp即可。

2024-08-07 17:34:27 1025 1

原创 javascript开发环境搭建

,},},},},},editorReadonly"翻译搜索复制。

2024-07-18 15:09:19 1456

原创 软件架构设计分层架构与 PO、VO、DTO、BO、POJO、BO/DO、DAO

试想一下,业务逻辑和技术细节糅杂在一起的情况:所有的代码都写在ServiceImpl里面,前几行代码是做validation的事,接下来几行是做convert的事,然后是几行业务处理逻辑的代码,穿插着,我们需要通过RPC或者DAO获取更多的数据,拿到数据后,又是几行convert的代码,在接上一段业务逻辑代码,然后还要落库,发消息.....等等。对于只有一个业务的简单场景,对扩展性的要求并不突出,这也是为什么扩展设计常被忽略的原因,因为我们大部分的系统都是从单一业务开始的。软件架构是一个系统的草图。

2024-07-16 14:27:34 971

原创 8种有效方法助您释放C盘空间存储

俗话说“工欲善其事,必先利其器”,为了擦亮我们工作的利器,本文提供了8种有效的方法来清理Windows电脑的C盘空间。从基本的磁盘清理到高级的分区调整,这些方法将帮助您释放C盘空间,提升电脑性能。如果您发现您的Windows电脑C盘空间不足,以下是8种有效的方法来清理和优化C盘空间。

2024-07-12 15:12:41 1507

原创 将 build.gradle 配置从 Groovy 迁移到 Kotlin

Android Gradle 插件 4.0 支持在 Gradle build 配置中使用 Kotlin,以替代 Groovy(Gradle 配置文件中通常使用的编程语言)。在编写 Gradle 脚本方面,Kotlin 比 Groovy 更优,因为 Kotlin 更易于阅读,并且提供了更好的编译时检查和 IDE 支持。

2024-07-04 14:46:45 1830 6

原创 epub3相关资料整合

1.EPUB电子书标准研究 (一篇比较易懂的中文文档)支持Android,IOS,Window等多平台。3.EPUB 3与EPUB 2.0.1有所不同。

2024-06-25 14:58:39 394

原创 beyondCompare工具

链接:https://pan.baidu.com/s/10TxNj0ZvLh2qusYZCPaGRA?过期后删除对应路径下所有文件,重启软件即可。

2024-05-10 15:12:43 349

原创 android数据库编辑查询器

百度网盘下载连接:链接:https://pan.baidu.com/s/1H6TTw2KCvVKY05sDigB1_Q?sqliteStudio,这是一款非常好用又轻量级得android数据库编辑器,解压缩,点exe,直接导入db文件即可。

2024-05-10 15:02:09 277

原创 android 预加载进程

因为打开独立进程会重新fork,耗时比较长,所以解决思路是。在跳转之前,预加载进程,从而避免启动进程的时间。选择看不见的组件进行预加载,如。c.进程是否开启过判断。

2024-05-08 19:05:24 946

原创 AndroidStudio右下角显示内存使用情况

4.在“Appearance & Behavior" 下的“Appearance”中,找到“Show Memory Indicator” 选项。5.勾选“Show Memory Indicator”选项,以显示内存指示器,点击 Android Studio 左上角的“File”,然后选择“Settings”3.在设置界面中,选择“Appearance & Behavior”。6.点击ok即可,未生效,重启下studio。1.打开 Android Studio.

2024-04-17 11:02:00 1769

原创 EditText不显示系统键盘,可用来显示自定义的键盘

/ isOpen若返回true,则表示输入法打开。4.2低版本中有一个setSoftInputShownOnFocus方法, 但是被声明成hide了, 所以通过反射调用.以上方法调用后, EditText获取到焦点时,就不会弹出系统的键盘了.再低一点的版本,直接通过setInputType的方式兼容.系统键盘 包含普通键盘和现在很多ROM定制的密码安全键盘。然后弹出自定义的键盘,就可以完美解决冲突了.

2024-03-13 14:40:01 1143

原创 Android 中注解的使用

Android Support Library 从 19.1 版本开始引入了一个新的注解库,其中包含了很多的,使用它们修饰我们的代码, 可以让我们提高程序的开发效率,让我们更早的发现问题。以及对代码施以规范,让代码更加有可读性。这篇文章就来简单了解下这些注解,以及其使用。如有错误和遗漏,欢迎留言和补充~注:现在我们新建项目直接就依赖了 support.appcompat 包,其中已经依赖了 annotations 包。

2023-11-12 23:23:02 653

原创 反编译so文件(IDA_Pro)

安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发。使用NDK开发能够编译c/c++程序,最终生成so文件。而so文件是一个二进制文件,我们是无法直接分析so文件的,所以这里需要用到一个反编译工具IDA Pro。IDA Pro能够对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序。

2023-09-18 16:13:06 3427

原创 Android 查看当前手机、APP的ABI架构信息

命令:adb shell getprop ro.product.cpu.abi。

2023-09-07 11:00:23 1332

原创 Android 中SettingsActivity(PreferenceFragmentCompat)的简单使用

如果你需要一个简单的APP设置,可以使用sharedPreferences进行存储,我们可以借助AndroidStudio快速创建一个用于设置的Activity,其实它是继承PreferenceFragmentCompat,存储方式用的就是sharedPreferences,只是帮我们节省了很多操作。

2023-08-28 19:22:29 1584

原创 位运算(包括OR,AND,XOR,NOR,NAND,XNOR,以及&0xFF等常见应用)

位运算(包括OR,AND,XOR,NOR,NAND,XNOR,以及&0xFF等常见应用)位运算是C语言的重要特点,是其他计算机高级语言所没有的,位运算是以二进制为对象的运算,二进制表示法与计算机内存完全对应,每个单元(位)都可以设置成开(1)或关(0)。而且位运算比正常的运算符速度要快很多,因为位运算是一种底层的运算,但是理解起来会偏难一些。其他补充:1、位运算符中除~外,均为耳目运算符2、运算只能是整型或者字符型的数据,不然会报错常见的位运算符。

2023-08-26 01:34:00 2269

原创 Kotlin 高阶函数详解

一个函数如果参数类型是函数或者返回值类型是函数,那么这就是一个高阶函数。如果一个函数的参数是函数类型或者返回值是函数类型,那么这个函数就是高阶函数。高阶函数可以简化我们的代码,并且利用 inline 关键字可以提高高阶函数的性能。在 kotlin 源码的 Standard.kt 文件中定义了几个我们平时会经常用到的高阶函数,可以去看一看。

2023-08-23 23:38:36 803

原创 Android NDK JNI与Java的相互调用

/获取一个自定义java对象//获取一个自定义长度的java对象数组extern "C"//其实这个内容前面基本已经说过,要想通过jni生成一个java类对象,其实最主要的一步就是获取那个java类的对象//1、获取到java类Student的class//2、第二部获取Student的构造方法,第二个参数固定传,第三个方法是签名,无参构造方法的签名就是 ()V//3、获取Student的对象,后面给对象赋值就完成了java类对象的创建。

2023-08-22 22:01:33 892

原创 c语言strtol函数、strtod函数、strtoul函数浅悉

可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为8时,合法字符为‘0’,‘1’,……base为10时,合法字符为‘0’,‘1’,……base 为16时,合法字符为‘0’,‘1’,……‘n’,base为36时,合法字符为‘0’,……如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。最后,需要说明的是,对于nptr指向的字符串,其开头和结尾处的空格被忽视,字符串中间的空格被视为非法字符。

2023-08-18 18:21:41 7227 1

原创 android Ndk Jni动态注册方式以及静态注册

1.项目名\app\src\main下新建一个jni目录2.在jni目录下,再新建一个Android.mk文件写入以下配置LOCAL_PATH := $(call my-dir)//获取当前Android.mk所在目录include $(CLEAR_VARS)//清空变量,确保不会有不必要的变量被继承下去LOCAL_MODULE := TestJni//定义了将要生成的库的名称,及xx.so。

2023-08-12 21:18:50 689

原创 android res中values-swxxdp计算

注意该配置文件得读取规格是最接近但不超过,如还有两个values-sw660dp和values-sw678dp,则会选取最接近得values-sw674dp读取。最小宽度计算方法:s w = 160 ∗ 手机宽度像素 / d p i sw=160*手机宽度像素/dpisw=160∗手机宽度像素/dpi。如面板分辨率为480x480,dpi为160,density为1,那么px : dp = 1 : 1。过公式计算得sw=674,即文件类型是values-sw674dp(二.px与dp之间转换。

2023-08-08 14:48:33 1100

原创 Android中的ABI

ABI是Application Binary Interface的缩写。ABI常表示两个程序模块之间的接口,且其中一个模块常为机器码级别的library或操作系统。ABI定义了函数库的调用、应用的二进制文件(尤其是.so)如何运行在相应的系统平台上等细节。。

2023-08-07 22:45:26 1171

原创 深入剖析java字节码

在Java语言中,要重载(Overload)一个方法,除了要与原方法具有相同的简单名称之外,还要求必须拥有一个与原方法不同的特征签名,特征签名就是一个方法中各个参数在常量池中的字段符号引用的集合,也就是因为返回值不会包含在特征签名之中,因此Java语言里无法仅仅依靠返回值的不同来对一个已有方法进行重载。如果C的常量池中包含某个CONSTANT_Class_info成员,且这个成员所表示的类或接口不属于任何一个包,那么C的ClassFile结构的属性表中就必须含有对应的InnerClasses属性。

2023-08-04 15:25:24 544

原创 Java对象创建回收全过程

在讲java创建之前,我们先来了解下组成,当Java虚拟机启动后,会将系统分配给JVM的空间逻辑上划分为五个部分,如下图所示::放置new出来的对象、数组:线程运行前,会给其分配一个线程栈空间,线程中每个方法执行都会生成一个栈帧放入线程栈中,栈帧里面包含局部变量表、操作数栈、动态连接和方法出口四部分。局部变量表:存储方法中的局部变量操作数栈:用于赋值或者计算的数据动态链接:方法执行的入口地址方法出口:返回调用方法的地址:与虚拟机栈类似,是调用非java方法的栈:存储类元信息、常量池。

2023-08-04 00:03:56 325

原创 JVM GC ROOT分析

这个对象又有可能在引用其他对象,然后被引用的其他对象又有可能在引用其他对象,只要由op2这个对象去触发,能够去找到最终的一个对象,假如你有一个对象preson.这个对象经过由op2触发的对象。注意:static 成员其实他是在我们的方法区中的,一般的他是不会随着对象的生命周期去创建。java是进程跑起来,这里面会有很多的线程,不管是垃圾回收线程,还是用户线程等等这样一个个线程,Thread 的这类也能称之为GCROOT,也就是说成为GCroot的会有很多。它对应的是一个方法的执行,那么然后呢?

2023-08-03 23:56:10 1032

原创 Android P 之Zygote进程源码分析

c++世界(app_main.cpp入口):动态加载虚拟机动态库,启动java虚拟机注册JNI本地函数,减轻虚拟机负担装载ZygoteInit到java虚拟机,正式进入java世界java世界(ZygoteInit.java入口):绑定套接字,用来接收新Android应用程序运行请求预加载Android资源,提高应用进程启动速度启动并运行SystemServer(运行AMS、PMS等核心服务)处理新Android应用程序运行请求。

2023-07-17 23:22:49 328

原创 Android init 进程启动相关分析

init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取init.rc中的相关配置,从而来启动其他相关进程以及其他操作。init进程被赋予了很多重要工作,init进程启动主要分为两个阶段:第一个阶段完成以下内容:ueventd/watchdogd跳转及环境变量设置挂载文件系统并创建目录初始化日志输出、挂载分区设备启用SELinux安全策略。

2023-07-13 22:37:06 1399

alipay_demo.zip

支付宝Demo,下载即可用,请注意手机上安装支付宝

2019-07-26

空空如也

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

TA关注的人

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