lefo's blog

又一个android开发人员

前言

项目中接入了打开pdf文件的功能,使用的是https://github.com/barteksc/PdfiumAndroid/。现在想升级一下pdfium库,旧库具体原因就不解释了,毕竟这个项目最后一个commit在6年前,当然,平常用来接入打开pdf也是没问题的。

开源库

在google一通搜索,发现pdfium库包含两套,一套在aosp中,另一套在chromium中。

构建aosp版

准备

  1. ubuntu 可以使用virtual box去装个虚拟机
  2. 200GB以上硬盘空间,清华会推荐你下载aosp-latest.tar再解压,光压缩包80G了,解压完我就把tar包删了

获取aosp源码

推荐使用清华镜像https://mirrors-i.tuna.tsinghua.edu.cn/help/AOSP/,可结合google的官方说明https://source.android.com/docs/setup?hl=zh-cn。具体指令就不介绍了,主要是repo sync费时,注意选好你想构建的build tag。

阅读全文 »

前言

之前买了一台NX54路由器,结果这路由固件完全不给用户定制化的机会,研究如何保存ip6table的配置没有成功,但是成功保存了telnet开启配置,分享一下。这套固件的情况如下:

  1. 默认开启ipv6防火墙,且关闭后,重启会失效,再次打开。
  2. 可以通过telnet连接路由,telnet配置也不保存,停电或者重启后失效。
  3. 根目录使用overlayfs做到了tmp下,是整个系统会恢复的主要原因。
  4. 提供了/mnt目录保存数据,/mnt/bak/startup.bak就是所有配置项。
    阅读全文 »

导读

jetpack当时还没来得及用,整个项目就被砍掉了,这两年一直没有接触,最近好多岗位都要求会jetpack,这两年逐渐用的人越来越多,重学Android赶紧简单了解一下,做了一点整理,都是皮毛,供自己查笔记用吧,如果有一些知识点需要增加备注,随时修改。

Navigation 用于fragment切换

优点

  • 可视化,可以as中可视化编辑
  • 通过destination和action完成页面的导航
  • 参数传递安全, safe args
  • 支持deeplink,支持创建PendingIntent
    阅读全文 »

前言

大概半个月前,群里的一个小伙伴问,谁能把某电商APP的订单列表导出到电脑,有个私活,报个价。其实我对这种稍微有点了解,无非是抓包,破解。但通常App的网络请求会有一套签名验证机制,所以要想模拟出整套请求流程,也算比较复杂。和群里的讨论后,觉得用hook做合适,但群里和我一样,都是安卓开发,没有逆向工程师,首先想到的是xposed。

xposed太重

我之前倒是写过xposed,xposed缺点有两个,第一就是环境复杂,你得安装xposed环境才可以,目前都是通过virtual xposed来使用。再就是插件一但有修改,就得重启手机。不过这也带来了一个有点就是持久化,只要装进去,就一直存在。那有没有更轻量级的工具可以达到这种效果,后来在网上找到了frida。(这也好几年了,我居然不知道)

阅读全文 »

导读

因为2021年开始做C++,之前的项目还没来得及怎么用kotlin,就直接被爸爸宣布死刑了。所以目前找工作等于需要再学一次kotlin,特别是协程,之前几乎没有了解。买了本书,再加上网上的各种文章,整理一点笔记出来。如果有和我差不多的,可以看一看

协程,协程可以理解为某种自由调度的任务,主要是对函数挂起,恢复。听起来像线程的唤醒,本质上和线程没什么关系。使用协程,我们可以以单线程的方式写多线程的代码,同时还能节省线程资源,并且能方便处理异常信息,返回结果等。我们给函数前面加一个suspend关键字,就变成一个挂起函数,可以在函数内操作协程的挂起和恢复。其中部分内容有重复,不必理会。主要参考资料<深入理解Kotlin协程>,算是一个简单的笔记整理。

协程的API

什么是挂起

阅读全文 »

第2节

防卫式声明,防止重复include引起的问题(guard)

1
2
3
4
5
//complex.h
#ifndef _COMPLEX_
#def _COMPLEX_
...
#endif
阅读全文 »

背景

想要编译一个自己的framework,用来在系统api中插入自己的代码,监听一下应用的行为,比如获取imei,获取网络。最直接的想法就是,修改安卓源码,直接编译出一个系统镜像,给模拟器使用。

准备:

  1. 因为之前编译过android.jar,所以源码环境还有,直接开工,或者看以前编译的文章有讲。

  2. 修改代码,比如找到TelephonyManager.java,在getDeviceId()中插入自己的代码。

阅读全文 »

需求

没有需求,自己看了一眼自己之前写的打包脚本,简直无法看下去。而且,产品经理的定制化需求越来越多,用shell脚本的可读性也越来越差,再加上里面一堆的sed命令,惨不忍睹。

改!!!

分析

gradle其实支持自定义参数,关于自定义参数的介绍,参考官方文档:https://docs.gradle.org/current/userguide/build_environment.html,简单说一下用到的:[Gradle properties](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties):

阅读全文 »

进程保活

android这个生态真的是不好,从一开始,大家就想方设法在后台常驻,为了让自己app不被杀,绞尽脑汁想各种存活办法。目前,之前用的大部分保活方案,在手机上几乎都是失效的,尤其是一些国内厂家机型,提供一键清理功能,把你正的运行的APP,杀的渣也不剩。所以,目前还能正常使用的方法就只有一种,那就是两个进程互相监听。

阅读全文 »

前言

在北京摇号摇了18次了,下次开始就是四倍概率。然后,中签还是遥遥无期,隔壁坐的同事摇了两年就摇到了,万分羡慕。有时候晚上想去溜达一下,要去找gofun共享汽车还要走1公里多,还车还要走1公里。于是就有了想买一辆摩托车的想法。

要买车,肯定得有驾照,挑选完以后,报了海淀驾校,小区门口就有驾校的班车,关键是便宜,只要1000块。在我家那18线城市的小地方也得800多。于是报名,开始上法陪课。但法陪课每一章节必须自已手动点开始,很是麻烦,于是就想写个程序代替自己手点。

阅读全文 »
0%