- 博客(30)
- 资源 (7)
- 收藏
- 关注
原创 Makefile命令 - 学习
在开发中,源文件依赖于.proto文件编译后的.pb.c文件,通过一次命令就能执行编译.proto文件以及编译源文件的动作:两步编译proto文件和源文件1. 编译.proto文件PROTO_DIR = ./protoOUT_DIR = ./outmkproto: mkout//将./proto/%.proto文件编译成./out/%.pb.h和./out/%.pb.c $(PROTOC) $(PROTOC_OPTS) --proto_path=$(PROTO_DIR) --na
2020-09-02 21:05:50 669
原创 nanopb - Protocol Buffers 编译
关于Protocol BuffersProtocol Buffers是Google开发的用于序列化数据的机制,它无关开发语言,无关使用平台,且具有可扩展性。只要你把你的数据定义为结构化的protocal buffer数据,然后使用编译工具将它编译成特定语言下的源码,就能很方便地将你的结构数据写成数据流(编码),或是将数据流读取为你的结构数据(解码)目前Protocol buffers可支持的生成语言有Java,Python, Object-c, 以及C++, proto3版本还新增了Dart,Go,
2020-08-25 20:25:20 1945
原创 Ubuntu 18.04 文件管理器 nautilus打不开
重装了Ubuntu18.04系统后,莫名的文件管理器程序怎么也打不开,但是在终端操作文件都是没有问题的;通过下面杀进程的方式,以及重启机器,都都都没有得到解决!!!!ps -A | grep nautiluskill processId于是在终端打开nautilus后发现报下面错误pc:~$ nautilus(nautilus:3876): GLib-GIO-ERROR **: 16:14:59.419: Settings schema 'org.gnome.DejaDup' i
2020-07-24 16:43:52 3359
原创 Retrofit网络框架使用中遇到的一个Url编码的坑
Retrofit 是一个用于 Android 和 Java 平台的类型安全的网络请求框架,项目的网络模块是使用Retrofit框架封装的;开发过程中,使用了第三方的sdk,要将第三方输出的数据上传给服务端,但是sdk输出的+经过Url encode传输给服务端,服务端url decode之后就成了空格。。。在线对输出的数据进行url 编解码没有问题,最终编解码结果都是和原始数据相同,所以...
2020-04-04 21:50:35 2832
原创 Android 消息处理机制-HandlerThread
Looper运行在一个线程中,其他线程都是通过Handler发送消息到Looper所在的线程进行线程间的通信的。 创建一个线程,默认是没有Looper的,而HandlerThread是可以创建一个带有Looper的线程,这个Looper可以用于创建Handler实例。。。HandlerThreadHandlerThread调用示例创建HandlerThread对象启动HandlerThre...
2020-03-08 12:13:35 252
原创 Android Handler消息循环处理机制
Android 消息处理机制,包括了Message, MessageQueue, Handler, Looper四大块,下面详细介绍下每个模块:Message, 顾名思义消息,要处理的对象;MessageQueue, 消息队列,将消息推送到消息池和从消息池取走消息;Handler, 将消息推送到消息队列中,和处理Looper分发过来的消息;Looper,不断循环执行 将消息从消息队列中取...
2020-03-08 10:53:14 693
原创 Android多线程通信-----IntentService
IntentService是可处理异步请求的Service抽象子类,必须实现onHandleIntent,这个回调方法是在工作线程执行的;IntentService主线程和工作线程之间的内部通信也是通过Handler来实现的,是单一工作线程,顺序执行;调用者通过调用android.content.Context#startService(Intent)来启动发送请求,service一旦启动,...
2020-02-24 12:26:00 372
原创 Android多线程通信-----AsyncTask
当用户点击某个app,Android系统会启动一个进程,该进程包含一个Thread,称为UI 线程或主线程,主线程中有很多需要处理的事件,如系统事件处理,用户输入事件处理,UI绘制,Service,Alarm等等,而默认我们自己功能的处理逻辑也是运行在主线程的,但是如果是比较耗时的计算操作,比如网络请求或是数据读取等也在主线程执行,我们可能会感觉到明显的界面卡顿,卡顿一段时间后系统就会报ANR。...
2020-02-22 12:30:39 195
原创 Android 标识符(MAC,IMEI,ANDROID ID)
从Android6.0之后,google开始更多地关注用户隐私相关的数据,开始收紧应用请求用户隐私数据(包括设备标识符,短信,联系人,通话记录,帐号等等)的权限...Android Q开始获取设备标识符的权限就更严格...对于一个第三方应用,在Android Q上将无法获取到设备唯一标识符硬件标识符访问权(MAC)MAC地址具有全局唯一性,无法被用户重置,恢复出厂设置后也不会变...
2019-07-28 20:33:47 6962 1
原创 Java CookieManager Cookie domain
The Domain AttributeThe Domain attribute specifies those hosts to which the cookie will be sent. For example, if the value of the Domain attribute is "example.com", the user agent will incl...
2018-11-03 18:00:43 1716
原创 执行adb remount提示remount of /system failed: Read-only file system
解决方式:1. adb root2. adb disable-verity3. adb reboot(重启机器)4. adb root5. adb remount解决方式来源于:adb remount 系统提示只读文件系统Read-only file system,解决用adb disable-verity...
2018-09-28 10:44:32 2810
原创 matlab2012b下载+安装步骤
To install MATLAB R2012b make next steps:1. Copy all files from DVD to folder on your hard drive, i.e 'C:\MATLABSetup'2. Change file 'install.jar' in the folder 'C:\MATLABSetup\java\jar\install.jar'...
2018-08-04 10:55:02 10018 1
原创 UTF-8编码
标准ASCII码使用7位二进制来表示128个字符的编码,这128个符号,只占用了一个字节的后面7位,最前面一位统一规定为0.当然,英语用这128个符号编码就足够了,但是用来表示其他语言,这128个字符是不够的,所以扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号 但是光中国汉字就多达10万左右,一个字节只能表示256个符号肯定是不够,...
2018-05-12 17:46:31 460
原创 Base64编码原理
在计算机中,所有的数据在存储和运算时都要使用二进制数表示,为了保证大家互相通信,统一用ASCII编码来约束常用符号用哪些二进制数字来表示;Base64主要用于将不可打印的字符转换成可打印字符,或者简单地说将二进制数据编码成ASCII字符,通常用于处理文本数据的场合,包括MIME的电子邮件及XML的一些复杂数据 Base64最早是用在邮件传输协议中的,原因是邮件传输协议只支持ASCI...
2018-05-06 13:04:23 298
原创 Android P新特性:强制执行 FLAG_ACTIVITY_NEW_TASK 要求
/*** Retrieve a PendingIntent that will start a new activity, like calling* {@link Context#startActivity(Intent) Context.startActivity(Intent)}.* Note that the activity will be started outside of ...
2018-04-20 18:31:58 4705
原创 .gitignore 忽略不追踪的文件
Git是一个很受欢迎的分布式版本控制器,每个开发者都有全部开发历史的本地副本,但是我们经常开发完发现有一些不要跟踪的文件自动上传了,比如AndroidStudio自动生成的编译文件,于是Git 提供了很简单的解决方式:在Git工作区的根目录下创建.gitignore文件,把要忽略跟踪的文件配置到.gitignore文件里就可以了 但是后添加的.gitignore不会自动忽略已经...
2018-03-31 11:39:39 665
原创 Android屏幕适配
源于Android系统的开放性,任何移动终端厂商都可以对Android平台进行定制,所以Android系统会在不同屏幕尺寸和分辨率的设备上运行。 为了保证在所有设备上一致的用户体验,则UI中的某一元素在Android不同尺寸,不同分辨率的手机上具备相同的显示效果 Android系统可以处理大多数工作,为了将applications适用于不同的屏幕,会进行缩放和大小调整,
2018-02-03 18:54:42 280
原创 git diff 利用打patch的方式移植分支间的改动
开发过程中,我们需要了解当前每个改动。在版本控制系统中用来显示两个版本之间差别的操作,我们称之为“diff” 或者“patch”补丁 执行git add之后,提交的改动就是在暂存区 git diff 指工作目录下的改动,即工作目录树与暂存区之间的区别 git diff –cached 指暂存区与版本库最后一个版本的区别(用来查看执行git add后保存的改动) git d
2018-01-26 19:37:24 3070
原创 Android 8.0 - AccountManager之行为变更
这周有同事反馈android 8.0上获取不到帐号,第一反应就是去看源码了,没想起来先看下官方文档哈哈。。。由于自己的理解误区,还是走了点弯路,但幸运的是最终搞清了获取帐号的整个流程接下来说的是获取帐号的权限变更://获取帐号列表/或对应帐号类型的某个帐号AccountManager#getAccounts()/getAccountsByType(String accountType...
2017-12-16 18:48:41 4116 3
原创 Android AccountManager帐号管理(二)
Android AccountManager 帐号管理(一)分享了如何将自己的帐号体系注册到系统服务AccountManagerService,统一由AccountManager来管理,这仅是自己的一点理解;但开发者对接的工作远不止如此,还有用户登录完成后如何将帐号添加到系统数据库中等等,AccountManager都有提供相对应的接口在说接口之前,先看一下AccountManager会用到的两个接
2017-11-27 19:28:15 13041
原创 Android AccountManager帐号管理(一)
AccountManager简介AccountManager帐号管理器,集中管理apps注册的不同类型的帐号。不同类型的帐号服务会使用不同的帐号登录和鉴权方式,所以AccountManager为不同类型的帐号提供一个插件式authenticator模块,authenticators自己处理帐号登录/认证的具体细节,也可以自己存储帐号信息AccountManager是一个面向应用程序开发的组件
2017-11-18 17:10:30 9275
原创 android.util.Log 日志级别
通常,我们可以使用android.util.Log类来打印日志消息,通过Logcat来查看打印的日志
2017-11-15 19:57:14 3866
原创 Andriod Studio更新之后打开打开Android Device Monitor失败
Android Device Monitor打开失败
2017-09-30 17:22:59 1786 1
nanopb-demo.zip
2020-09-01
protobuf-all-3.13.0.tar.gz
2020-08-26
nanopb-nanopb-0.3.9.2.zip
2020-08-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人