AndroidX
AndroidX的前世今生Android技术迭代更新很快,各种新出的技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么我来探一探AndroidX的前世今生。
Android系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功,因此也不可能在一开始的时候就将它的API考虑的非常周全。随着Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此这就出现了一个向下兼容的问题。
举个例子,当Android系统发布到3.0版本的时候,突然意识到了平板电脑的重要性,因此为了让Android可以更好地兼容平板,Android团队在3.0系统(API 11)中加入了Fragment功能。但是Fragment的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是Android团队推出了一个鼎鼎大名的Android Support Library,用于提供向下兼容的功能。比如我们每个人都熟知的support-v4库,appc ...
Android研究Fragment
前言Fragment,简称碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。
过去support-v4库是一个jar包,24.2.0版本开始,将support-v4库模块化为多个jar包,包含:support-fragment, support-ui, support-media-compat等,这么做是为了减少APK包大小,你需要用哪个模块就引入哪个模块。
如果想引入整个support-v4库,则compile ‘com.android.support:support-v4:24.2.1’,如果只想引入support-fragment库,则com.android.support:support-fragment:24.2.1。
因为support库是不断更新的,因此建议使用support库中的android.support.v4.app.Fragment,而不要用系统自带的android.app.Fragment。而如果要使用support库的Fragment,Acti ...
Android原生开发现状分析
前言许多 Android 开发者经常会问我,要学会哪些东西才能成为一个优秀的 Android 工程师?对于这个问题,他们的描述或多或少都有些差异。但是,总体来说,我们都需要学习一系列的技能,才能成为一个优秀的 Android 工程师。
正文
当你好不容易学会了某个框架或者工具,觉得它很好用的时候,它或许就要过时了。
Android 原生开发的生态系统变化得非常快。至少在过去的五年时间里,我经历过很多 Android 的变化,并且花费大量的时间参与其中。这几年里,Google 每两到三年,就会推出一组新的库和框架作为官方 Android 原生开发的指导方针。我花了大量的时间,回顾了这几年的变化,希望从中找出好坏。我相信,有很多的 Android 开发者,也和我一样。
过去的一年,大量的内容被添加、被废弃或被删除,文档被更改,新的官方指导方针被引入等等。即使我以 Android 原生开发生态系统的的标准来看待这些问题,所发生的这些事情,都是非常疯狂的。当我开始思考这些内容的时候,我已经无法在我的脑海中描绘出一个完整的、详细的 Android 开发环境。
因此,我决定要花一些时间去整理这 ...
Android之Room库的使用
前言最近疫情待在家里,想着没事就做一个APP练练手,需要用到数据库的本地化方案,便尝试深入了解以下 Google官方的ORM库 Room,配置和使用还算比较简单,没用过的可以查看 官方文档,上手还算比较容易。可以参考Google官方在GitHub上的示例库 [Android Room with a View] ,一步一步非常清晰的展现了框架的架构与流程。
正文问题归纳
新入手的库当然会遇到坑的啦!
模糊查询的Sql语句拼写问题本来一切增删改查都进行的很顺利,然后 APP 中有一个模糊搜索的功能。例如查找 person 表中 name 或者 name_pinyin 包含某字符串的所有用户,一般sql语句是这样
1Select * From person Where Name Like %name% OR Name_Pinyin Like %name_pinyin%
在Android端里面一般用的数据库都是注解 @query ,后面拼上需要查询的语句,当然每个数据库框架要求的格式可能不一样,但是最终编译成的最终语句肯定是上面那种格式的。
终于,皇天不负有心人,最终经一个群里大佬提醒 ...
Android之JetPack库
前言最近好几个小伙伴问我什么是Android JetPack,听说这个包好像有点牛,你会不?
我心想什么鬼!Android JetPack这货不是一个库,是一整套的库,是一种信仰一种态度好么。从前,Android开发者基本都是被放养的。生态基本全靠自建,代表有Square全家桶,Glide,Google自己也肯定是出力的,但是并没有明确Android开发的几个大方向,所以安卓的开发生态一直是百花齐放百家争鸣。带来的问题就是经常出现包引用莫名报错。
事情从2017年发生了转机,在Google IO 2017,官方终于正视了这个问题开始尝试管理这个混乱的Android开发环境,并推出了Architecture Component,主要有以下几项:
Room: 官方的ORM库(个人认为比GreenDao好用)ViewModel/LiveData:生命周期管理工具,自此Android才真正的应用上了MVVM(BTW,DataBinding也归到了JetPack里)
在2018年,AndroidX横空出世,并且从1开始,意图取代经常自己打自己脸的Support Lib。
一张图来看看Google ...
Shadowsocks对检测和封锁的探究
前言在中国,Shadowsocks 是最流行的翻墙软件之一。从2019年5月起,大量的中国网民反馈他们的Shadowsocks服务器被封锁了。这篇报告是我们对中国的防火长城(GFW)是如何检测和封锁 Shadowsocks 及其衍生翻墙软件的初步调查结果。通过网络测量实验,我们发现GFW会被动的监视网络流量从而识别出疑似Shadowsocks的网络流量;然后对对应的Shadowsocks服务器进行主动探测已验证其怀疑的正确与否。Shadowsocks的封锁程度可能受人为因素在政治敏感时期的控制。我们提出一种规避方法,即改变网络数据包在Shadowsocks握手阶段的大小。这种方法被证明可以在现阶段有效减少主动探测。我们会继续与开发者合作让Shadowsocks及其衍生工具变得更加难以封锁。
正文主要发现
防火长城(GFW)已经启用主动探测的手段来识别Shadowsocks服务器。GFW采用被动监测与主动探测相结合的方式:其首先监测网络连接找出疑似Shadowsocks的连接,然后再把自己伪装成一个客户端,尝试对疑似Shadowsocks的服务器进行连接,从而验证自己的猜测。我们 ...
Unity合理导入模型
前言相信在游戏中,模型相当于游戏必要的元素,例如游戏的一个人物角色,我们可以称它为一个模型,今天学习一下导入 Unity 3d 模型,我们应该注意哪些细节!当然我们知道常用的模型都可以通过 Maya/3D Max 等三维动画软件制作的。
正文官方学习文档:https://docs.unity3d.com/Manual/FBXImporter-Model.html
模型自身规范: 1.0 所有的模型在原点创建,没有具体的特定要求下,需要以物体对象中心为轴心; 1.1 模型面数:移动端( 300-1500 个多边形达到比较好的效果) PC端( 1500-4000 比较适宜)正常的单个物体最好控制在 1000 面以下,所有的物体面数不超过20000 个三角面; 1.2 模型大小:模型文件做到最大的优化,对于看不到的面,我们可以采用直接删除,合并断开的点,移除孤立的点; 1.3 模型命名:命名最好做到规范化,模型在给绑定之前必须做一次重置变换; 1.4 模型复制:如果物体可以复制的话,就尽量复制;例如一个 500 面的物体,烘培好之后复制出去 50 个,那么他所消 ...
PT站
前言PT(Private Tracker)是一种改良自 BitTorrent 协定的 P2P 下载方式,“Private Tracker”指私有种子服务器。与 BT 最大的不同点分别为可进行私密范围下载,及可统计每个用户的上载及下载量。
PT站的架构NexusPHP简介根据其代码中的介绍(aboutnexus.php 页面)来看:
NexusPHP由来自浙江大学的Nexus团队发起并开发完成。主要是提供一个完整的、有序的、重视用户信誉和知识的资源分享社区的解决方案,是一个PT(Private Tracker,即私有的Tracker服务器,是BT下载的一种)开源软件。
(当然也有人和我说,这是某浙大生毕业设计作品Orz)
虽然一遍一遍的在群里鄙视着NexusPHP的垃圾代码,但不得不承认就目前来看国内PT圈依然在大量使用NP(这里应该不用做详细数据统计了吧2333)。
而其他一些尝试,诸如:
Gazelle:国外著名PT架构,然而部署安装略麻烦,且纯英文界面。国内曾有人尝试翻译并建站,然而该主比我还不靠谱,以致于在17年度被人提及是开站狂魔2333。此外就目前看TVPlay这 ...
使用NexusPhp打造个性化的PT站
前言国内使用 NexusPhp 建立的PT站越来越多,风格大都雷同(正如yofeng同学所说的审美疲劳……),如何把 NexusPhp 快速配置成你喜欢的界面、风格,本人在这里抛砖引玉,希望大家在这里开放的讨论、共享使用 NexusPhp 建站心得,OK,Let’s doing…
正文为用户等级追加标识方法:以简体中文为例,打开 nexusphp.v1.5.beta4.2010XXXX\lang\chs\lang_functions.php 修改 257-266 行下列设置(如果要其他语种也需要,则每种语言包都要配置):
修改前:
12345678910'text_peasant' => "Peasant",'text_user' => "User",'text_power_user' => "Power User",'text_elite_user' => "Elite User",'te ...
电脑设备
b47a4b8dc21df37f03ed956d27ce0a4c2a4ed48a1292225a00d09a3975bc3b1fbeb065913eac384c2b2dcb31d2c7690a856d644366130e912cab0261be58cf5f98cd306703d9c699e44b53846431c52f35f9281f1fbd3e692445650dff8080c99759f289be3b5bd88647280750950e7011451bca8b1ab826b1fbe8c8cff019ee875aea4388b25db192b32d043a7294565c4200b24320a075c4413691682232d1d66e057a6b70e51b000f5db58d84aabde7e2a45a4f8a52cecdf416f57dd3243ba6fa766b1a45cd5c76d5b20abf3ab5aae7126b5bef65a443ee360ce70c2bb2c0d099368cd5f1c894d8d7f2ee9654e9e68349675eeff61595a ...