自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

w_xue的专栏

低调做人,踏实做事

  • 博客(78)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 webview相关

在Android N及以下版本,webview默认跟browser端运行在同一个进程中,在Android O及以上版本,webview默认运行在单独进程,称为renderProcess,作为browser端所有webview的容器。browser端代码分为两部分android sdk部分,主要为android.webkit.*相关定义,代码仓库https://android.googlesource.com/platform/frameworks/base/桥接renderProcess端代码,代码

2021-12-15 17:28:52 1498 1

原创 unable to find valid certification path to requested target

gradle的jre环境升级到jdk 16后,下载依赖时会出现报错,比如 > Could not resolve io.flutter:arm64_v8a_release:1.0.0-d3ea636dc5d16b56819f3266241e1f708979c233. > Could not get resource 'https://maven.aliyun.com/repository/google/io/flutter/arm64_v8a_release/1.0.0-d3ea6

2021-11-19 20:12:18 1380

原创 jenkins支持多版本gradle编译

为接入jetpack compose,项目android gradle plugin版本需要升级,对应的gradle版本也需要从5.6.4升级到7.0.2,同时jdk环境也需要从jdk8升级到jdk11。一般编译脚本直接调用gradlew即可,不用关心具体的gradle版本,但是我们的编译环境不允许连接外网,所有依赖都是走公司私服代理下载。之前为了方便处理,jenkins编译流程中直接使用的gradle script,并且指定使用本地固定版本的gradle。此次变更要求现有分支代码使用jdk8 + gr

2021-09-17 10:54:18 1208

原创 iOS前端陷阱

Date api异常text justify无效

2021-09-02 15:44:12 133

原创 CSS笔记

本文参考MDN记录CSS常用知识点,CSS全称为Cascading Style Sheets,层叠样式表。引入CSS外部样式表引入方式如下<!DOCTYPE html> <head> <link rel="stylesheet" href="styles.css"/> </head></html>内部样式表引入方式如下<!DOCTYPE html> <head>

2021-09-02 15:32:57 56

原创 tinker热修复之类修复

Tinker热修复包含多种类型的修复,如类修复,资源修复等,此处介绍类修复的基本原理。修复原理应用类的代码均位于apk包的dex文件中,在安卓设备上安装后dex文件一般位于/data/app/packageName-1/下的目录中,类的加载则需要依靠ClassLoader,由于有多个dex文件,加载的规则为越靠前的dex优先被系统使用。常见的PathClassLoader继承自BaseDex...

2021-09-02 15:31:31 156

原创 React笔记

