0%

第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多。于是报名,开始上法陪课。但法陪课每一章节必须自已手动点开始,很是麻烦,于是就想写个程序代替自己手点。

阅读全文 »

前言

公司要做一个和图片有关的功能,一说图片处理,大家首先想到的就是强大的OpenCV。OpenCV很强大,官方也提供了android专用的sdk,直接将so和jar放入项目中就能使用。尽管官方推荐的也是这种方式,但有一个问题是,OpenCV的库很大,有10MB,很多公司整个APK都没有10MB,如果要把真个库都放到项目中,那还是挺大的。所以,这里就需要我们自己编译。中间折腾了好久,写个文章记录一下。

准备

下载OpenCV

地址 https://opencv.org/releases/
选择Android平台的包

这里注意了,4.0的版本,要求api level是21以上,所以,如果你的APP是要在21以下使用,不要下载这个。

3.x的版本不清楚,但我试了OpenCV 2.x的版本是api level 8以上。2.x的版本,需要自行google,官方应该已经不提供了。

阅读全文 »

记录

最近疫情闹的有点凶,大家都是在家办公,刚好群里的一个妹子一边卖萌,一边问jenkins的搭建及使用,就用腾讯会议给辅导了一下。给她讲完后,翻了翻之前给公司搭建的环境,想记录一下之前使用过的Jenkins插件,供以后使用。

暂时就这些,有好用的插件会不定时更新。

自带插件

安装的时候,会提示你要选哪些插件,建议默认,像git svn以及gradle,这些插件会在默认插件列表里就存在。

Git Parameter

可用于把git的tag branch当作构建参数传进来,方便使用branch构建。

SVN Parameter

同Git Parameter 一样是可以将tag branch当作构建参数传进来。

阅读全文 »

ForegroudService

都知道8.0以后,不可以在后台调用startService()来启动一个服务,要想通过startService启动,必须activity在前台时才能使用。当然onResume和onPause状态下的activity都可以。但是,也有一种情况是例外。

https://developer.android.com/about/versions/oreo/background#services

这里在官方文档也有讲,就是: 进入后台时,在一个持续数分钟的时间窗内,应用仍可以创建和使用 Service。 也就是,当你的activity刚进入后台时,是可以调用startService的。

如果不使用startService,就得使用startForegroundService,但是需要绑定一个通知,可以在调用时传入通知id,也可以在调用后,通过startForeground来绑定。

然而,除了以上,还是有一些疏忽了的,需要注意的地方。

阅读全文 »

错过房子

自如在北京租房行业上占据着龙头地位,它们的房租也是一年比一年高,特别是新签约的房子,价格很是离谱。但偶尔也会有一两个换租的房子,性价比超级高。如果有自己比较中意的小区,想监控里面的房子,我就有一次看中一个房子,看到的时候,就已经晚了,等想签的时候,被别人抢先了。这个脚本,可以在某小区有新房源的时候,第一时间通知自己。

阅读全文 »