0%

集成ProtobufAndroid项目中的步骤如下

  1. Projectbuild.gradle下加入protobuf插件

classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'

  1. modulebuild.gradle下添加配置

apply plugin: 'com.google.protobuf'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
android {
...
sourceSets {
main {
java {
srcDirs 'src/main/java'
}
//pb文件所在目录
proto {
srcDirs 'src/main/proto'
}
}
}
}
   //protobuf脚本配置
   protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0'
}

generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.builtins {
java {}
}
}
}
}
 //依赖protobuf库
 dependencies {
...
api 'com.google.protobuf:protobuf-java:3.0.0'
}

3.make项目完成

XXPB.pb文件结构

1
2
3
4
5
6
7
8
9
10
11
12
syntax                                        = "proto3";
option java_package = "com.xxx.xx.proto";
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;

package XXPB;

//用户Id信息
message UserId {
int64 lUid = 1; // user id
string sVersion                             = 2; // app版本
}

:记得protobuf的生成类不要混淆

在Flutter中使用protobuf并没有在Android原生中使用那么简单,稍显繁琐。因此,记下使用步骤。

1. 安装 protoc

brew install protobuf

2. 安装protoc_plugin

pub global activate protoc_plugin

注意: 安装完成后会有个提示,就是将路径添加到path中。安装好配置完成path后,就可以在任何地方直接使用protoc-gen-dart命令了

3. 将.proto文件编译成dart文件

protoc --dart_out=. test.proto

注:该条命令表示在当前目录下生成test.proto对应的dart文件

每次升级hexo都要去查询具体的升级步骤,为了免去后续的麻烦,决定在此记录下升级步骤。
总共四个步骤,具体如下

  1. 全局升级hexo-cli,先hexo --version查看当前版本,然后npm i hexo-cli -g,再次hexo --version查看是否升级成功
  2. 使用npm install -g npm-checknpm-check,检查系统中的插件是否有升级的,可以看到自己前面都安装了那些插件
阅读全文 »

git自动补全

  1. 通过Brew安装bash-completion

    brew install bash-completion 安装后通过brew list命令查看安装是否成功

  2. 查看bash-completion安装信息

    brew info bash-comletion

      我的在terminal中展示 添加 [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"至.bash_profile文件中,根据各自输出情况而定

阅读全文 »

Dart语言特性

变量声明

  • var 可以接收任何类型的变量,一旦赋值,就不能改变其变量类型
1
2
var a = 100;
a = "100"; //此时会报错,dart根据编译时第一次赋值类型,推断出变量类型,编译结束后,该变量类型遂即确定,不能再改变
  • dynamicObject
      * Object是所有对象的基类,所有类型都是Object的子类,包括函数(Function)和Null, 所以任何类型的数据都可以赋值给Object声明的对象。
      * dynamicvar一样,也可以接收任何类型的变量
      * 注意:dynamicObject赋值后,后期可以改变其变量类型
  • finalconst
      * 被finalconst修饰的变量,变量类型可以省略
      * const是编译时常量,而final是在第一次使用时,被赋值
阅读全文 »

快速排序

快速排序是排序算法中使用最广泛的算法了,之所以使用如此广泛,是因为其适用于各种不同的输入数据并且比其他的一般排序算法要快很多。

思想

快速排序是一种分治的排序算法。它将一个数组分成两个子数组。将两部分独立排序。当两个子数组都有序时,整个数组也就有序了。快速排序对数组切分的位置取决于数组的内容。

阅读全文 »

JAVA虚拟机内存区域

Java运行时数据区域

Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干不同的数据区域,主要包括以下几个运行时数据区域。如图所示

Java运行时数据区域

阅读全文 »

Sqlite学习笔记(一)

1. 常量

表示确切的值,包含三种类型,字符串常量,数字常量和二进制常量

  • 字符串常量
    推荐使用单引号界定字符串,虽然也可以使用双引号界定
    例如:'jerry', 'john',若字符串本身包含单引号,需要连续两个单引号,例如 'jerry ''s children'

  • 数字常量
    数字常量有整型、十进制数和科学计数法表示的数,其中二进制使用x’0000’来表示,二进制数必须有两个16进制数的整数倍组成

阅读全文 »

adb常用命令

  • 获取所用应用
    adb shell dumpsys activity
  • 获取自己的应用
    adb shell dumpsys activity | grep com.xxx.xxx.xx
  • 获取处于栈顶的activity
    adb shell dumpsys activity | grep mFocusedActivity
  • 解决windows中出现的grep不是内部或外部命令,也不是可运行的程序或批处理文件(shell后加引号)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
adb shell "dumpsys meminfo | grep com.XXX.XXX"   >e:\info\mem.txt
adb shell "top | grep com.XXX.XXX"

adb shell "dumpsys activity b com.power activity" //查询某个App所有的广播状态
adb shell "dumpsys activity s com.power activity" //查询某个App所有的Service状态
adb shell "dumpsys activity a com.power activity" //查询某个App所有的Activity状态

adb shell "dumpsys activity top" //当前界面app状态
adb shell "dumpsys activity oom" //查看进程状态

adb shell "dumpsys activity" //查询AMS服务相关信息
adb shell "dumpsys window" //查询WMS服务相关信息
adb shell "dumpsys cpuinfo" //查询CPU情况
adb shell "dumpsys meminfo" //查询内存情况
  • 通过下面任一命令查看当前系统所支持的dump服务
1
2
adb shell dumpsys -l
adb shell service list
  • 查看正在运行的service
    adb shell dumpsys activity services [<package-name>]

  • 获取Android uid(三种方式)

1
2
3
1. adb shell dumpsys package <packagename> | grep userId=
2. adb shell cat /proc/<pid>/status | grep Uid //需要使用adb shell ps | grep <packagename>获取pid
3. adb shell cat /data/system/packages.xml | grep <packagename>

查看Cursor内容

  • DatabaseUtils.dumpCursorToString(cursor)