摘要:
--摘自《android插件化开发指南》 1.一套完整的Android App打包流程(Gradle方案) 第一步:aapt。为res目录下的资源生成R.java文件,同时为AndroidManifest.xml生成Manifest.java文件 第二步:aidl。把项目中自定义的aidl文件生成相
阅读全文
posted @ 2018-12-13 18:48
嘉禾世兴
阅读(1636)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.当要传输的数据量大小不超过1M的时候,使用Binder;数据量超过1M时,Binder就搞不定了,需要ContentProvider 2.ContentProvider就是一个数据库引擎,向外界提供了CRUD的API ContentProvider插件化
阅读全文
posted @ 2018-12-12 16:58
嘉禾世兴
阅读(570)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.静态广播和动态广播仅区别于注册方式的不同。静态广播的注册信息保存在PMS中,动态广播的注册信息保存在AMS中 2.发送广播,也就是Context的sendBroadcast方法,最终会调用AMN.getDefault().broadcastIntent,
阅读全文
posted @ 2018-12-12 15:54
嘉禾世兴
阅读(558)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.ActivityThread最终是通过Instrumentation启动一个Activity的。而ActivityThread启动Service并不借助于Instrumentation,而是直接把Service反射出来就启动了。Instrumentati
阅读全文
posted @ 2018-12-12 12:34
嘉禾世兴
阅读(889)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.宿主App加载插件中的类 2.最简单的插件化方案就是在宿主的androidmanifest.xml中申明插件中的四大组件 把插件dex合并到宿主dex中,那么宿主app对应的classloader就可以加载插件中的任意类 加载插件中的资源 以上方案有2个
阅读全文
posted @ 2018-12-11 20:51
嘉禾世兴
阅读(923)
推荐(0)
摘要:
--摘自《android插件化开发指南》 fork了强哥的github代码到自己的github下 https://github.com/king1039/Dynamic3 将代码跑起来,Plugin1和Plugin2打成apk放到HostApp的assets下 贴下主要代码 简单来说,就是针对不同的
阅读全文
posted @ 2018-12-11 17:00
嘉禾世兴
阅读(407)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.android资源文件分为两类: 第一类是res目录下存放的可编译资源文件,编译时,系统会自动在R.java中生成资源文件的十六进制值 第二类是assets目录下存放的原始资源文件,apk在编译时不会编译assets下的资源文件 2.Resources内
阅读全文
posted @ 2018-12-11 16:37
嘉禾世兴
阅读(539)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.Activity的startActivity和Context的startActivity都是在app进程中通知AMS要启动哪个Activity,都是调用Instrumentation的execStartActivity。 方案一: 一般所有Activit
阅读全文
posted @ 2018-12-10 20:06
嘉禾世兴
阅读(1160)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.设计模式 2.远程代理(AIDL) 3.保护代理(权限控制) 比如:老板的秘书 4.虚代理(图片占位) 比如:微信图片查看,先用模糊的小图占位,然后替换成清晰的大图 5.协作开发 A要用到B中的方法,但是B还没有开发完,那么B就提供一个假的方法,返回假的
阅读全文
posted @ 2018-12-08 18:46
嘉禾世兴
阅读(263)
推荐(0)
摘要:
--摘自《android插件化开发指南》 前面是基本封装,后面是进一步的封装 一。基本封装 No1: 构造函数 No2: 实例方法 No3: 调用静态方法 No4: 设置字段的值 二。进一步封装 其实就是重构了一下 只要掌握了基本的java反射,就能够封装出来 欢迎关注我的微信公众号:安卓圈
阅读全文
posted @ 2018-12-08 16:44
嘉禾世兴
阅读(548)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.jOOR库就一个Reflect.java类很重要 2.Reflect.java包括6个核心方法 1)on:包裹一个类或者对象,表示在这个类或对象上进行反射 2)create:用来调用之前的类的构造方法 3)call:方法调用 4)get:获取(field
阅读全文
posted @ 2018-12-08 16:03
嘉禾世兴
阅读(731)
推荐(0)
摘要:
--摘自《android插件化开发指南》 No1: No2: No3: No4: No5: Class的getDeclaredConstructors方法可以获取所有构造函数,包括public和private的 No6: Class的getConstructors方法只能获得所有的public构造函
阅读全文
posted @ 2018-12-08 15:03
嘉禾世兴
阅读(234)
推荐(0)
摘要:
DexClassLoader可以加载外部的dex,而PathClassLoader只能加载内部的dex 双亲委托 双亲委托的意义是为了性能,每次加载都会消耗时间,但如果父亲加载过,就可以直接拿来使用了 1.混淆会将app中用不到的方法全部删除 2.android 5.0修复了方法数65536的爆棚问
阅读全文
posted @ 2018-12-07 20:35
嘉禾世兴
阅读(262)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.PackageManagerService(PMS)是用来获取apk包的信息的 2.AMS总是会使用PMS加载包的信息,将其封装在LoadedApk这个类对象中,然后从中取出清单文件申请的四大组件信息 3.为什么app安装时,不把它解压呢?因为每次从ap
阅读全文
posted @ 2018-12-07 20:12
嘉禾世兴
阅读(788)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.系统管理类app,比如手机助手,有机会频繁使用ContentProvider 2.通讯录或者短信数据,是以ContentProvider的形式提供的 3.ContentProvider的本质是把数据存储在SQLit数据库中 4.ContentProvid
阅读全文
posted @ 2018-12-07 19:48
嘉禾世兴
阅读(2462)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.动态注册过程是注册Receiver并通知AMS,发送内容包括IntentFilter、一个实现了IIntentReceiver接口的Binder对象、activity所在的进程。 2.AMS收到消息后,会把所有Receiver保存在一个列表中 3.静态R
阅读全文
posted @ 2018-12-07 17:31
嘉禾世兴
阅读(1537)
推荐(0)
摘要:
--摘自《android插件化开发指南》 一.在新进程启动Service 第一步:APP向AMS发送一个启动Service的消息 通过AMN/AMP把要启动的Service信息发送给AMS 第二步:AMS创建新的进程 这一步,AMS会检查Service是否在AndroidManifest中申明。AM
阅读全文
posted @ 2018-12-07 16:31
嘉禾世兴
阅读(585)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.ContextWrapper只是一个包装类,没有任何具体的实现,真正的逻辑都在ContextImpl里面 2.应用程序中包含多个ContextImpl对象,而其内部变量mPackageInfo指向同一个PackageInfo对象 3.Context的st
阅读全文
posted @ 2018-12-07 15:35
嘉禾世兴
阅读(186)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.AMS管理着四大组件 2.为什么Hook不能在AMS那边?因为AMS属于android系统,android系统可以被Hook,那就是病毒了。四大组件被Hook,只会影响某一个app 3.手机屏幕就是一个Activity,所在的app被称为Launcher
阅读全文
posted @ 2018-12-07 12:46
嘉禾世兴
阅读(289)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.自定义一个aidl文件后,android会帮助生成一个java文件,其中包括一个接口IInterface,两个类Stub和Proxy。为什么不分开3个文件,是因为当有多个AIDL时,Stub和Proxy就有可能重名 2.Stub的asInterface判
阅读全文
posted @ 2018-12-06 20:19
嘉禾世兴
阅读(264)
推荐(0)
摘要:
--摘自《android插件化开发指南》 1.Binder分为Client和Server两个进程: client和server是相对的。谁发消息,谁就是client;谁接收消息,谁就是server。 2.ServiceManager复责把Binder Server注册到一个容器中 3.Binder的
阅读全文
posted @ 2018-12-06 19:42
嘉禾世兴
阅读(303)
推荐(0)
摘要:
No1: No2: No3: No4: ajax No5: handler No6: proxy No7: http No8: cookie No9: 抓取内涵段子 No10: 抓取百度贴吧美女图 No11: 抓取百度图片 No12: 知乎登录 No13: json解析 No14: xml解析 No
阅读全文
posted @ 2018-12-05 19:32
嘉禾世兴
阅读(489)
推荐(0)
摘要:
No1: 引入MySql:python2是Mysqldb,python3是pymysql No2: Connection对象 用于建立与数据库的连接 创建对象:调用connect()方法 参数host:连接的mysql主机,如果本机是'localhost' 参数port:连接的mysql主机的端口,
阅读全文
posted @ 2018-11-23 16:47
嘉禾世兴
阅读(187)
推荐(0)
摘要:
No1: 聚合 聚合(aggregate)主要用于计算数据,类似sql中的sum()、avg() No2: 管道 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入 在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一次处理 常用管道 $group:将集
阅读全文
posted @ 2018-11-22 20:11
嘉禾世兴
阅读(234)
推荐(0)
摘要:
首先吐槽一下,MongDB用到了JS的引擎,只要涉及到了JS,语法就变得又臭又长,真是无语 还有,MongDB的安装真是麻烦,我用的是win10环境,怎么装都报服务错误,redis一装就可以用,希望mongdb可以改进 简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言
阅读全文
posted @ 2018-11-22 10:52
嘉禾世兴
阅读(296)
推荐(0)
摘要:
No1: MongoDB是文档存储,一般以json的格式存储。 Redis是key-value存储。 No2: Redis键的类型永远是字符串,值可以是字符串、哈希hash、列表list、集合set、有序集合zset,数据操作命令可以查redis中文网站 No3: redis官网是不支持win系统的
阅读全文
posted @ 2018-11-20 18:59
嘉禾世兴
阅读(205)
推荐(0)
摘要:
效果图 main.py Base.py BasePlane.py BaseBullet.py HeroPlane.py EnemyPlane.py HeroBullet.py EnemyBullet.py KeyControl.py 最后在Main.py里运行即可 注意点: 1.py文件名和里面的类
阅读全文
posted @ 2018-11-17 18:36
嘉禾世兴
阅读(564)
推荐(0)
摘要:
No1: 单行注释:# 多行注释:前后加'''或者前后加""" No2: 开头增加#coding=utf-8解决中文无法解析的问题 或者#-*- coding:utf-8 -*- No3: 打印数字 打印字符 No4: 5//2等于2 取商 5/2等于2.5 正常除法 2**3等于8 2的三次方 "
阅读全文
posted @ 2018-11-16 16:54
嘉禾世兴
阅读(252)
推荐(0)
摘要:
【linux命令】 ls 列出当前目录下的文件 pwd 当前路径 cd 改变当前路径 touch 创建文件 mkdir 创建文件夹 clear 清空命令窗口 ls -a 显示当前目录下所有文件(包括隐藏文件) ls -l 列表形式显示当前目录下所有文件 ls -h 文件计算大小样式显示 ls -al
阅读全文
posted @ 2018-08-26 22:34
嘉禾世兴
阅读(247)
推荐(0)
摘要:
学新技能最方便的就是在网上找教程了,我找到一个还不错的易百教程 Jenkins教程 别看教程写了一堆,其实真正用到的没多少。后面的自动化测试,服务器维护啥的,等用到的时候再深入研究吧 No1: 按照教程把Jenkins下载下来就行了,解压安装啥的我就不说了 Jenkins有自己的容器,如果想用Tom
阅读全文
posted @ 2018-07-27 10:41
嘉禾世兴
阅读(853)
推荐(0)
摘要:
例: No1: 【every/some】 当集合的所有元素都满足条件时,_.every()函数返回true,当集合的至少一个元素满足条件时,_.some()函数返回true: No2: 【max/min】 No3: 【groupBy】 groupBy()把集合的元素按照key归类,key由传入的函数
阅读全文
posted @ 2018-07-23 16:14
嘉禾世兴
阅读(169)
推荐(0)
摘要:
No1: jQuery能帮我们干这些事情: 消除浏览器差异:你不需要自己写冗长的代码来针对不同的浏览器来绑定事件,编写AJAX等代码; 简洁的操作DOM的方法:写$('#test')肯定比document.getElementById('test')来得简洁; 轻松实现动画、修改CSS等各种操作。
阅读全文
posted @ 2018-07-19 19:37
嘉禾世兴
阅读(223)
推荐(0)
摘要:
No1: 【window】全局作用域,而且表示浏览器窗口 innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高 outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高 No
阅读全文
posted @ 2018-07-18 18:06
嘉禾世兴
阅读(382)
推荐(0)
摘要:
No1: typeof操作符获取对象的类型 null的类型是object,Array的类型也是object,如果我们用typeof将无法区分出null、Array和通常意义上的object——{}。 No2: 【包装对象】 包装对象用new创建 虽然包装对象看上去和原来的值一模一样,显示出来也是一模
阅读全文
posted @ 2018-07-14 15:36
嘉禾世兴
阅读(122)
推荐(0)
摘要:
No1: 定义函数 由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数: 传入的参数比定义的少也没有问题: No2: 【arguments】 它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数 运行结果 【res
阅读全文
posted @ 2018-07-12 19:43
嘉禾世兴
阅读(139)
推荐(0)
摘要:
摘抄地址快速入门 No1: JavaScript严格区分大小写 No2: JavaScript不区分整数和浮点数,统一用Number表示 NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就
阅读全文
posted @ 2018-07-11 12:09
嘉禾世兴
阅读(180)
推荐(0)
摘要:
No1: 协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 优势: 1.最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 2.不
阅读全文
posted @ 2018-07-07 22:48
嘉禾世兴
阅读(188)
推荐(0)
摘要:
No1: hello.py server.py 执行server.py后打开浏览器 无论多么复杂的Web应用程序,入口都是一个WSGI处理函数。HTTP请求的所有输入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。 No2:
阅读全文
posted @ 2018-07-07 19:36
嘉禾世兴
阅读(235)
推荐(0)
摘要:
No1: 【SQLite】 插入 查询 No2: 【MySQL】 安装mysql驱动 如果上面的命令安装失败,可以试试另一个驱动: No3: 【SQLAlchemy】ORM框架 安装 并初始化DBSession: 添加对象 查询
阅读全文
posted @ 2018-07-06 22:11
嘉禾世兴
阅读(242)
推荐(0)
摘要:
No1: 【TCP】 客户端 运行结果得到一个sina.html文件,双击打开是新浪主页 服务端接受客户端 No2: 【UDP】 服务端接受客户端 运行结果 No3: 【SMTP发送邮件】 构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一
阅读全文
posted @ 2018-07-05 22:32
嘉禾世兴
阅读(1516)
推荐(0)