Android
天盟
这个作者很懒,什么都没留下…
展开
-
ThinkFlutter,一个Flutter的工程模板,使用了flutterw、flutter web、dartserver、dio、serializable、retrofit、toast、cache
ThinkFlutter一个Flutter的工程模板,使用了flutterw、flutter web、dartserver、dio、serializable、retrofit、toast、cached_network_image、provider、eventbus、isolate、本地图片、iconfonts 并演示了package、plugin开发方式,此为第一版后续不断完善。代码地址:ht...原创 2020-01-18 11:48:16 · 824 阅读 · 0 评论 -
dart_server为flutter web启动一个http服务器,并且可以代理api请求,解决跨域请求问题
dart_server为flutter web启动一个http服务器,并且可以代理api请求,解决跨域请求问题。下载地址:https://github.com/MasonLiuChn/DartServer功能为本地文件夹启动一个http服务,例如为flutter web的产物启动http服务通过接口代理 解决flutter web调用接口时跨域问题执行需要安装dart sdk,...原创 2019-12-15 16:57:52 · 5665 阅读 · 1 评论 -
flutterw用来下载flutter SDK,保证每个人flutter版本一致
flutterwflutterw 用来下载Flutter SDK,类似于gradlew。通过在脚本内配置特定版本号,使得同一工程的所有开发者或CI服务器(例如Jenkins)使用Flutter的版本一致。下载地址:https://github.com/MasonLiuChn/flutterw功能保证所有开发者或CI服务器(例如Jenkins)使用Flutter的版本一致添加了一些额外的...原创 2019-12-15 16:55:46 · 1522 阅读 · 0 评论 -
AIDL和Binder图解
AIDL和Binder图解原创 2017-06-28 21:38:37 · 959 阅读 · 0 评论 -
Android运行时权限
一、消息提示1、Toast 依赖系统Notification,在系统设置中关闭通知后,不再显示Toast。2、Window addView 自己维护队列 使用 TYPE_TOAST, 在原生系统下不需要额外申请权限,但在MIUI8下报无权限,必须添加SYSTEM_ALERT_WINDOWS权限。(根据文档SYSTEM_ALERT_WINDOWS属于特殊权限,需要弹窗用户允许才可以,但实际测试下来原创 2016-10-29 15:02:52 · 443 阅读 · 0 评论 -
不断前进的化化化
一、组件化公共的基础库或者UI库,以jar、aar、maven等方式独立出来。二、模块化bu的模块化 根据bu拆分成不同模块,各模块独立开发,App发布时集成发布。以module方式开发,以maven方式集成。页面的解耦 一个页面再细化拆分成不同的小模块,由不同的人负责开发。粒度更细。三、动态化原生动态化 含逻辑动态化 插件化(动态加载、容器化)、I...原创 2017-05-08 12:33:33 · 469 阅读 · 0 评论 -
APK多渠道打包方案汇总
一、在Apk中的APK Signature Block区块添加自定义的渠道信息原理:在Apk中的APK Signature Block区块添加自定义的渠道信息优点:支持Android Signature V2 Schemehttps://github.com/Meituan-Dianping/walle二、使用aapt 替换 asssets目录的channel优点:不用解包回包、方案通用、不依赖签名原创 2017-05-08 12:39:59 · 1071 阅读 · 0 评论 -
移动动态化方案
项目 地址 来源 备注 VirtualView https://github.com/alibaba/Virtualview-Android 天猫 weex http://alibaba.github.io/weex 阿里巴巴 可包含业务逻辑 json2view https://github.com/Avocarrot/...原创 2016-06-14 11:33:46 · 1165 阅读 · 0 评论 -
Android热修复方案研究(含AOP知识)
一、概述以前对Android 的热修复方案有一些了解,知道几个有名的开源方案,原理大概理解,但是没有整理汇总一下,上周听了玉斌大哥在公司做的分享后,感受颇多觉得写篇博客记一下,不能浪费。 热修复是指在不发新版的情况下修复线上的紧急 bug,长久以来做移动开发的人员都羡慕做后端或者做 web 前端的人员可以随时发布来修复 bug。那么 移动开发有没有这样的方案呢?Hybrid如:PhoneGa原创 2016-01-25 15:27:56 · 1977 阅读 · 0 评论 -
Arrow--轻量级的Android DI 库
Arrow 是一个轻量级的Android DI 库,没有额外的引用。为什么最流行的Android DI框架中,Roboguice已经不再维护了,Dagger2使用有点复杂,需要写component interface(所以我写了一个自动生成component interface的库Dagger2Plus),而且Dagger2使用代码生成,对于有代码洁癖的人来说不太喜欢。Arrow使用反射,在目前动不原创 2016-12-17 22:51:42 · 2265 阅读 · 0 评论 -
React Native 入门姿势
React Native 入门姿势原创 2016-09-27 11:12:51 · 475 阅读 · 0 评论 -
FullPlugin 全量插件化,用于中小App免发布升级
FullPlugin全量插件化,用于中小App免发布升级介绍大部分中小型App没有必要拆分成若干插件,那么可以将整个APK作为一个插件,单独写一个宿主壳,从而实现APK的动态更新,取了一个名字叫全量插件化。对于超级App,还是建议讲App拆成若果插件,使用宿主+ 若干插件的方式来使用插件化。实现基于DroidPlugin制作宿主,正常开发后的App作为插件,宿主的作用是1、加载插件 2、升级插原创 2016-12-07 13:30:43 · 1141 阅读 · 0 评论 -
API的HTTP状态码设计
一、现状:前天与后端开发人员讨论了API接口的设计。有以下三种方案:1、原始HTTTP协议 HTTP状态码就是该Request的状态码,不应该与后端业务混在一起(这也是一部分人使用该方案的理由)。比如200表示该Request成功了,具体业务有没有操作成功还需要在response body里再标记,比如1表示操作成功,0表示操作失败。2、HTTP协议 RESTful 风格 充分利用HTTP状原创 2016-05-16 11:13:19 · 6457 阅读 · 0 评论 -
Activity启动流程、Window创建流程
Activity启动流程、Window创建流程原创 2017-06-28 21:39:49 · 875 阅读 · 0 评论 -
Window显示流程
Window显示流程原创 2017-06-28 21:40:35 · 783 阅读 · 0 评论 -
Android模块化方案实践 - 视频课程
课程地址:https://www.cniao5.com/course/10214原创 2019-07-20 16:58:21 · 458 阅读 · 0 评论 -
RNContainer-Android - 基于react-native sdk封装的运行bundle的容器
RNContainer-Androidhttps://github.com/MasonLiuChn/RNContainer-Android此工程是基于react-native Android sdk封装的运行bundle的容器,使用redux和本人建议使用Weex来代替react-native,下面有weex和react-native开发时的差异点。TODO1、download 管理,...原创 2018-12-18 12:41:23 · 469 阅读 · 0 评论 -
基于AnyProxy的Mock工具-MockLoveProxy
MockLoveProxyhttps://github.com/MasonLiuChn/MockLoveProxy基于AnyProxy的rule功能,在代理的后端增加一层mock。可以方便的配置某些接口的mock、可以依据场景切换mock。功能1、部分接口mock,根据url的path和mock文件名进行匹配,匹配成功则mock,匹配不成功则继续走url2、支持多场景切换...原创 2018-11-17 17:10:36 · 871 阅读 · 0 评论 -
一个开发Weex的极简模板工程,采用Vue v2.0、Webpack v3、Vue Loader v14,并默认配置了Vuex、VueRouter
WeexTemplate一个开发Weex的极简模板工程,采用Vue v2.0、Webpack v3、Vue Loader v14,并默认配置了Vuex、VueRouter,没有多余依赖,适合作为初始工程进行扩展。所有依赖升级到最新版。包含四种架构:webspa-nativempa、webspa-nativespa、nativempa、webspa,如果仅使用weex开发native则推荐na...原创 2018-11-19 19:32:15 · 525 阅读 · 0 评论 -
WeexContainer-Android:Android平台上的Weex容器,实现MPA、Bundle缓存等通用功能
WeexContainer-Android一个Android平台上Weex容器,实现MPA,Bundle缓存、验签等通用功能。SDK代码地址:https://github.com/MasonLiuChn/WeexContainer-Android一、Demo:http://www.masonliu.com/app/digua/downloadhttps://github.com...原创 2018-04-20 15:27:27 · 912 阅读 · 2 评论 -
Weex与ReactNative开发方式对比
一、Weex与ReactNative开发方式对比 weex react nativeJS框架vue.js,可以开发小程序、PWAreact.js,目前不能开发小程序管理实例是否单例化没有要求官方建议ReactInstanceManager进行单例化即同一个bundle name 打开多次都使用同一个ReactInstanceManager开发时启动web服务使用server.js或者express...原创 2018-04-13 17:36:07 · 1370 阅读 · 0 评论 -
使用github作为maven仓库的方法
一、使用github作为maven仓库的优势1、不用申请公共仓库账号2、和github代码版本保持一致二、方法1、使用jitpack.io 关于jitpack.io的使用文章网上有很多,在这里不做过多介绍了2、新建github仓库作为maven仓库 1、这种方法实际上利用github的raw服务把git仓库当作http下载服务使用,例如我的仓库:https://git...原创 2018-04-12 15:18:43 · 4430 阅读 · 1 评论 -
android library module内含aar包,完整打包上传maven的方法
问题:我们有一个Android Module内部引用了一个aar,当我们打包这个Android Module时,引用的aar并不会打包到最终的aar里。一、思路一:将引用的aar解压,把解压后的资源分别放入到现用的Android Module里。二、思路二:借助Maven,将引用的aar发布的maven仓库,AndroidModule通过maven地址引用该aar,...原创 2018-03-06 16:02:46 · 4811 阅读 · 10 评论 -
基于arouter实现Android模块化方案
基于arouter实现Android模块化方案一、模块化优势:多团队并行开发测试;模块间解耦、重用;可单独编译打包某一模块,提升开发效率二、模块化架构图 使用方式: - 各模块作为Module,所有模块代码都在同一Project - 各模块都在独立的Project内三、模块化需求介绍1、模块隔离,去除强依赖每个模块都需要指定一个资...原创 2018-03-05 13:42:47 · 1236 阅读 · 2 评论 -
Android https ssl证书配置(使用okhttp)
本文介绍使用okhttp时配置https证书的用法,关于证书的原理和SSL协议本文不做介绍,需要的同学自行查阅。https证书常见的错误用法是信任所有证书,https证书在移动应用中常见的问题是证书过期但客户端无法及时更新的问题。本文列举了几种配置方法,并做简单总结:1、验证系统中信任的根证书(默认)不适合自颁发的证书(12306.cn)也会存在中间人劫持问题,只要有从信任...原创 2017-08-30 11:18:34 · 8541 阅读 · 0 评论 -
Weex中Web端做SPA,Native端做多页应用以及Vuex的接入
https://github.com/MasonLiuChn/WeexExplorerWeexExplorer尝试实现:Web端做SPA,Native端做多页应用使用Vuex一、build native每个vue文件都为生成一个独立的bundle入口是 index.vue 即 index.vue –> mixins –> 加载router-native和vuex每个bundle都有自己原创 2017-07-12 13:54:28 · 2626 阅读 · 0 评论 -
Android动态加载(插件化)基本原理总结
一、原理简介首先给插件apk单独设置classloader,在宿主的assertmanager、resource 中都加入插件apk路径 - 1、代理模式: 此时 插件apk加载的class 仅作为宿主activity的内部类 - 2、自由模式: 改变application 的 loadedapk 中的 class loader 指向 插件apk 的 class loader,此时启动的a原创 2016-08-10 15:17:07 · 674 阅读 · 0 评论 -
使用 buck 打包 Android( 使用OkBuck给Android Studio+gradle生成 buck 脚本)
一、安装Buck1、环境Buck当前只支持 Mac OS X 和 Linux本文以Mac OS X平台为例进行介绍首先需要确保你的 OS X 满足以下条件:Oracle JDK 7Apache Ant 1.8 (or newer)Python 2.6 or 2.7GitC 编译器:gcc或者clangAndroid SDK上述环境都要加入原创 2015-10-10 12:06:16 · 5713 阅读 · 1 评论 -
三星i9300i线刷港行4.4(国行也能刷)+ 刷TWRP + root(刷机、救砖教程亲测)
一、准备:港版4.4一体包TGY-I9300i-ZHUBNI2:http://pan.baidu.com/s/1pJ2XGbp (全套谷歌服务)第三方Recovery(TWRP)及ROOT包:http://pan.baidu.com/s/1sj4VGsd第三方Recovery(CWM)(推荐刷这个Recovery)http://pan.baidu.com/s/1gdgYcHP三星线原创 2015-04-19 16:40:33 · 7321 阅读 · 0 评论 -
Android JNI 获取应用签名
使用Android JNI 获取应用签名。根据获取的签名来生成自己的密码,这样可以防止别人反编译自己的源码后查找密码。jstring Java_com_masonsdk_jni_JNIUtil_getPWD(JNIEnv* env, jobject thizz ,jobject thiz ){ jclass native_clazz = env->GetObjectClas原创 2014-06-02 10:54:43 · 4770 阅读 · 1 评论 -
Android屏幕大小适配问题解决
一、一些基本概念1、长度(真实长度):英寸、inch2、分辨率:density 每英寸像素数 dpi(密度)3、像素:px4、dip的公式:px /dip=dpi/160 所以 dip 类似于英寸、长度(dp=dip,sp类似于dip) dip=160*inchdip= 160/dpi * px当dip一定时,dpi 越大,px就越大原创 2014-05-17 22:58:48 · 5207 阅读 · 1 评论 -
Activity 获取 view getContentView
public static View getContentView(Activity ac){ ViewGroup view = (ViewGroup)ac.getWindow().getDecorView(); FrameLayout content = (FrameLayout)view.findViewById(android.R.id.content);原创 2014-05-17 22:29:58 · 11978 阅读 · 0 评论 -
Android 语音识别 研究
一、Android 提供了三种方式:语音识别方法一:使用intent调用语音识别程序1. 说明以下例程功能为:在应用程序中使用intent来调出语言识别界面,录音并识别后将识别的字串返回给应用程序。注意:使用前需要安装语音识别程序如语音搜索。2. 本例参考自android例程:development/samples/ApiDemos/src/原创 2014-05-17 23:09:37 · 1231 阅读 · 0 评论 -
Android NDK 开发+cygwin 的安装 +eclipse cygwin配置
前言:Android NDK r7及以上的版本已经集成了Cygwin编译环境,也就是说,我们完全可以抛弃庞大的Cygwin了。参见:http://blog.csdn.net/codezjx/article/details/8879670下面是原来的老方式:Android NDK 开发 +cygwin 的安装 +eclipse cygwin配置一、安装ndk 、j原创 2014-05-17 22:34:36 · 1021 阅读 · 0 评论 -
Android推送方案研究
一、 成熟的第三方推送平台(1)、百度云推送1、功能介绍:百度云推送服务支持推送三种类型的消息:通知、透传消息及富媒体;支持向所有用户或根据标签分类向特定用户群体推送消息;支持更多自定义功能(如自定义内容、后续行为、样式模板等);提供用户信息及通知消息统计信息,方便开发者进行后续开发及运营。2、高级特性:1、账户支持1.1百度账户开发者可选择原创 2014-05-17 23:08:22 · 986 阅读 · 0 评论 -
ubuntu10.04 下通过usb在真机调试android程序的设置???????????? no permissions
untun下USB连接Android手机后,使用adb devices 出现如下:List of devices attached???????????? no permissions同时在DDMS中显示设备名也显示????,也无法显示进程名,无法查看log。一、工具介绍android-sdk-linux_x86/tools下有一堆工具,今天要用的是:Android Debug原创 2014-05-17 22:26:58 · 686 阅读 · 0 评论 -
Android Ant 和 Gradle 打包流程和效率对比
一、Ant 打包:(下载ant、配置环境变量就不说了)1、进入命令行模式,并切换到项目目录,执行如下命令为ADT创建的项目添加ant build支持:android update project -p . -t "android-17"2、build脚本默认target是help,所以会显示如上信息,修改target为debug或release就可以像无ant时一样编原创 2014-05-17 23:41:29 · 3835 阅读 · 0 评论 -
SQLite 常用语句 sql语句
1、创建表create table Words_new (rowid INTEGER PRIMARY KEY AUTOINCREMENT,word text NOT NULL,meanings text NOT NULL,pronounce text);2、插入数据insert into Words_new (word,meanings,pronounce)sele原创 2014-05-17 23:00:15 · 791 阅读 · 0 评论 -
Android UI优化工具 ----Hierarchy Viewer
一、什么使用HierarchyViewer不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程序的工具之一,它是Android自带的非常有用的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。二、怎么使用Hiera原创 2014-04-05 21:32:22 · 1595 阅读 · 0 评论 -
Android系统自定义Android Lollipop Theme
自己搭配Android Lollipop(基于三星官方rom4.4),本人是原生控所以一直在用rox的cm12,但是卡2不能用,我都是一张卡上网一张卡通话这也是当初选择i9300i的原因所以还是刷回了官方rom。 由于喜欢原生安卓5.0的主题,所以自己调教了一番,这样既可以有完整功能又有原生体验了。 用到的软件有:Apex Launcher,Snap效率锁屏,Xpose原创 2015-04-19 16:57:23 · 756 阅读 · 0 评论