自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (6)
  • 收藏
  • 关注

原创 MyBatis动态设置要连接的数据库地址,用户名,密码

MyBatis动态设置数据库连接的url,用户名,密码

2022-09-04 09:33:26 3158 1

原创 Ubuntu使用Jenkins配置自动化打包Android APK

一、前言我们开发好功能之后,需要编译打包,打包好的可执行程序需要交给测试人员进行测试,但是往往我们的项目大了之后,编译整个项目,打包的过程的时间相对比较长,这个时候如果是在开发人员的电脑上进行代码的编译打包,这段时间,开发人员就没法进行编码的工作了,这个如果我们需要频繁的打包情况下,效率就会更低了;所以很多公司团队都会采用在服务器配置自动构建,打包的过程,而不再是在开发人员的电脑上手动构建,编译,打包;甚至是测试人员也可以根据代码的版本,自己随时触发构建打包,然后进行测试;而Jenkins就是一款非常

2022-01-23 16:39:31 4053

原创 Android应用安全

一、前言互联网时代,移动应用已经进入到大众生活的各个方面,娱乐、出行、金融、支付等等,应用中包含了用户的各种隐私数据,如聊天记录,金融账户等等敏感数据,以及一些涉及用户个人财产安全的交易支付操作等,所以移动应用的安全性显得尤为重要。作为移动应用开发者我们需要考虑从各个方面最大限度的提高应用的安全性;这篇文章就来讨论一下Andoid应用开发中的安全性问题二、Android应用的安全1.组件安全组件安全 组件安全是指我们在使用Android提供的组件时,需要做一些访问限制,Activity,Servi

2021-10-19 19:29:21 4144

原创 Android SQLite数据库加密

一、前言SQLite是一个轻量级的、跨平台的、开源的嵌入式数据库引擎,也是一个关系型的的使用SQL语句的数据库引擎,读写效率高、资源消耗总量少、延迟时间少,使其成为移动平台数据库的最佳解决方案(如Android、iOS)但是Android上自带的SQLite数据库是没有实现加密的,我们可以通过Android Studio直接导出应用创建的数据库文件,然后通过如SQLite Expere Personal 这种可视化工具打开数据库文件进行查看数据库的表结构,以及数据,这就导致存储在SQLite中的数据可

2021-09-29 13:19:33 2220 1

原创 Android编译时注解处理APT

