Android中JNI使用方法 JNI,即Java Native Interface参考JNI规范Android Studio集成了NDK开发工具用于JNI开发,环境配置参考NDK配置及基本语法Java类中定义本地方法public native String stringFromJNI();生成.h头文件进入java源码根目录,如MyNative\app\src\main\java对.java文件使用jav...
NDK配置及基本语法 NDK是Google为Android实现JNI调用而提供的工具原生库的构建方法包括旧版的ndk-build,及新版的CMake参考Google文档NDK guidesndk-build构建方法构建脚本:Android.mk语法与AOSP的Android.mk文件类似,其内定义若干个模块LOCAL_PATH := $(call my-dir) #文件所在目录include ...
基于LNMP搭建Wordpress ubuntu-16.04.3-server-amd64LNMP环境搭建基于Ubuntu搭建LNMP环境下载并解压Wordpress至网站目录wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gztar zxvf wordpress-4.9.4-zh_CN.tar.gzmv wordpress /var/www/w...
基于Ubuntu搭建LNMP环境 ubuntu-16.04.3-server-amd64LNMP,即Linux, Nginx, Mysql, PHP安装Nginxsudo apt install nginx安装完后检查配置文件sudo nginx -t可见配置文件路径/etc/nginx/nginx.conf,此配置文件中包含具体站点配置所在:include /etc/nginx/sites-e...
VMware中Ubuntu桥接模式静态IP设置 ubuntu-16.04.3-server-amd64VMware虚拟机Ubuntu桥接联网方式,遇到无法获取ip地址的现象。故采用静态IP方式。打开网络设置文件sudo vim /etc/network/interfaces将dhcp动态分配IP方式修改为静态IP:#auto ens33#iface ens33 inet dhcpauto ens3...
Frida对Android app的JS脚本注入方法 Frida可以将JS脚本注入Android app进程,从而实现动态更改app行为。PC端环境配置Python + JavaScript 安装frida(Python bindings)和frida-tools(命令行工具)pip install fridapip install frida-tools手机端环境配置下载对应版本的frida-serv...
Xposed框架使用及插件开发 Xposed是一个针对Android Framework的hook框架, 通过/system/bin/app_process修改Zygote的行为, 从而实现hook应用。Xposed框架安装完整的Xposed框架包含三个部分 详见Xposed InstallerXposed FrameworkXposed Module插件开发通过自定义插件hook目标应...
RxJava2常用操作符及相关类 基于RxJava 2.1.12,记录RxJava的常用操作符及相关类。ObservableEmitter目的 ObservableEmitter是对Observer的抽象,用于关联Observable resource。public interface ObservableEmitter<T> extends Emitter<T>用法...
Android测试框架概述 按测试规模从小到大,测试可以分为三个层级:Unit Tests, Integration Tests, UI Tests 按测试运行环境不同,测试可分为两个环境:Local unit tests, Instrumented unit tests测试规模分类Unit TestsRobolectricMockitoInstrumented unit tests...
Android从ActionBar到Toolbar的兼容性事项 从ActionBar到ToolbarAndroid 3.0引入ActionBar (appcompat-v7提供向后兼容) 固定在界面顶部Android 5.0引入Toolbar (appcompat-v7提供向后兼容) 可自由调整位置若采用兼容包的ActionBar/Toolbar向后兼容,应注意使用AppCompatActivity和对应的属性命名空间命名空间区分a...
设计模式汇总 创建型模式:单例模式,原型模式,工厂模式,建造者模式结构型模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,享元模式,代理模式行为型模式:职责链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式...
行为模式之访问者模式 访问者(Visitor)模式将某对象结构中各元素的操作从对象结构中分离出来。从而可以通过改变访问者,而实现作用于该对象结构的新操作。访问者模式包含四部分:VisitorConcreteVisitorElementConcreteElementVisitorpublic interface Visitor { void visitElementA...
行为模式之模板方法模式 模板方法(Template Method)普遍存在于抽象类中,它用一些抽象的方法定义一个算法,而将这些抽象方法的具体实现放到子类中。模板方法包含两部分:AbstractClass 实现一个模板方法,从而定义一个算法的骨架ConcreteClass 实现模板方法中抽象的原语操作AbstractClassabstract class AbstractClass...
行为模式之策略模式 策略(Strategy)模式将不同的算法策略封装为不同对象,从客户端程序中分离出来而独立变化。策略模式包含三部分:Strategy 定义所有算法的公共接口ConcreteStrategy 某种具体算法的实现Context 客户端程序,持有一个ConcreteStrategy实例Strategyinterface Strategy { void o...
行为模式之状态模式 状态(State)模式根据对象所处状态的不同而改变对象的行为。状态模式包含三部分:Context 提供客户需求的接口,持有ConcreteState对象以定义当前状态State 为不同状态的子类声明公共接口ConcreteState 每个子类实现一个与Context状态相对应的行为Stateabstract class State { abs...
行为模式之观察者模式 观察者(Observer)用于对象间一对多的状态依赖型交互,也称为发布-订阅(publish-subscribe)模式。观察者模式包含四部分:Subject 被观察的目标,提供注册和删除观察者的接口Observer 观察者,定义目标改变时所需响应的更新接口ConcreteSubject 具体目标ConcreteObserver 具体观察者Subject...
行为模式之备忘录模式 备忘录(Memento)获取并保存一个对象(原发器)的内部状态,并在需要的时候将该对象恢复到之前保存的状态。备忘录模式包含三部分:Memento 备忘录,存储Originator的内部状态Originator 原发器,创建备忘录以记录当前状态,及使用备忘录恢复状态Caretaker 负责人,负责保存备忘录Mementoclass Memento { ...
行为模式之中介者模式 中介者模式(Mediator)使各同事类通过中介者进行交互,而不需要各同事类显式地互相引用。中介者包含三部分:Mediator 中介者,定义与各同事通信的接口ConcreteMediator 协调并维护各同事类Colleague 同事类,与中介者对象通信Mediatorabstract class Mediator { protected Col...
行为模式之迭代器模式 迭代器模式(Iterator)提供了顺序访问一个聚合对象中各个元素的方法。 当遍历算法由聚合本身定义,而迭代器仅用于存储当且位置时,这种迭代器可称之为游标(Cursor)。迭代器模式包含四部分:Iterator 定义遍历元素的接口ConcreteIterator 迭代器的具体实现,跟踪当前位置Aggregate 聚合,定义迭代器的创建接口ConcreteAggre...
行为模式之解释器模式 解释器模式(Interpreter)为某一特定语言定义文法,并为该语言的特定上下文提供解释。解释器模式包含五部分:AbstractExpression 声明一个抽象的解释操作TerminalExpression 终结符表达式,实现终结符的解释操作NonterminalExpression 非终结符表达式,实现非终结符的解释操作Context 解释器之外的全局信息Cli...