自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android OpenGL开发实践 - GLSurfaceView对YUV格式数据的处理

一、创建OpenGL ES 环境在清单中声明OpenGL ES为了使您的应用程序能够使用OpenGL ES 2.0 API,您必须在清单中添加以下声明:<uses-feature android:glEsVersion="0x00020000" android:required="true" />构建GLSurfaceView对象class MyGLSurfaceView(...

2019-03-27 20:11:43 4322 5

原创 Android视频编解码

简介  从广义上讲,编解码器就是处理输入数据来产生输出数据。MediaCode采用异步方式处理数据,并且使用了一组输入输出缓存(input and output buffers)。简单来讲,你请求或接收到一个空的输入缓存(input buffer),向其中填充满数据并将它传递给编解码器处理。编解码器处理完这些数据并将处理结果输出至一个空的输出缓存(output buffer)中。最终,你请求或...

2019-02-22 08:36:23 5917

原创 Linux命令行安装配置Android SDK

Linux 命令行的方式安装配置Android SDK

2017-08-16 10:34:37 7001

原创 Rx、kotlin、retrofit三者结合封装的网络请求库

源代码:RxKotlinRetrofitDemo1.定义统一的返回结果类 ResultDatadata class ResultData(var code: Int, var message: String, var data: T?)code:接口返回数据状态码(状态码与后台人员协商),0代表成功,其他值代表不同的错误类型message:接口返回的信息,描述具

2017-08-03 17:40:00 4503

原创 buildSrc使用kotlin开发plugin配置

buildSrc使用kotlin开发plugin配置配置apply plugin: 'java-gradle-plugin'apply plugin: 'kotlin'buildscript { repositories { mavenLocal() maven { url uri("${rootProject.rootDir}/.repo") } maven { url 'https://maven.

2022-03-01 07:18:57 1453

原创 google bundleTool 源码里 com.android.bundle.* 相关的代码爆红

google bundleTool 源码里 com.android.bundle.* 相关的代码爆红解决在builde.gradle里添加依赖:// The repackaging rules are defined in the "shadowJar" task below.dependencies { compileOnly files(project.buildDir.path + "/classes/java/main") ...}...

2022-02-28 12:56:27 1047

原创 groovy 替换文件指定内容

groovy 替换文件指定内容替换指定文件的部分内容脚本static def replaceFileText(file, oldText, newText) { String text = file.text.replaceAll(oldText, newText) file.withPrintWriter { printWriter -> printWriter.print(text) }}使用范例gradle.startParameter.get

2022-02-28 12:44:43 1049

原创 ‘buildSrc‘ cannot be used as a project name as it is a reserved name.

‘buildSrc’ cannot be used as a project name as it is a reserved name.可以尝试使用以下方法解决:打开你的 settings.gradle / settings.gradle.kts 文件将 “buildSrc” 从 included modules 移除重新编译

2022-02-28 12:38:37 2760 1

翻译 ASM 6 Developer Guide

主要数据结构对象模型核心程序包由28个类和接口组成。如果我们排除Opcodes接口,5个抽象访问者类(AnnotationVisitor, ClassVisitor,FieldVisitor, MethodVisitor 和 ModuleVisitor)和6实用工具类(ConstantDynamic, Constants,Handle,Type, TypePath 和 TypeReference),这样,只有16个类。编译类到访问事件的转换仅由一个类(即ClassReader类)完成,该类使用辅助类C

2022-02-28 11:37:41 427

原创 自定义Transform

自定义Transform本文章研究所使用的示例代码:AndroidPluginDemo基础概念术语说明TransformInput所谓Transform就是对输入的class文件转变成目标字节码文件,TransformInput就是这些输入文件的抽象。目前它包括两部分:DirectoryInput集合与JarInput集合。DirectoryInput它代表着以源码方式参与项目编译的所有目录结构及其目录下的源码文件,可以借助于它来修改输出文件的目录结构、目标字节码文件。

2022-02-28 10:53:42 1666

原创 A standalone plugin project

A standalone plugin project我们将插件移至独立项目,以便我们可以发布它并与他人共享。 这个项目只是一个Groovy项目,它产生一个包含插件类的JAR。 这是该项目的简单构建脚本。 它应用了Groovy插件,并将Gradle API添加为编译时依赖项。自定义插件的构建:apply plugin: 'groovy'dependencies { implementation gradleApi() implementation localGroovy()}

2022-02-28 10:39:26 874

原创 编译时注解

编译时注解本篇文章用到的示例代码:AndroidAnnotationDemo声明注解通过@Retention(RetentionPolicy.CLASS)元注解确定我们注解是在编译的时候使用。通过@Target确定我们注解是作用在什么上面的(变量、函数、类等)。确定我们注解需要的参数。编写注解处理器注解处理器(Annotation Processor)是javac的一个工具,它用来在编译时扫描和处理注解(Annotation)。一个注解的注解处理器,以Java代码(或者编译过的字节码)作

2022-02-28 10:15:06 1640

原创 自定义运行时注解

自定义运行时注解声明注解通过@Retention(RetentionPolicy.RUNTIME)元注解确定我们注解是在运行的时候使用。通过@Target确定我们注解是作用在什么上面的(变量、函数、类等)。确定我们注解需要的参数。解析注解找到类对应的所有属性或者方法(至于是找类的属性还是方法就要看我自定义的注解是定义方法上还是属性上了)。找到添加了我们注解的属性或者方法。做我们注解需要自定义的一些操作。1、获取类的属性和方法通过Class对象我们就可以很容易的获取到当前类里面所有

2022-02-28 10:05:00 251

原创 元注解简介

元注解简介简单介绍一下元注解,本篇文章用到的示例代码:AndroidAnnotationDemo@Target@Target元注解用来表明我们注解可以出现的地方,参数是一个ElementType类型的数组,所以@Target可以设置注解同时出现在多个地方。比如既可以出现来类的前面也可以出现在变量的前面。@Target-ElementType类型说明ElementType.TYPE描述类、接口(包括注解类型) 或enum声明ElementType.FIELD用于描述域 -

2022-02-28 09:58:09 361

原创 开发groovy plugin、编译时注解时调试技巧

我们在开发Android plugin、编译注解、groovy脚本的时候,都可以参照该文章的方案调试代码。

2022-02-28 09:41:38 1336

原创 Message: com.android.tools.lint.detector.api.Project.getBuildVariant() NoSuchMethodError

lint 检查中report了com.android.tools.lint.detector.api.Project.getBuildVariant()Lcom/android/tools/lint/model/LintModelVariant; Stack: NoSuchMethodError:DetectorUtils.isBuildVariant(DetectorUtils.kt:39)

2022-02-27 22:56:50 466

原创 Combining Fixes

Combining Fixes您可能会注意到 lint report 的 API 只需要一个LintFix而不是修复列表。我们可能需要如下的两种场景:执行多个字符串替换的快速修复程序将多个 quickfix 提供给用户选择本篇文章用到的源码:AndroidLintcomposite创建一个 composite 修复,该修复由多个单独的修复组成。这是一个如何创建 composite 修复的示例,它将作为一个 fix 执行; 在这里,我们既替换了方法的调用者又替换了方法名: protecte

2022-02-27 21:11:01 310

原创 Downloading https://services.gradle.org/distributions/gradle-7.0.2-bin.zip javax.net.ssl.SSLHandshak

Downloading https://services.gradle.org/distributions/gradle-7.0.2-bin.zip javax.net.ssl.SSLHandshakAndroid studio下载 https://services.gradle.org/distributions/gradle-7.0.2-bin.zip 时发生如下异常:javax.net.ssl.SSLHandshakeException: sun.security.validator.Valida

2022-02-24 22:07:19 2581

原创 Android lint检查fix自动导入包

Android Lint fix代码时自动import包

2022-02-15 18:37:25 798

原创 上传包到Maven Central

上传包到Maven Central将自己开发的库上传到Maven Central步骤。Maven Central上创建账户注册帐号https://issues.sonatype.org创建Issue条目描述Group Id域名反转(有效域名,后面需要校验该域名属于你本人),如果没有域名,可以直接使用自己的github反转(如github.com/lkl22反转后是io.github.lkl22,其中lkl22是你的github用户名。为了规范化,建议全小写。)Pr

2022-02-13 14:38:29 929

原创 上传artifacts到maven仓库

简单介绍几种上传jar/aar到maven仓库的方法。

2022-01-21 22:27:36 1041

转载 史上最全的maven的pom.xml文件详解

史上最全的maven的pom.xml文件详解

2022-01-21 21:40:19 514

原创 Android 循环录制最近一段时间的视频

Android 循环录制最近一段时间的视频在日常开发测试中,往往发生问题了再去想办法复现录屏、抓取日志的工作,往往会出现偶现问题很难复现,导致问题很难定位。在这里给出一个能抓取历史操作视频的解决方案:将录屏的视频帧数据一帧帧的缓存到一块固定大小的内存中(空间循环利用)发现问题时,触发混合器(MediaMuxer)将指定时间范围的视频帧数据取出存储为指定的mp4文件数据缓存数据缓存用来解决历史数据保存,需要合理的分配内存大小,根据自己的实际情况(手机屏幕分辨率、多长时间的视频记录等等)选择合适的

2022-01-03 13:59:39 2706

原创 通过电脑向手机输入框输入特殊字符及中文

adb shell 输入文字通过adb shell指令向手机输入框输入指定的内容,包括特性字符、中文等。adb shell ime使用usage: ime list [-a] [-s] ime enable ID ime disable ID ime set IDThe list command prints all enabled input methods. Usethe -a option to see all input methods. U

2021-12-31 22:09:13 9036

转载 Gradle编译时所有Task信息打印

————————————————版权声明:本文为CSDN博主「拿节」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/zhejiang9/article/details/105241392Gradle工程编译的过程,就是执行目标task的过程,如果task存在依赖,则先执行依赖task,如此反复,直到触达无依赖的task就这样,从无依赖task -> 目标task的执行链即建立,接着依次执行task即可,每个

2021-10-27 21:28:37 1625

原创 javaparser - java源码分析修改框架

javaparser 包含一组实现具有高级分析功能的 Java 1.0 - Java 15 Parser 的库。 这包括 Java 13 的预览功能,Java 14 预览功能正在进行中。Analyse: 编写可以遍历 Java 源代码并查找您感兴趣的模式的代码。Transform: 构建的工具不仅可以识别代码模式,还可以更改它们。Generate: 聪明点,不要花时间编写样板,生成它!使用 demo工程: 从官方demo fork的工程里可以看到大部分使用示例(对应于官方指导文档里使用说明)。

2021-09-20 22:16:24 227370 1

原创 java8 stream使用教程

简介Java 8 API添加了一个支持对元素流进行函数式操作的类 Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过 中间操作(intermediate

2021-08-15 23:31:58 431

原创 bat脚本修改文件内容

通过bat脚本从指定的文件里修改指定的文本为新的内容。

2021-08-09 23:26:17 13217 1

原创 Android开发调试技巧

android开发调试技巧调试方式应用日志查看应用日志过滤 logcat 消息Log折叠断点调试使用断点查看和配置断点调试技巧条件断点日志断点异常断点参考文献调试方式应用日志Android Studio 中的 Logcat 窗口会显示系统消息,例如在进行垃圾回收时显示的消息,以及使用 Log 类添加到应用的消息。此窗口可以实时显示消息,也可以保留历史记录,因此您可以查看较早的消息。要仅显示...

2020-05-02 21:09:38 653

原创 Android 主module引用不到依赖module里的依赖库

当我们在使用Android Studio新版本的时候,往往会需要相应的gradle版本,在高版本的gradle里使用 compile 会提示如下警告:为了消除这个warning,可以选择使用’implementation’ 和 ‘api’,当我们在子模块使用 implementation引用jar包、三方库时,主模块在引用该子模块时不能使用子模块引用的jar、三方库里的api。这个就是需要我们...

2019-05-07 19:40:00 2115

原创 Android GLSurfaceView设置透明背景及放置在顶层显示

GLSurfaceView本身是不透明的,在相机预览图像上添加水印有时会采用在surface view上附加一层GLSufaceView绘制各种各样的水印图片,这时需要透明背景的GLSurfaceView并放置在上层显示,可以通过如下方式实现:class MyGLSurfaceView(context: Context, attributes: AttributeSet?) : GLSurfac...

2019-03-24 15:00:16 2990

原创 Android JNI开发简介

JNI思维导图:

2018-11-20 10:58:55 355

原创 Error: Cannot find module 'webpack-cli/bin/config-yargs' at Function.Module._resolveFilename

项目之前使用npm run start执行(“start”: “webpack-dev-server --open --config webpack.dev.js --watch --inline”)时正常,过了一段时间重新拉取代码,再次运行出现如下问题:Error: Cannot find module 'webpack/bin/config-yargs' at Function.Mo...

2018-11-08 14:33:00 3697

原创 Android录制video并抽取第一帧图片

一、申请权限//摄像头权限&amp;lt;uses-permission android:name=&quot;android.permission.CAMERA&quot; /&amp;gt;//文件存储权限&amp;lt;uses-permission android:name=&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot; /&amp;gt;//录制权限&am

2018-11-01 17:27:32 1736 1

原创 Android开发系统应用程序

一、配置清单文件在 manifest 标签里添加属性:android:sharedUserId=“android.uid.system”二、打包apkandroid studio : Build -&gt; Make Project / Rebuild Project或者: Gradle指令 -&gt; gradlew aD / aRelease输出的apk路径: ./app/build...

2018-10-25 09:37:39 2264

原创 webpack打包工具介绍

webpack介绍思维导图:

2018-09-19 11:10:32 455

原创 React 前端开发框架介绍

react思维导图:React生命周期

2018-09-19 10:27:30 2097

原创 Jenkins安装配置

jenkins安装配置

2017-08-18 15:12:03 533

原创 Nginx安装配置

安装下载地址:http://nginx.org/en/download.html 检查是否安装: find -name nginx 查看安装位置: whereis nginx安装需要的依赖 yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel解压安装tar -zxvf nginx-1.13.4.t

2017-08-16 14:29:49 659

原创 Gerrit安装配置

Gerrit安装配置

2017-08-16 12:02:23 1847

FrameDataCacheJNI.zip

视频帧数据缓存框架

2022-01-03

javaparservisited.pdf

javaparser框架官方指导文档

2021-09-20

Android OpenGL处理YUV数据(I420、NV12、NV21)

Android OpenGL 针对YUV格式(I420,NV12,NV21)数据渲染

2019-03-27

Android 5.1 系统应用签名工具

Android 5.1系统签名工具(signapk.jar、platform.x509.pem、platform.pk8)

2018-10-25

webpack打包工具思维导图

webpack打包工具简介,常用的Loader、plugin配置介绍。

2018-09-19

最火的Android开源项目2

最火的Android开源项目 2

2015-05-09

最火的Android开源项目-1

最火的Android开源项目-1

2015-05-09

最火的Android开源项目

最火的Android开源项目

2015-05-09

学生管理系统(linux环境)

嵌入式开发培训课程,c基础和c高级项目实训。

2013-06-04

空空如也

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

TA关注的人

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