自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黑马小杰的博客

努力可能会说谎,但努力一定不会白费

  • 博客(32)
  • 资源 (4)
  • 收藏
  • 关注

原创 Android JNI手册——Java/Kotlin与Native层的相互调用

Android JNI中值/方法的传递与调用一级目录二级目录三级目录按照习惯,我还是会用Kotlin做示范。一级目录二级目录三级目录

2020-06-01 23:31:23 4003

原创 Android Kotlin学习笔记(Java与Kotlin的单例模式比较)

Java与Kotlin的单例模式比较概念引入1.懒汉式1.1 线程不安全的懒汉式Java下的实现Kotlin下的实现1.1 线程安全的懒汉式Java下的实现kotlin下的实现2.饿汉式Java下的实现Kotlin下的实现3. DCLJava下的实现Kotlin下的实现4. 静态内部类Java下实现Kotlin下实现5. 枚举概念引入Java中最简单的设计模式之一,这种模式保证创建自身类的对象只有一个,可以直接访问其中方法自动创建并获得自身对象,不需要直接实例化。因此,单例模式也是创建者模式的一种。我

2020-05-31 23:49:55 667

原创 Android JNI中巧妙的使用动态注册

Android app加载.c/cpp和.so/.a就必然要谈到jni接口的编写,jni接口注册有俩种方式:动态和静态注册。静态注册的方式固然方便快捷,但是这样的话简单demo可以,为了项目的工程化,还是有必要引入动态注册的,好处会在下面讲(恩,我已经说服了我自己,目前的工作中已经逐步替换为动态注册了)。下面就以一个Kotlin工程为例,逐步梳理下详细过程。1.静态注册新建工程创建一个Jni接口的class工具类。class JniUtils { external fun stringFrom

2020-05-30 20:24:23 4178 1

原创 关于OO设计的原则

面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。(百度百科)关于OO设计原则,网上众说纷纭,有6大设计原则,也有5大设计原则的说法。暂时先把这些概念...

2018-02-25 20:39:06 393

原创 Android studio关于Cmake的使用(第二章·编译库文件)

作为一个Android开发,最近在工作中需要频繁的与底层交互,就避免不了与.c/.cpp/so/.a打交道。通过不停的学习,总算摸出来了点门道,跟大家交流交流,也把自己踩过的坑列出来,避免后人上当。目录一丶工程以及文件夹的创建。二 丶配置文件编写。1.配置子Cmake文件。2.配置Project级CmakeList.txt文件3.配置module级build.gradle文...

2017-10-22 20:35:10 3774 4

原创 Android 玩转数据库(二)——GreenDao使用记录

题记说点题外话,大概一年半没有用过GreenDao了(甚至于沉溺于JNI海洋的我,连数据库都很少用了),最近换了一份新工作,其中一个老工程引用了GreenDao。由于年事已高,记忆衰退,边查边粘,甚是墨迹,回到家中,整理一二,免得烦恼。废话不说上代码/注释。一. 插件引入1. APP级别的gradle由于我一般会吧Gradle升级成新版本,所以语法形式稍微不一样1.1 添加plugin注意老版本的grale是这个酱紫的。。。apply plugin: 'org.greenrobot.green

2020-12-19 14:45:00 480 1

原创 Android中记录那些乱七八糟的报错

Kotlin中使用greendao我就是浪一下,想用Kotlin使用GreenDao,然后就莫名其妙的出现了一堆垃圾bug,这里mark一下。PS:不折腾其实就没那么多问题。1. Entity类使用Kotlin别想了亲,XXDao等中间文件直接无法生成。吐血了。2. Kotlin代码编写PropertyConverter也就是@Converter这玩意等于没用了,直接编译报错。Execution failed for task ‘:testgreendao:greendao’.Inner c

2020-12-17 23:46:48 337

原创 Android系统模板——Bottom NavigationActivity解析(一)

题记闲来无事,折腾下AS,突然就想到我一个承诺且未完成的任务:把AS新建的模板Activity整理一遍,顺便熟悉下Kotlin和JetPack。想到公司里面的小伙伴已经被我忽悠到是用Kotlin了,心中窃喜,一鼓作气的继续走在前面吧。简单且实用,有趣且规整,是我对这个几个模板类的总结。我也不知道正文该起什么标题的标题1.新建与使用AS左上角File→New→Act→可以点开Gallery看看具体外观。2.工程结构点击Next,系统会自动生成需要的一切。这里主要分为俩部分,分别是java目录下

2020-12-14 22:25:19 3972 3

原创 设计模式——观察者模式(Observer)

不可否认,观察者模式是JDK中使用最多的模式之一。通过了解观察者模式,至少我能够更好的梳理一对多的关系,还有对于松耦合的概念。使用观察者模式,至少我们能够切换对象在运行时是否能够被通知(更新消息等),简单来说,通过观察者模式,让我们对消息的更新更及时。引入一个很常见的案例。现在有一家气象站负责发布气象消息(WeatherData),作为不同的客户,会有不同的对于气象消息的需求,我们也就需要设计一个...

2020-12-01 23:32:29 8091 1

原创 VMWare 虚拟机安装Linux虚拟环境Ubuntu

VMWare 虚拟机安装Linux虚拟环境的方法1. 工具和资源2. VMWare新建虚拟磁盘2. 安装Ubuntu镜像1. 工具和资源VMware-workstation-full-16.0.0-16894299XX.iso2. VMWare新建虚拟磁盘按照安装向导一步一步走下去即可。打开运行程序,新建虚拟机。我比较偷懒,直接选择少几项配置的典型(推荐)。先不安装镜像文件。我选择linux系统–>Ubuntu。选择Ubuntu因为XX云服务用多了Ubuntu系统用多了

2020-11-16 22:54:13 676 2

原创 源码分析Activity的创建流程(吐血走完源码流程)

题记为什么突然要想要整理下这玩意呢?最近也在刷些题,概念性的我看到了重复最多字眼就是什么View的创建与加载。但是看了好多的文章,无非就是草草的介绍什么measure → layout → draw。看了一会,感觉如果这么回答的话,基本上稍微学过一点的都能回答出来,秉着这事不可能这么简单的思路,感觉有必从源码的角度梳理一遍,以正其心。因为view跟Activity强相关,xml的加载也是在onCreate里面执行,所以决定从Activiy的创建加载来解剖这个问题。1. 怎么看源码欲善其事必先利其器,此

2020-06-22 01:27:48 737

原创 Android代理模式中的那些代码

题记为什么突然会想到整理下代理模式?emm…因为最近头脑风暴了下自己的知识体系,还是对自己代码架构上的东西不够满意。最近梳理的很多知识体系中,反复都提到了代理模式。比如Hook这个玩意真的是令我又爱又恨,其中对动态代理的渗透,让我对这个代码的设计欲罢不能。给篇参考链接:Android插件化原理解析——Hook机制之动态代理。再比如Binder通信,Android 中的AIDL对代理模式的使用也是精彩绝伦。1. 为什么叫代理模式官方解释:一个类代表另一个类的功能。这种类型的设计模式属于结构型模式

2020-06-21 12:12:37 376

原创 Android系统模板——LoginActivity解析

LoginActivity解析题记1. 整体结构2. ui/login2.1 LoginActivity.kt题记最近在研究MVVM,起因是以前的一个类应用商城的项目,我用MVP写的框架,当我准备引入Jetpack组件的时候,结果发现JetPack跟MVP想结合的话有点不伦不类。并这些组件之间的联系很深,甚至可以说是耦合了,我不准备强行融合了,索性就拉上MVVM重构一把吧,当然个人精力有限,组内的健神给了我很大帮助。我也索性把自己作为MVVM小白研究架构的经验分享一波。凡事都讲究方法,我认为最快的途径

2020-06-18 23:38:21 9163 4

原创 描述网络连接流程

网络连接流程0.题记仅仅是自己的一个知识梳理,不具有参考价值,简单回忆一下网络连接的流程,督促自己查看一下相关资料。目的做到不仅要心知肚明,还要做到言出有评。大通话,以一次浏览器访问某个网址为例子。(后续要梳理app通过okhttp连接某个网站,然后着重分析下okhttp的底层!)1.域名解析一个关键点:DNS解析,也就域名解析,作用是URL---->IP地址,形象一点就是一个电话簿。下面给出俩个参考链接。网上通篇博客描述的过程其实就是DNS缓存的过程,详情见链接2。简单顺序就是 :

2020-05-20 00:48:14 1689

原创 Android音视频——Linux(cygwin)配置ndk,编译FFmpeg、RTMP

NDK学习笔记(第二章·cygwin配置ndk,编译FFmpeg)一. 准备工作二. 关于操作路径三. ffmpeg配置文件解析一. 准备工作这里简单说下为什么我都是选择用新版本,因为NDK在r18及以上版本移除了gcc,ffmpeg最新的版本也是针对交叉编译Android平台库,默认使用clang编译,编译方式变了,当然某些文件的路径就变了。这就是为啥我们使用新版本,照着网上博客的编译脚本C...

2020-04-26 23:19:36 680

原创 APP框架梳理

题记毕业3年了!犹豫!彷徨!最近处于一个瓶颈期,公司的代码已经得心应手,但是由于业务原因,网络加载和最新的开源库用的较少,感觉少点什么,就想沉下心来整理一个通用的网络加载框架,流行的技术重新刷一遍,本文就记录下关键节点。初步敲定MVP+retrofit+RxJava作为基础,言不多说,开始拼凑~1 MVPMVP的好处不用赘述了,什么业务逻辑与UI分离一类的等等,随便百度一片博客都讲得天花乱...

2019-09-01 19:49:28 3587

原创 Android Kotlin学习笔记(一)—— Kotlin Koans

题记正所谓纸上觉来终觉浅,绝知此事要躬行。Kotlin陆陆续续都有在看,但是无奈看了忘,忘了看,痛定思痛,决定重新系统化的整理下学习过程。我是用Android Studio进行Android开发,配置起来很简单,关于环境问题请自行百度。1.资料阅读菜鸟教程:一个很方便的学习网站,支持在线译。Kotlin学习中文网 :如其名,大部分的资料都可以在上面找到。(强烈推荐)2.辅助插件进入正...

2019-08-18 20:42:32 589

原创 Android插件化——加载其他APP页面

Android插件化——加载其他APP页面1.分析2.优点3.详细过程3.1 标准化加载接口3.2待加载的APP-B3.3 APP-A 主加载工程3.3.1 加载工具类PlugManager3.3.2 页面加载器 ProxyActivity3.3.3 启动页面 MainActivity因工作需要,整理下插件化开发的demo,方便交流使用。1.分析插件化开发开发时将整个app拆分,包括一个宿主...

2019-03-17 23:57:21 2226 1

原创 Android Cmake日常爬坑记录

1.Cmake.txt引用多个.c/.cpp文件。例如:add_library( lib_a STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/one.c ${CMAKE_CURRENT_SOURCE_DIR}/src/two.c ${CMAKE_CURRENT_SOURCE_D...

2019-03-03 19:25:10 376

原创 树莓派新手入门——环境搭建

嗯,终于度过了一段痛苦期,虽然还是很忙,但是既然想做,就总能抽出点时间研究一点东西。这篇文章,纪念一下我的爬坑历程。首先卖家提供了一堆学习资料,看的我目不暇接。既然如此,不如上手试试水有多深。目录二 环境搭建1.系统镜像2.烧录工具3.登陆与控制3.1 如果你有网线3.2 如果你没有网线3.3 Putty连接3.4 替换国内镜像3.5 root及配置...

2018-12-15 00:47:53 1983

原创 Android 应用内数据传递

目录一 SharePrefences二 广播三 回调接口Android开发过程中,经常遇到APP内部(例如不同页面间)数据传递的问题,简单整理记录这些数据传输的方式。粘贴上代码,方便以后复制粘贴。一 SharePrefences其实,把SharePrefence放到这里不合适。SharePrefence是用来保存少量数据的方式,如保存程序配置信息等。基本上应用内任何地方均能...

2018-10-14 21:30:38 1319

原创 Android studio配置git与github

在上家公司的的代码管理工具是SVN,讲道理,还真的没怎么用过git。今天兴趣盎然,索性在私人电脑上配置下git与github,简单记录下配置过程。目录一、git的下载与使用1.下载2.安装以及使用说明二、Android Studio配置git1.Android studio添加git插件2.初始化项目为git项目   3.忽略文件!三、配置github1.登...

2018-09-16 23:33:15 5277 1

原创 Android studio生成jar文件

今天公司需求把Android代码打包成jar包提供给其他部门,以前用Eclipse打包过,Android studio倒还是第一次。虽然网上的文章不计其数,但是纸上得来终觉浅,有必要记录下自己动手的操作过程。 1.创建一个工程。过程就略过了。。。2.工程中创建一个Android Library。File->New->New Module 如下图所示。 3...

2018-09-13 00:18:27 412 1

原创 Android常见Theme风格设置

1.整理下常用的style.xml下的属性设置。<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!--状态栏颜色--> ...

2018-06-19 22:00:16 615

原创 Android通信——蓝牙连接

一 传统蓝牙Demo地址:Github 你省金币的选择~基础功能1.首先要在 manifests配置好蓝牙权限。由于蓝牙权限非危险权限,所以不需要再动态注册了。 <!-- 声明蓝牙权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <!...

2018-06-18 23:56:30 591

原创 Android异步加载(UI刷新)

指切正题,为何要选择异步加载?由于UI线程(也可叫主线程)负责处理用户输入事件(TP事件,显示事件等),直接与用户交互,如果UI线程阻塞,直接会影响用户的体验效果,严重的会报ANR错误。所以我们需要把耗时操作移出主线程,在子线程中进行处理。下面罗列几种实现异步加载的方式。传统JAVA方法实现异步1.继承Thread类代码如下package UseThred;pu...

2018-06-01 00:14:15 5968

原创 Android笔记——内存泄露总结

一 什么是内存泄露首先,在Android中我们所说的内存指的是Android系统分配给APP的内存的大小。对于不同的手机型号,对应的的不同ROM所分配的内存大小是不同的。PS:Android手机属于RAM平台。我们的堆栈存储区域就是在RAM中。Android开发中的内存泄露一般指的是堆内存。我们的new出来的object存储在堆内存中,这些内存由GC进行回收管理。所以所谓的内存泄露,就是GC搞不定...

2018-05-13 23:55:07 329

原创 (Android View)花样底部导航栏使用(BottomNavigationBar)

BottomNavigationView 首先回顾下这个导航栏,发现已经满足不了我们的需求了,我们现在来使用一下其他的开源组件。1.现在风评较好的BottomNavigationgiehub地址:点击打开链接这个东西使用起来也十分的简单首先在module级gradle中添加依赖。 compile 'com.ashokvarma.android:bottom-navig...

2018-03-19 23:19:36 791

原创 (Android View)Recyclerview分割线

RecyclerView的简单使用 可以先回顾一下RecyclerView的使用方式我们在使用RecyclerView的时候发现,这玩意根本没有分割线,看起来有点丑,查了一下资料,谷歌并没有提供默认的分割线,下面我们就把分割线搞出来,方便以后复制粘贴。1. xml布局直接添加,简单粗暴。2.使用自定义分割线我们可以使用recyclerView的addItemDecoration...

2018-03-18 21:50:32 743

原创 (Android View)RecyclerView简单使用

搬砖搬砖。笔记迁移,笔记迁移,继续把有道云笔记的东西搬到CSDN。作为一个小白程序员,虽然知道RecyclerView功能比较强大,可以说RecyclerView 是一个增强版的ListView,但是总是懒得把ListView和GridView换成RecyclerView。趁着码博客,哦不,复制粘贴!重新梳理一下RecyclerView的使用。1.导包。2.简单使用既然踩过坑,我们第一步先看下Re...

2018-03-17 23:50:56 524 2

原创 (Android View)底部导航栏—BottomNavigationView简单使用

虽然很早就知道BottomNavigationView,但是以前导航栏都是各种第三方凑合用。既然Android Support Library 25 才增加了BottomNavigationView 控件,就简单看一下使用方法。首先创建一个工程。既然是系统组件,当然创建的时候就可以自动选择,不多说,看图。OK,Activity创建完毕,我们简单看一下代码。public class LanuchAc...

2018-03-17 23:00:00 15287 2

原创 Android studio关于Cmake的使用(第三章·引用第三方库文件)

目录关于引用so库的方式1 引用代JNI接口的so文件1.1 生成一个包含jni接口的so1.2使用包含jni接口的so2引用纯净的通用so2.1 构建支持C/C++的工程。2.3 配置CmakeList.txt信息。2.4配置gradle2.5验收2.6调用3.交流与链接关于引用so库的方式1 引用代JNI接口的so文件...

2018-02-08 00:00:38 12759 8

jnitest.zip

Android中jni动态注册的方式,给出成组c和java文件,方便扩展。利于大家粘贴。请配合博客结合使用。如果有问题,直接在博文里留言。谢谢~!

2020-05-31

android-ndk-r20b-windows-x86_64.zip

64位windows下ndk,方便直接使用。cygwin+ndk+FFmpeg配合使用,编译Android 动态库进行视频编辑。

2020-03-19

Android Studio编译库文件(so/a)

Android Studio通过cmake脚本编译库文件(so/a),工程直接放入.c以及头文件即可立即使用,简单有效。

2018-09-17

Git-2.16.2-64-bit

省去的苦恼。代码管理工具Git的最新版本,方便使用。

2018-09-16

空空如也

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

TA关注的人

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