River Blog

Thinking will not overcome fear but action will.

应用出海

Google/华为市场的发布

前言 当前国内互联网企业纷纷扩张海外业务,本文将介绍如何将app发布至Google play或者华为应用市场。 1、用Bitrise构建应用发布到Google play 以下是部分核心脚本 - gradle-runner@2.0: inputs: - gradle_task: bundleGoogleProdRelease is_always_run: true - android-bu...

Android App Bundle

Google/华为市场的AAB格式打包

前言 自2021年8月起,Google建议在Google Play发布的应用使用 Android App Bundle(AAB)格式; AAB可以提供更小的App体积,提升用户的下载转化率并减少卸载量,其要求应用程序的大小不超过150MB。 海外应用包体积优化,原先使用的是APK格式;后来使用Android App Bundle格式,大幅度降低了包体积大小; 单是so文件的分包配置,降低9...

Android Integrate Bitrise and Slack

海外应用的CI/CD开发

前言 两年多没写博客了,最近到了做了海外项目的公司;记录一下海外项目持续集成的技术; 因为日常工作沟通用的比较多的是Slack,国内是钉钉; 本文记录怎么通过,在Slack发送一个打包命令就能构建apk的过程。 1、Bitrise构建apk时,通知到slack的打包群。 登录Bitrise后台,找老板申请管理员权限;选择一个workflow,然后添加一个message的step步骤...

H5调用选择多媒体文件

视频资源选择哪家强

前言 本周支持兄弟租车部门,实现一个H5唤起native获取视频资源的需求;要同时支持拍摄视频和选择视频文件; 唤起后效果如下。 本文讨论的实现针对选择单一多媒体资源的需求,多选可以通过innerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)实现。 对于多选文件的数量限制的参数设置,有知道的朋友可以email我。 我的email: ...

一种拍摄驾驶证Ui的精妙实现

canvas绘制

前言 最近review驾驶证的上传模块业务,里面部分实现写的不错;效果如下,特此记录。 1、视图的结构 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ap...

MVP以及MVVM一些基类的封装

基类

前言 网上有个段子,面试造火箭进去拧螺丝;有时候在公司难免写一个新项目或者一些UI之类;本文简单讲讲一些基类的封装。 1、MVP模式的基类封装 MVP主要定义好Presenter层和View层的接口,在封装一些BaseFragment和BaseActivity。 1.1、 视图View层的封装 简化了视图接口的定义,只拿一个举例子 public interface Erro...

自研人脸初探

人脸识别

前言 2022年的互联网到处弥漫着裁员的消息,自研人脸做为公司在节流侧的重点项目;自研人脸主要涉及 移动端SDK,后端解密视频流数据以及算法侧三块;本文重点分析移动端SDK的开发。 1、使用camera2自定义相机(API 21) camera2的使用可以参考Google的demo,编码优美: https://github.com/googlearchive/android-Camera...

Android面试八股汇总(1)

八股卷起来

前言 不知何时起,大约是21年初的时候首次听说客三消这个词;意思是客户端将在三年内消失; 移动互联网发展了十年,客户端技术几乎非常成熟;流量往头部的app汇集的趋势不可逆, 市面上招聘客户端最多的应该是字节了,客户端求职也激烈了起来;各种八股轮番轰炸, 本着好记性不如烂笔头的原则,记录android面试常见的八股知识点;所谓八股就是在 实际开发中用的极少,但是还是需要知道起技术原理以提升自己...

gradle插件编写及应用

gradle

前言 老Android都经历过从Eclipse切换到AS后对groovy脚本的适应期,groovy语言早期有效的参考资料很少; 不支持类似Java一样可以方便的查看对应方法的实现。大约从三年前的4.10版本开始支持Kotlin编写,一定程度上解放了使用groovy 编写带来的懵逼;本文讲实战,不聊深入的八股原理,下图为apk构建的简略流程图。 1、gradle插件的架子 1.1、 a...

Android跨进程通信分析

binder

前言 跨进程通信在日常开发中不常见,除了少部分多进程插件化架构的app;但在面试中比较常见;Android中,跨进程通信的方式 主要有文件,socket,管道,匿名共享内存以及大名鼎鼎的binder,本文重点讲binder。 1、传统的跨进程通信,如pipe 数据发送方进程将数据放在内存缓存区,通过系统调用陷入内核态; 内核程序在内核空间开辟一块内核缓存区,通过 copy_fr...