- 博客(46)
- 资源 (4)
- 收藏
- 关注
原创 华为鸿蒙签名失效The certificate format is incorrect, please check your appCertFile parameter
华为运行突然报错,提示签名失败。如下:这是因为之前配置的签名失效了,根据官网这个配置自动签名就好了https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-signing如果还是不行,将该目录下的签名证书文件删除再重新自动签名
2025-03-10 14:36:24
543
原创 鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.
鸿蒙项目接入支付宝后,运行提示error: install parse native so failed.该问题可能由于设备支持的 Abi 类型与 C++ 工程中的不匹配导致.根据官网提示在模块build-profile.json5中添加“x86_64”依然报错查询发现目前支付宝SDK的依赖blueshieldsdk仅支持arm架构,导致了无法在x86模拟器上运行。所以推荐在真机上调试使用。
2025-02-07 14:10:29
862
原创 Android studio SDK Manager显示不全的问题解决
发现SDK Manager中只显示已下载的SDK版本,想下载其他版本下载不到,尝试翻墙也没用,修改host文件成功。选择一个地址,比如180.163.150.161,在cmd里面确定可以ping通。输入dl.google.com,进行ping检测。
2024-03-12 16:23:19
1277
原创 Error:No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android
引入一个项目,配置完NDK提示此错误出现此错误的原因是因为官方不推荐使用mipsel-linux-android了,所以gradle没有支持,但是没有会导致旧版本编译不通过。打开Project Structure,查看SDK Loaction下NDK的路径,在文件夹中打开该路径进入toolchains文件夹查看,确实没有报错的文件方法一(无效了)此方法无效了,因为新版NDK已经没有mipsel了官方下载需要版本的NDK,然后解压,找到ndk目录下toolchains文件夹下的mipsel-l
2021-08-30 16:35:45
1138
原创 Android 插件化换肤 思路及实现
插件化换肤包括应用内换肤和下载apk换肤1. 换肤效果先看效果,此demo比较简陋,主要实现了颜色、图片、自定义View、字体样式、状态栏换肤等模块2. 换肤思路先说插件化换肤主要思路:一般应用换肤主要都是更换颜色、图片等资源,所以我们首先需要拿到要换肤的资源ID,然后在皮肤包中设置该属性值为想改变的颜色或图片资源,原应用内下载皮肤包,通过代码即可实现换肤。例如:一个TextView的颜色需要改变,那么我们需要得到该TextView的textColor属性对应的颜色ID值,假设为android
2021-08-19 18:45:25
756
1
原创 Android MeasureSpec解析
1. MeasureSpec组成MeasureSpec是View的一个内部类,由一个32位的int值组成,前两位代表SpecMode测量模式,后30位代表SpecSize大小值。其中测量模式共有三种:EXACTLY(确定):父控件为子View指定确切大小,对应match_parent、50dp等AT_MOST(最多):你的大小不能大于父控件给你指定的size,但具体是多少,得看你自己的实现,对应wrap_contentUNSPECIFIED(未指定):父控件不对你有任何限制,你想要多大给你多大
2021-08-04 17:18:24
918
原创 Android中的锁——synchronized内置锁和Lock显示锁(自用)
内置锁(synchorinized):包括类锁(static修饰)和对象锁(没有static修饰),是可重入锁(自己不会把自己锁死,可内部递归调用自己,能把自己释放出来),是不能中断的,非公平锁显示锁(Lock): ReentranLock重入锁Lock lock = new ReentranLock(true); // 传入true,创建一个公平锁读写锁(ReadWriteLock):速度快公平锁和非公平锁死锁:synchronized嵌套// 都需要在synchronized中使用w
2021-07-24 15:46:15
1094
1
原创 Handler系列——IdleHandler(五)
什么是IdleHandler?当MessageQueue为空或者目前没有需要执行的Message时会回调的接口对象。IdleHandler 被定义在 MessageQueue 中,它看起来好像是个Handler,其实只是一个有单方法的接口,也称为函数型接口: public static interface IdleHandler { /** * Called when the message queue has run out of messages and will now
2021-07-22 15:04:07
213
原创 Handler系列——HandlerThread(四)
HandlerThread是Thread的子类,严格意义上来说就是一个线程,只是它在自己的线程里面帮我们创建了LooperHandlerThread 存在的意义如下
2021-07-22 14:40:23
312
原创 Handler系列——同步屏障(三)
看同步屏障之前首先要对Handler有一定的了解,可以先看这篇文章:Handler又是什么鬼东西(附源码)定义大家应该知道,线程的消息都是放到同一个MessageQueue里面,取消息的时候是互斥取消息,而且只能从头部取消息,而添加消息是按照消息的执行的先后顺序进行的排序。那么问题来了,同一个时间范围内的消息,如果它是需要立刻执行的,那我们应该怎么办,按照常规的办法,我们需要等到队列轮询到我自己的时候才能执行,但是显然达不到我们立即执行的需求,所以,我们需要给紧急需要执行的消息创建一个绿色通道,这个
2021-07-22 12:11:28
438
1
原创 Android 内存泄漏、内存抖动和内存溢出
这里写目录标题一、内存二、Java GC(垃圾回收机制)三、定义四、内存泄漏原因及解决办法4.1 外部类持有Activity的静态引用4.2 非静态内部类和匿名内部类生命周期导致的内存泄漏4.3 监听回调处理4.4 资源未及时关闭4.5 集合4.6 static关键字修饰的变量由于生命周期过长5. 内存溢出的原因5.1 大量的图片、音频、视频处理,当在内存比较低的系统上也容易造成内存溢出5.2 Bitmap对象的处理5.3 间接原因——内存抖动一、内存Java是在JVM所虚拟出的内存环境中运行的,And
2021-07-22 00:48:00
776
3
原创 Kotlin 中 out和in
关于java中泛型的上下限和读取模式先看这篇文章Java中泛型上下限及读写模式对java中有一定的了解后,再来看kotlin中与之对应的定义作用Javakotlin可读不可写extendsout可写不可读superin代码中实现如下,注释写的很清楚,不支持的都注释了,可以自己敲一敲感受一下/** * kotlin 中 用out 和in 分别对应 ? extends 和 ? super * out === ? extends 可读不可写 * in =
2021-07-21 14:09:57
284
1
原创 Java中泛型上下限及读写模式
在java中类的继承extends和super我们平常经常用到,但是还有上下限和读写模式需要了解,二者是不一样的东西先定义FatherClass最为父类,ChildClass继承自FatherClass,SonClass继承自ChildClassclass FatherClass {}class ChildClass extends FatherClass {}class SonClass extends ChildClass {}1. 上限 extends关键字 可读不可写上限
2021-07-21 14:02:20
873
3
原创 Kotlin——高阶函数
这里写目录标题1. 高阶函数1.1 高阶函数定义1.2 函数类型定义1.3 高阶函数的用途2. 高阶函数高级用法2.1 apply函数2.2 写一个自己的apply函数3. inline内联函数1. 高阶函数1.1 高阶函数定义高阶函数是将函数用作参数或返回值的函数。如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数称为高阶函数1.2 函数类型定义函数类型定义的基本规则: /* methodName函数名 * (Int,String) 函数的参数类型 * Un
2021-07-20 17:41:22
4356
6
原创 Kotlin中的Lambda表达式——函数类型常量(高阶函数基础)
Lambda表达式在kotlin中的引用,两种引用方式: (形参类型) 例如:var m03: (Int, Int) -> Int = { a, b -> a + b }= {具体参数名} 例如:var m04 = { a: Int, b: Int -> a + b }其中方法必须有具体的实现才能正确调用函数,否则报错几种写法举例,手打多熟悉熟悉fun main(args: Array<String>) { //() ->
2021-07-19 18:59:00
289
2
原创 Handler系列——线程同步问题(二)
目录1. Hadler的作用2. MessageQueue消息管理3. enqueueMessage源码4. next()源码如果对handler了解不多先看上一篇handler基础:Handler又是什么鬼东西1. Hadler的作用handler是用于线程间通信的,但是它并不是仅仅用于处理UI界面,而更多的handler是整个app通信的框架。Android是基于事件驱动的,即所有的activity生命周期都是通过handler事件驱动的。既然handler这么重要,那它的线程安全就至关重要,
2021-07-19 17:17:34
479
原创 Handler系列——是什么鬼东西(附源码)(一)
handler消息机制,包括四个部分:Message:消息,在子线程传递到主线程,其实是内存共享MessagrQueue:消息队列,用来给消息队列中添加和存储message,是单链表实现的优先级队列Looper:循环调用looper.loop()方法,从messageQueue中取消息,取到的消息通过dispatchMessage()传递给handler处理,一个线程只能有一个LooperHandler:发送和接收处理消息用户点击应用图标发生了什么:launcher(桌面进程,其实也是一个ap
2021-07-19 16:27:35
484
原创 APK打包、安装流程
文章目录一、APK打包流程二、 APK安装流程一、APK打包流程通过AAPT工具进行所有资源文件(AndroidManifest.xml文件、布局文件、xml文件等)的打包,并生成R.java文件通过AIDL工具处理所有aidl文件生成.java文件通过javac工具编译项目源码,生成.class文件通过DX工具将所有.class文件转换成dex文件,此步骤主要是将java字节码转换为Dalvik字节码,压缩常量池以及清楚冗余信息等工作通过apkBuilder工具将所有资源文件、dex文件
2021-07-08 15:44:57
992
原创 Binder到底是什么鬼东西
文章目录前言一、Binder是什么?二、内存映射三、一次完整的Binder通信流程四、Binder通讯模型前言Binder,一个非常神奇的东西,普通开发过程中可能感觉根本见不到它的身影,但其实无处不在,例如contentProvider就是通过Binder实现一、Binder是什么?Binder,一个通过内存映射实现跨进程通信的东东,Android中一个进程空间分为用户空间和内核空间,其中用户空间数据不可共享,内核空间数据可共享。因此跨进程通信需要内核空间的支持,传统IPC通信例如管道,Soc
2021-07-06 17:54:48
3081
原创 AS中NDK配置错误问题解决 NDK is missing a “platforms“ directory
新建项目支持了C++结果怎么都编译不过,报错NDK is missing a "platforms" directory.A problem occurred configuring project ':app'. java.lang.NullPointerException (no error message)如下:查了一下说是我的ndk环境配置有问题,但是高版本的Android studio是不用自己手动配置ndk的,并且点击File–Project Structure查看项目下的ndk配置是配
2021-03-14 00:25:33
10537
2
原创 Android项目升级API29 + 迁移AndroidX
昨天上线更新项目,收到反馈Google自11月2日后上线的项目,targetSDKVersion必须要在29以上,我的项目目前适配的是28一开始以为简单的升级一下就好,把该改的改完后发现报错,编译不通过。网上查询后发现,自API29后,项目必须迁移AndroidX才可以用,原来的support只支持到28,并且后续官方可能不会继续维护了,看来迁移到AndroidX是大势所趋。第一步在一切开始前,确保Android studio版本3.2及以上,新建分支进行升级操作。更新项目版本到29,原始项目
2020-11-19 17:10:54
2062
原创 Android连接不上服务器com.android.org.bouncycastle.jce.excption.ExtCertPathValidatorExcption
在一台新设备上运行软件,怎么都连不上网,还是远程操作,只能toast出日志发过来看,日志如下:com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorExcption:Could not validate certificate经查证是因为Https 连接时SSL 证书握手认证出现了错误,因为https的操作和时间戳有关,机器时间与服务器时间不匹配,导致过期不能取到数据。解决办法:将设备的系统时间和网络时间同步即可...
2020-07-21 10:59:58
1091
原创 AS导入项目报错Failed to resolve
AS添加Github项目报错Failed to resolve: com.github.GrenderG:Toasty:1.1.4,这是因为项目中依赖的库com.github.GrenderG:Toasty:1.1.4没找到造成的。解决方法:在project目录下的build.gradle文件中,添加如下代码:maven { url "https://jitpack.io" }重新运行即可。...
2020-07-15 19:40:01
705
原创 AS报错Plugin with id ‘org.greenrobot.greendao‘ not found.怎么办?
AS导入别人的项目报错Plugin with id 'org.greenrobot.greendao' not found.,这是因为你的Project目录下的build.gradle文件没有配置classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'引起的,项目中添加在运行就好了。...
2020-07-15 18:39:09
4984
原创 Manifest merger failed with multiple errors, see logs问题一系列解决方法
Android studio编译出现Manifest merger failed with multiple errors, see logs问题,命令行输入gradlew processDebugManifest --stacktrace,查看错误详情:因为一开始运行报错提示添加tools:replace="android:appComponentFactory",加上之后还报错 tools:replace specified at line:7 for attribute android:appCo
2020-07-14 10:51:49
371
原创 Mac 下bash gradle command not found,Gradle命令无法使用解决
Mac 下使用gradle命令没有效果,报错bash gradle command not found,原因我们在windows系统下配置了环境变量而Mac 下没有配置。解决方法:在Mac 下找到gradle安装目录如下:在访达——应用程序——Android Studio应用程序处右键->显示包内容,打开之后按照Contents->gradle->gradle-xxx->bin路径,找到gradle路径。gradle文件右键,选择【显示简介】,查看详细路径,/Appli
2020-07-08 11:16:31
3350
2
原创 Mac安装AS SourceTree Homebrew JDK Git环境配置等优秀博文备份(自用)
JDKhttps://blog.csdn.net/transformed/article/details/82316815Githttps://www.jianshu.com/p/7edb6b838a2egit安装成功无法克隆或ssh配置方法:https://www.cnblogs.com/xiaohaodeboke/p/12617776.htmlHomebrew正常教程:https://blog.csdn.net/HH2030/article/details/81437233国内镜像教程:h
2020-07-08 10:39:26
376
原创 Mac下解决AS出现Failed to open zip file. Gradle‘s dependency cache may be corrupt问题
倒入项目报错如下:Failed to open zip file.Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Re-download dependencies and sync project (requires network)Re-download dependencies and sync project (requires networ
2020-07-01 11:24:50
7384
原创 Mac配置完环境变量后每次重启终端都需要重新执行source ./bash_profile
Mac电脑配置完flutter环境变量后发现每次重启终端都需要重新执行source ./bash_profile环境变量才能生效,检查发现是因为装了iTem2+zsh,导致每次加载的是 ~/.zshrc文件,而 .zshrc文件中并没有定义环境变量。解决:在.zshrc文件最后一行添加:source ~/.bash_profile保存即可。...
2020-06-30 20:08:33
2428
原创 Error: No pubspec.yaml file found. This command should be run from the root of your Flutter project.
尝试Flutter官网终端命令行生成和运行flutter项目,最后一步flutter run怎么都不对,报错如下:Error: No pubspec.yaml file found.This command should be run from the root of your Flutter project.Do not run this command from the root of your git clone of Flutter.翻译:错误:找不到pubspec.yaml文件。
2020-06-30 18:08:30
6469
1
原创 Mac ssh Permission denied (publickey). fatal: Could not read from remote repository.
新手Mac开发环境配置,sourcetree和bitbucket经历重重问题终于配好了连上了,但是关机重启后发现pull和push操作又不管用了,报错:git@bitbucket.org: Permission denied (publickey). fatal: Could not read from remote repository.检查.ssh/目录下的公钥私钥文件都存在,并且config文件中的配置都没问题,IdentityFile指向对应连接bitbucket的pub文件。我本地两个s
2020-06-30 12:43:34
1659
原创 Flutter 报错Could not determine the dependencies of task :app:compileDebugJavaWithJavac
运行一个GitHub上的flutter项目报错Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'。网上查了一下一种是说删除android文件夹下的.gradle文件夹,然后再项目根目录下执行flutter clean命令,试了一下对我来说没有用处。尝试另外一种,因为伟大的墙造成的无法访问Google,导致编译不成功,修改flutter安装目录下的\packages\flutter_tools\gra
2020-06-10 20:49:29
17606
原创 Flutter项目运行时报错Your app is not using AndroidX
flutter 项目运行报错Your app isn’t using AndroidX.这是因为在项目中没有使用AndroidX,在gradle.properties文件下添加这两行代码android.enableJetifier=trueandroid.useAndroidX=true
2020-06-10 15:55:08
553
原创 git 账号密码错误remote: Incorrect username or password (access token)
因为全局和本地的git用户名密码不一致,长久未用的一个项目重新输入密码不注意输错了,一直提示先用’git config --local --list’ 检查当前项目user.name和user.email查询完成后win10下通过 控制面板——>点击用户账户——>点击凭据管理器——>点击windows凭据——>普通凭据里找到需要修改的凭据,点击编辑,修改保存即可。然后再push即可成功...
2020-06-08 16:19:03
1315
原创 Flutter 时间控件汉化Locale引用出错解决
在练习Fluuter时间控件使用汉化时最后一步出了问题,Locale一直报错,提示类型不匹配,因为是新手,查了半天才反应过来是和引入的date_format库冲突了。需要Window.dart下的Locale,但是因为当前页依赖的date_format库,所以自动引用的是date_format下的Lacale类,导致类型不匹配报错。**解决办法:**重命名date_format库即可,引用时方法前加入重命名的库名。...
2020-06-08 01:05:20
1680
原创 Android多渠道打包汇总(六)—— 美团的多渠道打包方式
1. 原理大家都知道,apk文件其实可以看做是一个压缩包,我们把一个Android应用包当作zip文件包进行解压,然后发现在签名生成的目录下(META-INF)添加一个空文件不需要重新签名。利用这个机制,该文件的文件名就是渠道名。这种方式不需要重新签名等步骤,非常高效。2. 打包步骤先从github上下载打包需要的工具,里面也有详细的使用方法介绍 https://github.com/Gavin
2017-08-30 17:34:26
1416
原创 Android多渠道打包汇总(五)—— 友盟的多渠道打包方式
友盟就提供了多渠道打包的方式,可用于渠道统计等。 现在Android的构建工具换成了gradle,通过gradle,简单配置后就可以实现自动打所有渠道包。1.按照umeng的要求,manifest文件中需要有<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />这段配置,UMENG_CH
2017-08-30 17:34:00
683
原创 Android多渠道打包汇总(四)—— 为什么要进行多渠道打包
1. 什么是多渠道包?渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等2. 为什么要提供多渠道包?我们要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计(这就是添加渠道信息的用处)。3. 实现多渠道打包的原理:一般来讲,这个渠道的标识会放在AndroidManifest.xml的Application的一
2017-08-30 17:33:30
5430
原创 Android多渠道打包汇总(三)—— 打包时应注意的问题
注意!!!千万千万不要把签名文件(xxx.keystore/xxx.jks)弄丢了!!!!如果签名文件丢失,公司发布应用时只能重新进行签名,这样会导致 - 用户安装时必须先卸载才能成功安装 - 应用市场上的排行就会从0开始了 所以签名文件一定要妥善保管打包时会遇到的最常见的问题<?xml version="1.0" encoding="utf-8" ?> <resources xmlns:
2017-08-30 17:32:58
398
flutter_windows_1.17.1-stable.zip
2020-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人