了解jsx1.jsx只是一种语法糖,编译器会对应编译为React.createElement(component, props, …children),如&lt;MyButton color="blue" shadowSize={2}&gt; Click me&lt;/MyButton&gt;会被编译为React.createElement(MyButton, {...

2021-09-02 15:24:28 186

原创 android JNI的使用

jni技术用于实现java与c/c++代码之间的连接。在android平台,通常用java代码实现应用的基本界面和交互逻辑,对于性能要求较高的代码则用c/c++实现,然后编译为.so库文件,在其中通过jni提供接口供java代码调用。在java中调用c代码编写java代码,其中需要本地实现的方法用native修饰class Hello{ native void printH

2021-09-02 15:08:48 478

原创 Mac读写NTFS移动硬盘

默认情况下mac连接NTFS移动硬盘时会提示’read-only file system’,而网络上支持读写ntfs的软件是需要付费的,事实上macos原生支持ntfs,只需要手动挂载即可diskutil info /Volumes/YOUR_NTFS_DISK_NAME // 查看设备信息hdiutil eject /Volumes/YOUR_NTFS_DISK_NAME // 移除设备sudo mkdir /Volumes/MYHD // 创建挂载点sudo mount_ntf

2021-01-21 01:36:26 317

原创 Android TextView 文本展开收起

在界面上需要展示一个TextView,默认超过4行则在末尾添加"展开",用户点击展开文本后则完整显示文本,同时末尾添加“收起”。先列出TextView的布局 <TextView android:id="@+id/content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="20dp" andr

2020-09-22 11:02:31 2148 3

原创 java.lang.RuntimeException: Unable to instantiate application

以前经常在崩溃平台上看到如下的崩溃信息,具体错误信息如下 java.lang.RuntimeException: Unable to instantiate application com.xxx.yyy.App: java.lang.ClassNotFoundException: Didn't find class "com.xxx.yyy.App" on path: DexPathList[[zip file "/data/app/com.xxx.yyy-1/base.apk"],nativeL

2020-08-05 16:38:36 3731 1

原创 gradle plugin调试

假设我们这里是开发一个按照如下方式依赖的annotationProcessor// app模块build.gradleannotationProcessor project(":router-compiler")调试该插件需要做两件事情以debug方式启动gradle task连接到debugger调试模式启动gradle task在终端中按照如下方式启动即可,正常情况下编译会停住,等待debugger连接./gradlew assembleDebug -Dorg.gradle.dae

2020-06-19 15:20:04 720

原创 配置npm普通用户全局安装

在linux或者osx环境下,由于npm全局安装的默认目录普通用户不可写入,导致很多用户使用root安装,后期普通需要使用root用户操作,带来诸多不便。以下描述如何将npm包存放在当前用户的主目录.npm-packages中创建目录cdmkdir .npm-packages告诉npm将包存放在.npm-packages中,编辑~/.npmrc文件prefix=${HOME}/.npm-packages配置环境变量# 定义npm存放的目录NPM_PACKAGES="${HO

2020-06-17 10:29:57 4298

原创 Flutter中无限循环消息轮播效果

我这里要实现的效果是一个垂直滚动的消息轮播,子视图的显示很自然的想到使用PageView来包裹,我们要做的有两件事控制自动轮播消息无限循环第一个问题我们只需要新建一个Timer对象,定时调用PageView的翻页即可。第二个问题我们只需要在数据源末尾再添加上第一笔数据,当PageView滚动到最后一条消息时,直接跳转到第一条消息,视觉上不会有任何感知。具体见代码import 'da...

2019-10-08 11:31:25 4998 1

原创 android点击EditText外区域收起键盘

在日常开发中,Activity中可能有比较复杂的布局,比如嵌套很多Fragment,所以针对该需求,通常的做法为放到Activity中统一处理。常规思路为在dispatchTouchEvent中不拦截MotionEvent,但是会根据event是否落在EditText中做相应的处理,具体做法为 @Override public boolean dispatchTouchEvent...

2019-07-24 10:19:50 1839

原创 adb一直提示无法连接

在实际开发中,经常遇到手机显示usb调试已连接,但是android studio中提示找不到设备。在终端中执行adb shell同样提示找不到设备。搜索排查发现,需要采用如下命令启动adb方可看到错误信息adb nodaemon server我这提示的错误信息类似如下adb E 661 9881 usb_osx.cpp:331] Could not open interface:...

2019-05-20 14:28:26 1132

原创 Jetpack Room使用

Room是安卓官方orm框架,用于简化Sqlite数据库的相关操作。使用Room通常步骤如下声明依赖定义数据库表,DAO,数据库类及升级策略操作数据库引入依赖引入google官方maven仓库allprojects { repositories { google() jcenter() }}在模块的build.gradle中添加...

2019-04-09 16:17:16 3466

原创 Jetpack navigation组件使用

类似于ios开发中的storyboard,android studio 3.2中引入了可视化导航。之前Activity和Fragment的跳转代码样式化且易出错,通过使用Jetpack中navigation组件,开发人员可以更直观的维护界面跳转。使用时需要引入依赖 implementation "androidx.navigation:navigation-fragment-ktx:$r...

2019-04-08 19:49:25 1396

原创 Android Device Monitor官方替代工具

随着android ide的升级,之前的一些调试工具逐渐废弃并被新的工具替代。之前大部分的调试工具都位于Android Device Monitor中,该工具集在android studio 3.1中被废弃并在android studio 3.2中被移除。如下表格列出以前Android Device Monitor的官方替代工具。原工具替代工具Dalvik Debug Mon...

2019-03-18 20:22:21 7239

原创 flutter布局的基本概念

本文记录开发过程中看到的零散细节Constraints在flutter视图布局中,parent widget中会给child设置布局约束,包含isTight: 是否是固定尺寸,比如BoxConstraints的min max均一致时isTight返回trueisNormalized: 约束是否正常,比如BoxConstraints中0&amp;amp;amp;amp;amp;lt;=min&amp;amp;amp;amp;amp;lt;=max时isNormalize...

2019-01-29 16:44:07 632

原创 添加flutter模块到现有android项目

参考https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps创建flutter module项目比如现有android项目的目录为~/myDemo/,则直接在原有项目同级目录~下执行如下命令创建flutter module项目。flutter create -t module my_flutter执行上述命令...

2019-01-15 16:30:40 3070

原创 迁移到androidx

官方早就推荐将support库迁移到androidx,因为后续support库不会再做更新。参考官方文档https://developer.android.com/jetpack/androidx/migrate其实只需要3.2版本的android studio,在菜单refactor中点击migrate to androidx即可,该向导会提示需要做的更新,包括gradle 插件版本至少...

2019-01-14 16:25:59 879

原创 react native 两周学习笔记

搭建demo环境预期时间:1天 参照https://reactnative.cn/搭建编译环境,在真机上跑demo2018-09-05 电脑有现成的android编译环境,已经安装node 8,已配置npm镜像,已 安装react-native模块。ide使用webstorm,同时安装react native console插件使用react-native init Aweso...

2018-09-06 19:53:27 693

原创 RecyclerView 问题记录

1.调用更新数据后发现界面不展示,从layout inspector看到recyclerview中无子控件,检查发现没有设置LayoutManager。更离谱的是检查代码时还比对https://github.com/drakeet/MultiType 的sample code来对比,估计drakeet是在xml中设置了layoutmanagerLinearLayoutManager llm =...

2018-09-04 10:43:41 158

原创 docker的安装与镜像仓库

收藏网易docker镜像地址 https://www.163yun.com/help/documents/56918246390157312下载image使用网易公共仓库 docker pull hub.c.163.com/nce2/ubuntu:16.04仓库地址 https://c.163.com/hub#/m/home/下载windows版本docker installer...

2018-08-16 16:19:45 758

原创 RxPermission源码笔记

只需要写如下代码,即可使用rxPermission实现动态获取权限,不需要activity重写任何代码RxPermission rxPermission = new RxPermission(this);rxPermission.requestPermission(Permission.Camera) .suscrible(permission -&gt; { ...

2018-08-05 10:48:59 497

原创 install tomcat on linux

ubunt16.04,comcat 9 core package tailed with tar.gzunzip packagesudo su // switch to rootcp apache-tomcat-9.0.10 /opt/cd /opt/tar vzxf apache-tomcat-9.0.10add new user&amp;group sudo s...

2018-07-29 18:16:56 149

原创 安卓渠道包

packer-ng-plugin walle 其中walle是支持最新的SchemaV2签名的。渠道包不推荐通过flavor来配置,在进行热更新的时候需要多个基线包。

2018-06-27 18:50:50 262

原创 mac下常见软件源镜像

macos下brew更新软件时使用默认源很麻烦,替换清华源直接参考https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/摘抄如下 该镜像是 Homebrew 的 formula 索引的镜像(即 brew update 时所更新内容)。本镜像站同时提供 Homebrew 二进制预编译包的镜像,请参考 Homebrew bottles 镜像使用帮助...

2018-06-26 14:30:54 2919

原创 配置gitbook自动发布

目标代码托管在gitlab,提交后本地电脑jenkins编译生成静态网页并上传网站到阿里云服务器。阿里云服务器配置1.安装nginx apt install nginx 控制台开放80 443端口,此时可以直接在其它电脑访问hello nginx2.安装ftpd 参考https://www.linuxidc.com/Linux/2016-12/138563.htm ht...

2018-06-15 11:36:33 1989

原创 flutter配置国内镜像

flutter工程首次运行时需要获取依赖包,此时需要使用全局vpn,或者使用国内镜像。linux下配置全局环境变量export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn...

2018-06-02 15:52:06 18919

原创 gitbook搭建

参照https://github.com/GitbookIO/gitbook/blob/master/docs/setup.md常见配置: 代码高亮,在md文件中代码块指定语言类型即可 二级目录,在SUMMARY中采用缩进语法即可,如* [关于](README.md)* [组件](component/README.md) * [按钮](component/button....

2018-05-12 10:44:28 2152

原创 kotlin学习笔记-2-基础语法

kotlin学习笔记,基础语法

2017-10-07 16:26:01 426

原创 kotlin学习笔记-1-初步了解

记录kotlin的学习

2017-10-07 15:27:21 288

原创 RxJava 2 基本原理

在上一篇文章中,我基于Obervable类介绍了RxJava的基本用法,这里讲一下基本原理

2017-09-06 19:19:42 429

原创 RxJava 2 基本使用

RxJava是ReactiveX在java平台上的实现。ReactiveX: An API for asynchronous programming with observable streams。本文基于RxJava 2.1.2描述基本使用,熟悉基本概念。

2017-09-06 14:33:53 536

原创 ScrollView嵌套可滚动View

在实际项目需求中,经常会遇到ScrollView嵌套纵向可滚动的View,比如ListView,TextView。在默认情况下,ScrollView检测到纵向有滚动就会intercept touch事件然后滚动自身,导致子View根本无法滚动。网友的大部分做法是在子View检测到Down事件时马上requestDisallowInterceptTouchEvent,检测到Up事件时再取消reques

2017-08-30 20:39:55 504

原创 为nexus 5x编译android n固件

作为安卓从业人员,我们经常希望可以单步调试framework代码,可以方便的调试第三方应用。模拟器一般来说太慢,而且模拟器和官方sdk代码一样对应不上。最好的办法就是自己为nexus手机编译userdebug固件,本文以nexus 5x为例记录编译实践。

2017-08-19 22:59:47 1933

原创 开启应用调试属性

安卓应用是否可以被调试,取决于两个地方,一个是系统的ro.debuggable属性,另外一个是应用的debuggable属性。通常我们要调试第三方app,需要打开系统的可调试属性。

2017-08-17 14:47:45 479

原创 android l 中AppWidgetService的启动

在android l中,系统服务的启动分为6个启动阶段,定义在SystemServer类中,大部分服务继承自SystemService类,通过重写onStart方法实现自身的初始化,同时可以重写onBootPhase方法来监听启动流程,以便在合适的时候执行相应动作,这些方法会由SystemServiceManager来调用。AppWidgetService亦是如此。服务的启动只有一句,在在Syste

2015-03-05 17:41:44 2419

利用Visual C++实现AVI文件的图像截取.pdf

利用Visual C++实现AVI文件的图像截取

2010-08-14

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

TA关注的人

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