路由器搭建私人NAS(一) -- 刷梅林固件

系列文章:
路由器搭建私人NAS(二) – 下载器安装 - 水沝淼 (laoyuyu.me)
路由器搭建私人NAS(三) – 文件管理 - 水沝淼 (laoyuyu.me)
路由器搭建私人NAS(四) – 串流 - 水沝淼 (laoyuyu.me)

最近迷上了NAS,但是看到群晖那个价格直接欠退了,然后花巨资买了个华硕路由器RT-AX86U,打算以此搭建一个私人的NAS。

1、下载梅林固件

Index of /Koolshare_RMerl_New_Gen_386/ - KoolShare 固件下载服务器

阅读更多

Javadoc generation failed.

具体问题描述:

Execution failed for task ':UIWidget:androidJavadocs'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/aria/dev/android/work_space/KeepassLib/UIWidget/build/tmp/androidJavadocs/javadoc.options'

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output. Run with --scan to get full insights.

javadoc: ?? - ???????: /Users/aria/dev/android/sdk/docs/reference/element-list
阅读更多

开源软件翻译协作

我的开源软件KeepassA在全球范围内使用的人越来越多,基础的英语翻译已经满足不了用户的使用需求,而github的PR对普通用户来说并不是一个简单的操作,因此急需一款简单易用的翻译协作平台,找了不少的平台,发现weblate可以完美满足我的需求,它有下面几个优点:
1、操作简单
2、支持图文对照
3、能自动创建PR到Github项目中
4、对开源社区友好,为开源项目提供了免费服务

一、注册weblate

https://hosted.weblate.org/

二、创建项目

2.1 创建翻译项目

image-20210415165553344 image-20210415165724032
阅读更多

Android Jcenter迁移到Mavencentral

最近在给我的开源库Aria升级版本时,发现Bintray已经无法上传库了,网上查了下,发现Jcenter要停止服务了,从2021年5月1号还要删除所有开发者上传的包,因此就需要将库移到其它的托管中心,谷歌建议开发者们将库托管到mavenCentral

image-20210414084724985

阅读更多

Android oneDrive 集成(二)-- 单租户账号集成

Android oneDrive 集成(一)– SDK申请

Android oneDrive 集成(三)– 使用Postman测试Graph API

微软的MSAL平台有多种租户模式,本篇文章将介绍单租户的接入方式。

AzureADMyOrg:仅限应用注册的组织目录中的帐户(单租户)
AzureADMultipleOrgs:任何组织目录中的帐户(多租户)
AzureADandPersonalMicrosoftAccount:任何组织目录中的帐户 (多租户) 和个人 Microsoft 帐户 (例如,Skype、Xbox 和 Outlook.com)
PersonalMicrosoftAccount:仅个人 Microsoft 帐户

注意⚠️:本篇文章仅适用于单租户,因为MSAL对不同的租户有不同的接入方式。

阅读更多

Android oneDrive 集成(一)-- SDK申请

Android oneDrive 集成(二)– 单租户账号集成

Android oneDrive 集成(三)– 使用Postman测试Graph API

最近我的个人应用KeepassA在酷安上收到了很多私信,问我能不能集成下OneDrive,作为唯一的没有被墙的,大型的跨平台云盘服务,集成OneDrive貌似很有必要。因此研究了好几天的微软文档,遇到了很多坑,总算是搞明白了该怎么集成。
这里不得不吐槽下,微软的东西总是大而全,对新接开发者很不友好,平台那出现问题,错误信息非常不明确。

阅读更多

协程Dispatchers(线程池中执行协程)

用了快一年的kotlin了,一直对协程中的各种Dispatchers没有一个详细的了解。

本篇文章将讲解下面5种Dispatchers

  • Dispatchers.IO
  • Dispatchers.Unconfined
  • Dispatchers.Main
  • Dispatchers.Default
  • 在自建线程池中执行协程
阅读更多

日常爬坑-OKHttp3 kotlin 版本无法捕获异常

异常日志:canceled due to ....

场景:

当api请求异常时,如:404,500,然后自己手动抛异常

原因:

ReallyCall L530

如果你主动抛的异常不是IOException,就会自动给你carsh

image-20200908113640753

解决:

自己主动抛的异常的父类修改为IOException

Smali Debug

在做逆向的过程中,往往会遇到一些很复杂的逻辑,这时,硬肝反编译后的代码往往不是一个明智的选择,这时候就需要无源码debug,也就是Smali Debug。因此Smali Debug基本上一个必备的核心技能。

阅读更多

日常爬坑-Android Transitions动画失效

最近在我的应用KeepassA中碰到了一个诡异的过渡动画问题

API版本:29

正常状态应该如下:

normal

当我从一级设置界面,进入二级设置界面后,并从二级设置界面返回时,一级界面当回主页的过渡动画消失了!!

android_ta_error
阅读更多

MPAndroidChart - 常用属性

一、常用属性

参考地址:https://blog.csdn.net/qq_25943493/article/details/51803497
中文文档:https://github.com/baiqingsong/ChartDawn

// 禁止触摸/拖动/缩放
bc.setTouchEnabled(false)
bc.isDragEnabled = false
bc.setScaleEnabled(false)
//不绘制网格背景
bc.setDrawGridBackground(false)
// 处理y坐标轴
bc.axisRight.isEnabled = false // 右侧不显示Y轴
bc.axisLeft.axisMinimum = 0f //设置Y轴显示最小值,不然0下面会有空隙
bc.axisLeft.setDrawGridLines(false) //不设置Y轴水平线显示
bc.axisLeft.axisLineColor = Color.TRANSPARENT // 设置左侧y轴坐标轴线的颜色

// 处理x坐标轴
bc.xAxis.position = XAxis.XAxisPosition.BOTTOM // 设置坐标轴位置
bc.xAxis.setDrawGridLines(false) // 设置X轴竖直线的显示
// 显示每一个 X 轴的数值,第一个参数为x轴数值个数,第二个是否强制使用坐标轴数值
bc.xAxis.setLabelCount(10, false)

// 设置偏移量
bc.extraBottomOffset = 14f // 底部偏移量

// 设置描述
bc.description = Description().apply {
text = "min"
setPosition(30.toPx().toFloat(), 25.toPx().toFloat()) // 修改显示的位置
textAlign = Paint.Align.LEFT // 显示在左边/右边/中间
}

// 处理标签
val legend = bc.legend
legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER // 设置标签横向居中
legend.verticalAlignment = Legend.LegendVerticalAlignment.TOP // 设置标签在顶部
//背景阴影
bc.setDrawBarShadow(false)
bc.isHighlightFullBarEnabled = false
//显示边界
bc.setDrawBorders(false)
bc.setPadding(1, 1, 1, 1)
// 设置描述
bc.description = Description().apply {
text = ""
}
阅读更多

Android面试题 - LruCache

一、原理

LruCache 其实挺简单的,本质是对LinkHashMap的封装,然后通过设置maxSize来控制LinkHashMap的容量。

二、注意点

2.1 LruCache 是线程安全的

它的所有属性都是私有属性

image-20200907092730822

对私有属性的settergetter操作都是加了锁处理

image-20200907092920801
阅读更多

Android面试题 - AsyncTask

一、原理

AsyncTask 本质上是对handler和线程池对封装,在线程池中执行耗时任务,当任务完成或任务更新时,向主线程的Handler发送消息,在Handler中执行finish()onProgressUpdate()等方法。

阅读更多