环境配置
- 下载Protocol Buffers源码 官网
|
|
- 编译源码
- 进入protobuf/目录下
- ./autogen.sh
- ./configure
- make
- sudo make install
- 执行完上面步骤后即可全局执行protoc命令
|
|
- 编写 .proto文件
|
|
- 编译出java文件
|
|
- java层源码支持
1.可自行根据源码中protocol/java 编译出jar包
2.build.gradle引入
|
|
- 序列化
|
|
- 反序列化
|
|
读万卷书,行万里路
|
|
|
|
|
|
|
|
1.可自行根据源码中protocol/java 编译出jar包
2.build.gradle引入
|
|
|
|
|
|
FlatBuffers (binary) | Protocol Buffers LITE | Rapid JSON | FlatBuffers (JSON) | pugixml | Raw structs | |
---|---|---|---|---|---|---|
Decode + Traverse + Dealloc (1 million times, seconds) | 0.08 | 302 | 583 | 105 | 196 | 0.02 |
Decode / Traverse / Dealloc (breakdown) | 0 / 0.08 / 0 | 220 / 0.15 / 81 | 294 / 0.9 / 287 | 70 / 0.08 / 35 | 41 / 3.9 / 150 | 0 / 0.02 / 0 |
Encode (1 million times, seconds) | 3.2 | 185 | 650 | 169 | 273 | 0.15 |
Wire format size (normal / zlib, bytes) | 344 / 220 | 228 / 174 | 1475 / 322 | 1029 / 298 | 1137 / 341 | 312 / 187 |
Memory needed to store decoded wire (bytes / blocks) | 0 / 0 | 760 / 20 | 65689 / 4 | 328 / 1 | 34194 / 3 | 0 / 0 |
Transient memory allocated during decode (KB) | 0 | 1 | 131 | 4 | 34 | 0 |
Generated source code size (KB) | 4 | 61 | 0 | 4 | 0 | 0 |
Field access in handwritten traversal code | typed accessors | typed accessors | manual error checking | typed accessors | manual error checking | typed but no safety |
Library source code (KB) | 15 | some subset of 3800 | 87 | 43 | 327 | 0 |
下载flatbuffers源码
|
|
cmake (源码中已包含cmake,也可自行下载)
进入 flatbuffers/
|
|
1.去官网下载mvn源码mvn下载
2.在.bash_profile中加入如下配置
3.进入flatbuffers/
本质是将flatbuffers/java目录下源码打成jar,但是此目录下没有配置对应的pom.xml
本人尝试自己编写pom文件失败后,最后发现flatbuffers/目录下有此配置文件,坑,在此目录下运行以下命令,会生成target文件夹,在target/文件中找到flatbuffers-java-1.9.0-sources.jar
|
|
|
|
括号里是别名
根据schme文件编译生成java entity文件
根据schme文件编译生成c++ 头文件
|
|
根据.proto文件生成.fbs(将protobuffer格式转为flatbuffer)
|
|
根据.fbs文件和.bin文件生成json
|
|
根据schme文件和 json数据文件生成所对应的flatbuffers格式的数据文件
|
|
了解其它相关命令官方文档
以下面这个scheme为例
java层序列化到文件
java反序列化
|
|
参考:http://coolpers.github.io/
https://www.jianshu.com/p/03a2e8918f8a
android-ndk-r10e下载链接
1.chmod a+x android-ndk-r10e-darwin-x86_64.bin (申请权限)
2.”./android-ndk-r10e-darwin-x86_64.bin” (切勿用工具解压)
3.指定ndk路径,打开.bash_profile 输入
4.source .bash_profile 应用
5.检查ndk是否配置成功
1.project中 build.gradle添加如下
1
classpath 'de.undercouch:gradle-download-task:3.1.2' //此步骤马上执行sync,不然接下来可能会报错
2.修改settings.gradle
12
include ':ReactAndroid'project(':ReactAndroid').projectDir = new File(settingsDir, '. ./rn/node_modules/react-native/ReactAndroid')
3.app build.gradle 修改
1234567
dependencies{ api project(':ReactAndroid') 此处需要注释掉所有测试相关的依赖 }configurations.all { exclude group: 'com.facebook.react', module: 'react-native' }
4.ReactAndroid 项目修改
12
1.移动与ReactAndroid 同级的 ReactCommon到ReactAndroid(此步可有可无)修改 build.gradle "REACT_COMMON_DIR=$projectDir/../ReactCommon" 为"REACT_COMMON_DIR=$projectDir/ReactCommon",(有两处需修改)
5.app第三方本地依赖修改
注销掉原来的react-native 依赖
|
|
第三方本地引入依赖修改
|
|
修改前(ReactAndroid/release.gradle)
|
|
修改后
|
|
下载的文件放入 ReactAndroid/build/downloads下boost下载
正常情况下只需要下载boost,其它的在编译时自动下载,如果下载不成功就采取手动下载,链接的资源如下
ReactNative 暂时还不支持新版的 api依赖等方式,所以需要保持 compile
下面这个任务会不通过,因为此任务会去compile中复制一些文件过来
12345678910
task prepareJSC(dependsOn: dependenciesPath ? [] : [downloadJSCHeaders]) << { copy { from zipTree(configurations.compile.fileCollection { dep -> dep.name == 'android-jsc' }.singleFile) from dependenciesPath ? "$dependenciesPath/jsc-headers" : {downloadJSCHeaders.dest} from 'src/main/jni/third-party/jsc/Android.mk' include 'jni/**/*.so', '*.h', 'Android.mk' filesMatching('*.h', { fname -> fname.path = "JavaScriptCore/${fname.path}"}) into "$thirdPartyNdkDir/jsc"; } }
React 不支持 D8的merge dex工具
|
|
1. 配置Git
git config --global user.name "YourName"
git config --global user.email "email@example.com"
2. 创建版本库
git init
3. 查看当前版本库的状态
git status
4. 查看当前窗口的所有log
git log --pretty=oneline
5. 查看历史log
git reflog
6. 添加文件到暂存区
git add readme.txt
git add . 一次添加所有的文件
7. 提交修改
git commit -m "example commit"
8. 版本回退
git reset --hard 23230(commit id) 回退到指定版本
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD~8 回退到前8的那个版本
9. 撤销修改
git checkout -- readme.md
10. 撤销暂存区(git add)的修改,重新放回工作区
git reset HEAD readme.txt
11. 从版本库中删除文件
git rm test.txt
12. 对比不同,查看修改的内容
git diff readme.txt
13. 删除已经被提交的文件(本地加入ignore,需要删除远程仓库中的)
git rm -r build.xml 从版本库中删除(单个文件)
git rm -r build/ 从版本库中删除(整个build目录)
git commit -m "ignore commit files" 提交
git push origin master 推送到远程仓库
14.回滚代码
git checkout -b sm v4.9.7 本地建个sm分支跟踪 v4.9.7 tag
git push -f origin sm:master 强制把master回滚到 sm 分支(相当于回滚到 4.9.7tag)
git branch -D master 删除并重建本地master
git checkout -b master --track origin/master
1. 使用Coding创建一个远程仓库
2. 运行命令
git remote add origin https://github.com/googlesamples/android-ndk.git
3. 将本地库的所有内容推送到远程仓库上
git push -u origin master (初次提交)
git push origin master (初次提交后再次提交)
4. 从远程仓库克隆
git clone https://github.com/googlesamples/android-ndk.git (远程 master分支)
git clone -b dev https://github.com/googlesamples/android-ndk.git (远程 dev分支)
1. 创建分支
git branch dev
2. 切换分支
git checkout dev
3. 创建并切换分支
git checkout -b dev
4. 查看当前分支
git branch
5. 删除分支
git branch -d dev
6. 推送本地的分支到服务器
git push origin dev
7. 查看本地与远程的所有分支
git branch -a
8. 删除远程分支
git push origin --delete dev
9. 删除远程tag
git push origin --delete tag tag_1
1. 使用 git merge dev 合并分支代码时,Git会使用<<<<<<,======,>>>>>>标记处不同分支的内容,
待我们手动合并冲突后,保存之后重新提交即可完成分支合并
2. 使用命令查看分支合并图
git log --graph
1. 通常,合并分支时,如果可能,Git会使用Fast forward模式,但在这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,从分支历史就可以看出分支信息。
2. 使用如下命令禁用Fast forward模式
git merge --no-ff -m "merge with no-ff" dev
1. 接到修复代号101bug的任务,创建一个分支issue-101来修复它。但是,当前正在dev上进行的工作还没有提交。
存储工作现场,存储之后 git status将没有内容,即工作区是干净的。
git stash 存储工作现场
2. 新建分支issue-101修复bug,并合并到master分支。
git checkout -b issue-101
git add motifity.java
git commit motiffity.java
git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101
git branch -d issue-101
3. 切回dev分支干活,并恢复现场
git stash list 查看刚才的工作现场
git stash apply 恢复最近的工作现场
git stash drop 删除存储的工作现场
4. 一步恢复工作现场,恢复的同时把stash内容也删了
git stash pop
5. stash的其它命令
git stash apply stash@{0} 恢复指定的工作现场
git stash show -p stash@{0} 对比指定工作现场与当前所发生的改变
git stash show -p 对比最近工作现场与当前所发生的改变
git stash save xxxxx 带有指定信息的存储工作现场
git stash drop stash@{0} 抛弃指定的工作现场
gut stash branch develop_test 以当前存储的工作现场创建并切换到分支 develop_test
1. 创建一个分支,用于开发下一代星际飞船
git checkout -b feature-vulcan
2. 飞船开发完成,切换到dev分支准备合并
git add vulcan
git commit -m "feature vulcan"
git checkout dev
3. 经费不足,新功能取消
git branch -d feature-vulcan (失败,未经合并的分支)
git branch -D feature-vulcan 强制删除
1. 查看远程库信息
git remote
git remote -v 查看更详细的信息(Git库远程地址)
2. 推送分支
git push origin master
git push origin dev
master分支是主分支,因此需要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没有必要推送到远程了,除非老板要看你每周到底修复了几个bug;
feature分支是否推送到远程,取决于你是否和你的小伙伴合作在上面开发
3. 抓取(克隆)分支
git clone https://github.com/googlesamples/android-ndk.git
默认情况下,clone下来时,本地只能看到master分支
需要从dev分支开发,在本地创建dev分支:
git checkout -b dev origin/dev
4. 指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream dev origin/dev
5. 从服务器拉取最新内容
git pull
1. 创建标签
git tag v1.0
2. 查看所有标签
git tag
3. 从某次提交创建标签
git tag v0.9 82283
4. 带说明文字
git tag -a v0.1 -m "version 0.1 released" 2323
-a 指定标签名
-m 指定说明文字
git show v0.1 查看说明文字
5. 删除标签
git tag -d v1.0
6. 推送标签到远程
git push origin v1.0
7. 从远程库删除
git push origin :refs/tags/v1.0
1. 忽略掉Git工作目录中不需要提交的文件,如.class文件。创建.gitignore文件即可
2. 某些时候,无法添加文件到Git
git add -f demo.java -f 强制添加
3. 如果.gitignore写的有问题,使用命令检查
git check-ignore -v demo.java 该命令会告知.gitignore哪里写得有问题
1. 避免每次pull/push都输入账户名与密码。在config文件中加入如下命令
[credential]
helper = store
2. Git默认对大小写不明感,加入如下配置命令不忽略大小写
git config core.ignorecase false
感谢好朋友小滔滔无私的付出,文章大部分是引用自他:他的Github
想开通blog已久,无奈懒癌缠身,正值周一疲劳之际,得空产出这么一个东东,我一直有诗人一样的情怀,常不禁遐想自己漫步于两岸花丛绿地间,观虫草走兽,听山谷青翠空灵,然事与愿违,这一切都活在我的梦里。
好了,正文开始:
这是我个人的第一篇blog,相信应该,可能也不会是最后一篇(^__^),我打算将生活中的有趣的事,以及学习中比较深刻的见解在这里记录下来。
首先,得给自己立一个小目标:
|
|
React Native混合开发
|
|
组件化探索
可以看到,要成为一名合格的程序员,还有很长的路要走,况且身为一名Android开发,更是感觉前路遍布荆棘(ps:如果你认为Android很简单,那么证明你还没入门)
梦想是要有的,万一实现了呢,但是理想也要与现实着地,所以你能看到我列出的目录中,都是时下非常热门的技术和方向,人最不可避免的就是自己的惰性,高中时期在那种大环境下才能做到勉强自律,更不用提毕业工作后面对生活的压力,及其它因素的诱惑。问题既然摆在那,很少有人能有勇气和恒心去解决问题,因为这不是短期投资,你很难在一天或者是一周后看到回报,温水煮青蛙就是这个理,我们务必时时鞭策自己,告诉自己在前面等待自己的是多么美好的未来,对自己痛苦,就是成全自己。
如果你解决一个问题,你就领先很多人,解决越多问题,你的生活也就会过得更滋润。所以我一直标榜自己是一个“解决问题的人”,但这同时让我失去了创造性。有得有失这不可避免,但是我们要尽量做到在大趋势下不犯错。
总结
一不小心立了很多大方向,本人工作还算比较忙,所以可能进度比较慢,但是,你想的没错,我就是喜欢暴饮暴食,一口吃成一个胖子的何许人hahaa…,不过凡事都要有重点,先后之分,所以近期我会在这个大方向内出一篇文章,至于具体讲什么,还请下回分解。
下面是博客相关的资料
Hexo官方网站:
Hexo中文文档:
https://hexo.io/zh-cn/docs/index.html
博客搭建过程
https://linghucong.js.org/2016/04/15/2016-04-15-hexo-github-pages-blog/
新增文章:
在source/目录下建立 xx.md 然后 hexo generate –deploy 即可自动生成及其上传GitHub
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true