一、注解在使用Java语言开发的过程中,我们会经常看到各种各样的注解,@Override(表示方法的重写),@Deprecated(标记过时的元素 方法,类或属性),@LayoutRes(表示的是布局资源),@IdRes(表示的是ID资源),@DrawableRes(表示的图片资源)等等,另外在一些第三方库中,如Butterknife,EventBus,Retrofit中也会使用了很多自定义的注解;那到底什么是注解?注解本身是没有什么意义的,单独的注解就是一种注释或者说是一种标记,他要结合APT(编译

2021-07-11 17:33:23 766 3

原创 Android自定义Gradle插件

一、Gradle我们知道在我们现在使用Android Stduio开发Android项目的时候,Android Studio是基于Gradle来帮助我们构建,管理项目的。Gradle:Gradle是一个项目构建工具,用来帮助我们管理项目的依赖、打包、发布、部署等工作。Gradle是通过如build.gradle这种gradle脚本来进行项目构建的,所以我们对项目的构建配置都是可以写在gradle构建脚本中。gradle构建脚本使用的是Groovy语言,Groovy语言也是一种jvm语言,最终也是编译

2021-07-08 00:06:59 1135 4

原创 Android AOP编程之AspectJ

一、AspectJAspectj是一个AOP框架,也是通过对字节码操作,来实现AOP的,但是与ASM需要开发者直接编写操作字节码的代码之外,使用Aspectj不需要开发者直接编写操作字节码代码, 而是只需要按照规范编写我们需要处理的Java代码即可;由Aspectj帮助我们将编写的Java代码的字节码织入到.class字节码文件中实现字节码插桩操作;二、AspectJ中的基本概念1.切面 Aspect我们在学习AOP的时候,知道AOP实际就是针对的是业务逻辑中的某个处理步骤,比如日志处理,登录判断

2021-07-06 16:18:13 644

原创 Charles抓取Android设备HTTPS包

一、前言作为一个移动应用开发者,我们在平时的应用开发过程中,除了UI界面的相关编码之外,做的最多的编码工作就是和服务端程序员进行接口的联调;当然在接口联调的过程中,往往会出现接口调试不通的情况,可能是我们确实没有按照接口文档的要求来进行接口请求,如没有按照指定的请求方式Post/Get,请求头Header,Content-Type,或者请求参数等来进行正确的接口请求 ,当然也有可能是服务端程序本身的问题,为了快速定位我们请求是否是有问题,我们可以通过一些抓包工具Wireshare、Charles等来对我们

2021-06-27 18:25:49 3495 5

原创 Android NDK开发入门基础

一、NDK/JNINDKNDK(Native Development Kit)-原生开发工具包,使得能够在Android上去使用C/C++代码;JNIJNI即Java Native Interface,Java和Native接口,就是Java和C/C++之间通讯的桥梁; 为什么要有JNI,因为Java和C/C++之间是无法直接相互调用的,也就是无法直接通讯,就和Java和JS之间也不能直接相互调用,中间需要翻译者来处理,JNI就是为了实现Java和C/C++之间这两种不同语言之间的通讯的;JN

2021-06-21 19:16:12 1053

原创 Android发布库(jar/aar)到MavenCentral

一、前言:由于Jcenter已经停止服务了,所以我们现在发布库一般是要发布到Maven Central;Maven Central和Jcenter一样也是一个公共的仓库,发布在上面的库可供自己和他人使用;Android Studio 4.2开始,Google已经把MavenCentral作为gradle中二、发布库(jar/aar)到MavenCentral的流程1.Sonatype Jira相关设置我们首先要在 Sonatype Jira上注册一个账号;然后在https://issues.son

2021-06-13 16:02:31 3062 5

原创 Android CameraX实现摄像头预览、拍照、录制视频

一、前言从Camera1到Camera2,再到现在的Jetpack中的CameraX,Google一直在致力于让Android应用开发者更加方便的去使用摄像头相关的API,更加简单快速的实现摄像头相关的应用功能;下面就来学习一下使用CameraX实现拍照和录制视频功能;二、CameraX概述CameraX是Android Jetpack中的组件,旨在简化相机相关的应用开发工作,但是要注意的是CameraX向下最低兼容到Android 5.0(API 21);CameraX利用了Camera2的功能,但

2021-04-11 18:57:46 3507 2

原创 Android 音视频开发之音视频编码原理

一、前言在上一篇Android音视频开发之音视频基础知识文章中,我们学习了播放一个视频的流程:解协议、解封装、解码、音视频同步、音视频数据的渲染;其中解码是非常关键的一步,那为什么要进行解码,所谓的解码就是音视频编码数据的解码,那为什么视频文件中的音视频数据是编码后的数据,而不是音视频原始数据这是因为音视频原始数据,这是因为音视频原始数据是非常大的,所谓编码,就是对视频的原始图像数据,音频数据进行压缩,压缩之后再按照封装格式规范,封装成一个视频文件,这样可以大大降低视频文件的大小,便于视频的存储以及传输

2021-04-11 00:24:19 333

原创 Android音视频开发之音视频基础知识

一、前言随着4G、5G网络的普及,音视频的应用越来越广泛,包括火热的短视频、音视频直播、音视频通话等;特别是移动端的音视频应用,所以移动端的音视频的开发需求也会非常大,所以作为一名移动开发者,学习和了解音视频开发也是非常必要的;二、音视频基础(1)封装格式:以我们最常见的视频文件,MP4格式文件为例,它其实就是一个后缀名为.mp4的文件;视频文件实际上是一种封装格式文件,或者说是一个容器文件,其中包含了图像数据和音频数据;而封装格式就是就是将图像数据和音频数据打包到一起的一种规范;而封装格式主要

2021-04-08 22:56:29 500 4

原创 Android 实现应用内语言切换(包括不重启应用方式)

一、前言对于一个移动应用,可能不仅仅是面向一个国家的用户,所以多语言国际化是移动应用开发中比较常见的一个功能;正常实现多语言国际化,我们只需要在资源目录下res/下创建需要支持的国家values目录,命名格式为values-语言,如values-zh(中文),values-en(英文) ,然后在values目录下放置对应的资源文件,如string.xml,arrays.xml即可;Android系统会根据系统设置的语言,自动选择你应用中对应的values-语言目录下的资源 ,没有找到对应的语言的value

2020-11-27 15:07:45 8464 8

原创 React Native ART绘制图形

一、前言我们知道在Html5,Android,iOS中都提供了绘制相关的API,如Html5中的canvas标签,Android中的Canvas类,iOS中的CoreGraphics,这些API都可以实现丰富的图形绘制;因为在实际移动应用的开发过程中,使用系统提供的一些UI组件可能没办法做出我们想要的UI效果,这个时候就需要使用绘制相关的API来自定义绘制复杂的UI;在React中react-art是reactjs团队基于art(一个兼容各个浏览器SVG绘制的API封装)开发的模块,让react开发者能

2020-10-24 17:48:09 1992

原创 React Native 动画(Animated)

一、前言对于一个移动应用APP,其中的动画交互能够给用户带来很好的体验,所以动画在移动应用开发过程中是非常重要的;二、React Native中实现动画的方式-不断修改state-Animated API首先如果不使用任何动画API,那想到的实现动画效果的方式,应该就是通过不断修改state中的组件相关的属性值来实现动画效果,但是这个就是不断的重新渲染整个页面,所以可能会非常影响性能;React Native中提供了Animated API来实现动画,Animated API可以简洁的实现各种动

2020-10-23 17:33:19 7247 4

原创 React Native使用React Navigation进行页面跳转

一、前言我们知道一个移动应用肯定不会只有一个页面,那么对于有很多页面的应用,页面之间肯定是需要相互跳转的;在Android系统中,页面通过Activity栈进行管理,由AMS(ActivityManagerService)来实现页面跳转;而在React Native中我们使用导航器(navigator)组件来实现页面之间的跳转;二、React Navigationreact-navigation是一个单独的导航库,react-navigation中的视图是原生组件同时用到了运行在原生线程上的Ani

2020-10-06 19:16:05 4287 1

原创 React Native 入门基础

一、前言React Native是Facebook推出的使用React和平台原生功能来构建Android和iOS应用的开源移动跨平台框架;-视图(Views)和移动开发在Android和iOS移动应用中,一个视图是UI的基本组成部分:屏幕上的一个小矩形元素、可用于显示文本、图像、和响应用户输入。某些视图也可以包含其他视图,全部都是视图;-原生组件在Android开发中是使用Java或者Kotlin来编写视图,在iOS开发中是使用Object-C和Swift来编写视图,在React Native中则

2020-10-06 10:50:39 606 1

原创 React Native 开发环境搭建

一、前言React Native 是Facebook推出的一个移动跨平台框架,就是使用JavaScript和React编写原生移动应用;React Native应用是真正的移动应用,并不是‘“网页应用”,或者“HTML5应用”,又或者“混合应用”;React Native编写的应用,从使用感受上和用Obejct-C或者Java编写的应用几乎是无法区分的;React Native所使用的基础组件和原生应用完全一样;二、环境搭建我们这里的环境搭建是以Windows为开发平台,Android为目标平台

2020-10-05 17:30:19 297

原创 Android Monkey测试

一、前言在我们开发好Android应用之后,在交给测试之前,我们自己还是要进行测试的,保证应用基本功能不会有问题,除了我们手动操作应用,走页面,走功能流程来测试之外,Android其实还提供了一种自动化测试Monkey;Monkey测试也叫作搞怪测试,就是用一些稀奇古怪的方式去测试被测试系统,以测试系统的稳定性;二、Monkey1.Android中的MonkeyMonkey是Android中的一个命令行工具,可以运行在模拟器 里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、

2020-09-28 16:36:07 682

原创 Android Q适配之文件存储

Android中不同系统的适配一直是应用开发中非常重要的问题,如果不能及时适配不同的系统版本,应用极有可能发生崩溃,给用户带来不好的体验。随着Google发布 Android Q(API 28),我们需要及时的根据系统的变化做出相应的适配。Android Q中隐私权一块发生了较大的改变。特别是外部存储的访问权限的改变。Android Q中引入了分区存储的概念,应用默认拥有分区存储的访问(读写)...

2020-01-03 14:21:44 2527

原创 Android进阶系列之性能优化篇-(内存优化)

Android中,应用的性能优化是一个比较重要的问题,应用性能直接影响到用户的体验,应用的流畅度,崩溃率,流量使用量,耗电量,以及启动的快慢,内存使用等,都会严重影响用户的使用。而内存优化更是Android应用性能优化中的重要部分,这篇文章就来记录总结一下Android应用的内存优化首先先来了解一下两个概念:内存泄漏:由于某种原因,导致程序中动态分配的堆内存,无法被释放,导致系统内存的浪费。...

2019-11-04 21:12:36 319

原创 Android进阶系列之ViewPager的刷新问题分析

ViewPager是Android应用开发中非常常用的一个控件,是一个可以让View左右翻页滑动的管理布局,需要和PagerAdapter配合使用,来创建每一页的View并显示。ViewPager的使用其实是比较简单的,但是有一个比较重要的问题,就是ViewPager的数据刷新。PagerAdapter有一个notifyDataSetChanged()方法,根据Android官方文档的介绍Pa...

2019-09-01 15:03:04 3588

原创 Android 正确获取View的宽和高

Android 在实际开发过程中,我们可能经常要获取View的宽和高,那么如何来正确获取一个View的宽和高呢。View提供了getWidth(),getHeight(),getMeasureWidth(),getMeasureHeight()方法来获取View的宽和高,getWidth(),getHeight()获取的是View最终显示的宽和高也即实际宽和高,而getMeasureWidt...

2019-08-11 16:10:35 4300

原创 Android 动态权限申请之 shouldShowRequestPermissionRationale方法异常

       **我们知道从Android 6.0(API 23) 开始,Google在Android上引入了动态权限模式,即用户可在应用运行时管理权限,这种模式让用户能够更好地了解和控制权限,用户可为所安装的各个应用分别授予或撤销权限。但是对于开发者来说,为了适配Android 6.0(API 23)及以上版本,除了在Andr

2018-12-20 14:03:47 3182

原创 Android 直播礼物动画实现之SVGA动画

在最近做的直播项目中,产品要求发送礼物时,需要显示对应的礼物动画,其中几个礼物动画效果如下:看了这几个动画效果,是挺炫酷的,妥妥的能够增加用户体验,但是实现起来可就没那么容易了。Android中动画实现方案,主要有以下几种:(1)Frame Animation(逐帧动画)(2)Tween Animation (补间动画)(3)Property Animation(属...

2018-09-07 16:57:30 21084 3

原创 adb.exe start-server failed cannot connect to 127.0.0.1:5037 adb:CreateFileW 'nul' faield:系统找不到指定文件

1.新安装Android Studio后,连接手机,但是检测不到真机,一般是驱动问题、或者端口号被占用。但是使用驱动人生检测连接的手机驱动正常、5037端口号也没有被占用。Android Studio 提示 : adb.exe start-server failed cannot connect to 127.0.0.1:5037 unable to create Debug: Una...

2018-07-12 17:12:58 1161

原创 window10 安装git后 git bash here 闪退问题

1.win10系统安装Git-2.18.0-64-bit.exe后,在桌面右击点击 git bash here闪退了,并且在桌面生成了一个并在桌面生成一个mintty.exe.stackdump文件。经过百度说是C:/Window/System32/drivers/null.sysnull.sys 这个系统文件损坏。解决办法:C:\Windows\System32\drivers\...

2018-07-12 15:53:47 2923 1

原创 Retrofit2学习使用

一、简介 我们这里所介绍的Retrofit均是指Retrofit2.0 Retrofit是Square公司开发的一个基于OKHttp的Restful API风格的网络请求库。 GitHub地址: https://github.com/square/retrofit二、Retrofit工作原理 Retrofit的网络请求工作本质上是由OKHttp完成,而Retrofit是对网络请求接口的...

2018-06-12 15:04:16 247

原创 Error:Could not find common.jar (android.arch.core:common:1.0.0).

1.Android Studio打开项目突然报如下错误Error:Could not find common.jar (android.arch.core:common:1.0.0).Searched in the following locations:https://jcenter.bintray.com/android/arch/core/common/1.0.0/common-...

2018-06-11 18:06:25 815

原创 Android悬浮窗

前言: 最近在做的项目中有一个直播模块,直播模块中有一个最小化的功能,就是观众端观看直播的时候,可以选择最小化,在整个应用中有一个小窗口播放直播画面。在参考了微博、斗鱼直播等市面上主流的直播软件,发现它们都是通过悬浮窗(WindowManager)来实现最小化功能的。1.悬浮窗权限 使用悬浮窗首先要在AndroidManifest.xml中配置悬浮窗权限。 <uses-perm...

2018-06-11 16:13:14 944 1

原创 Android URL Scheme

前言:我们在使用微信的过程中,经常可以通过别人分享的链接,直接跳转到一些APP内部。比如京东、网易云音乐,我们通过在这两个APP内部分享链接到微信,微信中点击链接进入微信浏览器打开分享的页面,可以在页面中看到直接打开的按钮,点击直接打开就进入了该APP的对应的页面。实际上就是从微信浏览器中的一个页面跳转到APP指定的页面。这一种效果就是通过URL Scheme来实现的。 UR...

2018-04-22 16:49:30 17132

原创 Android 实现应用更新适配 Android O (Android 8.0)

之前写过一篇 Android 实现应用更新(适配Anndroid N),本篇主要讲解Android O(Android 8.0)上应用更新的适配问题,应用更新的完整实现请结合上一篇文章一起,文末也会给出完整代码链接。最近测试反馈在Android 8.0的手机上,提示应用更新,更新时会出现下载失败,并且通知栏也没有显示下载的进度的情况,即使下载成功也不会弹出应用安装界面。实测发现确实是有这样...

2018-03-25 17:24:37 8684 4

原创 沉浸式与透明状态栏

沉浸式:(Immersive Mode)沉浸式提供参与者完全沉浸的体验,就是给用户一种置身于虚拟世界的感觉。对应到移动应用上就是全屏效果,例如 游戏全屏、视频的全屏都是提供用户沉浸式的体验。Android系统中的一个Activity(界面)其实是有许多系统元素的,如下图所示一个Activity,包含了状态栏(StatusBar)、ActionBar,

2018-01-07 16:13:25 641

原创 Android 混淆

1.简介在Android项目打包上线的过程中,混淆是很重要的一步,混淆会使用a、b、c、d这样简短而无意义的名称,对类、属性和方法进行重命名,增加反编译后代码阅读的难度,从而增加反编译的难度。Android中使用Proguard进行混淆。Proguard是一个免费的Java类文件压缩、优化、混淆,预校验器。压缩:检测并移除无用的类,以及类成员;优化:对字节码进行优化,移除无用指定;混淆:使用a、b、

2017-12-11 16:18:55 379

原创 Android 实现弧形View或者ImageView

在Android项目开发中,经常会遇到下面这两种弧形布局设计: 图一上方是一个外凸的红色弧形背景,图二上方是一个内凹的背景图片实现方案:图一可以通过自定义View,绘制出这个弧形View;图二可以继承自ImageView,并通过clipPth的方式,让ImageView在弧形区域内绘制实现。图一弧形View具体实现:图一弧形背景可以分解成两部分,矩形部分+弧形部分矩形部分绘制很简单,下面弧形部分

2017-11-26 10:10:55 14281 18

原创 CoordinatorLayout中使用WebView冲突

最近在项目中使用到了CoordinatorLayout和AppBarLayout,主要是为了实现当向上滑动的时候顶部部分布局隐藏,但是对于下方布局是RecycleView时没有问题,但是如果下方布局是WebView时,则会出现向上滑动的时候,顶部布局无法隐藏,可以滑动的仅仅是WebView自身。RecycleView和WebView都是可以滚动的视图,为什么WebView不能和Coordinator

2017-11-19 14:56:40 1373

原创 同步和异步的概念

在计算机领域,我们经常会听到同步和异步这两个词,笔者最早就是在操作系统中接触到同步和异步的概念。同步:是指一个进程在执行某个请求的时候,若这个请求没有执行完成, 那么这个进程将会一直等待下去,直到这个请求执行完毕,才会继 续执行下面的请求。异步:是指一个进程在执行某个请求的时候,如果这个请求没有执行完毕,进程不会等待,而是继续执行下面的请求。

2017-11-05 15:59:23 10363 3

原创 在PopupWindow中再弹出PopupWindow问题

最近在项目的开发中遇到一个需求,是一个弹出菜单点中击一个选项按钮,在选项按钮下方弹出下拉菜单。最初想到的实现方式第一个弹出菜单用PopupWindow,第二个下拉菜单 也用PopupWindow,在第一个PopupWindow菜单中的选项按钮正下方显示第二个下拉菜单PopupWindow。但是在显示第二个下拉菜单PopupWindow中报出异常,程序crashandroid.view.Window

2017-10-25 07:22:41 2926

原创 Android Studio 中,jar、so、aar文件正确引用姿势

在Android 应用开发过程中,经常用到第三方库或SDK,而引用第三方的方式无非就是jar,so,aar,以及通过build.gradle中compile这个几种方式。下面介绍一下jar,so,aar这几种文件的正确引用方式:(1)jar文件将jar文件复制到app/libs目录下,然后重新sync project即可图解: (2)so文件首先同样是将不同CPU架构的so文件放到app/li

2017-08-27 11:24:43 1351

compress_output (5).mp4

compress_output (5).mp4

2021-04-26

RSA+AES数据加密Demo

RSA+AES数据加密Demo,包括Android客户端数据加密,Java服务器端数据解密。

2016-09-19

生成公钥私钥工具OpenSSL

生成RSA公钥和私钥的工具:Windows版OpenSSL

2016-09-18

自定义View(一)

自定义View

2016-09-05

自定义SeekBar样式源码

自定义SeekBar样式源码

2016-08-28

Android自定义View(一) -源码

是CSDN博客Android自定义View(一)源码

2016-08-26

空空如也

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

TA关注的人

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