使用Hexo在github上搭建blog的操作笔记.
JNI
- 1.JNI简介
- 2.最简单的Java调用C/C++代码的步骤
3.在C/C++本地代码中访问Java代码简介
- 3.1 JNIEnv 类型
- 3.2 jobject
- 3.3 jclass
- 3.4 Java的类型在C/C++中的映射关系
4.在C/C++本地代码中访问Java类中的属性与方法
- 4.1 jfieldID/jmethodID
- 4.2 Sign签名
- 4.3 使用Javap命令来产生Sign签名
- 4.4 取得Java属性/设定Java属性值
- 4.5 Java方法的调用
- 5.在C/C++本地代码中创建Java的对象
- 5.1 NewObject
- 5.2 AllocObject
6.在C/C++本地代码中访问/创建Java的String字符串对象
- 6.1 GetStringChars / GetStringUTFChars / ReleaseStringChars / ReleaseStringUTFChars
- 6.2 GetStringCritical / ReleaseStringCritical
- 6.3 GetStringRegion / GetStringUTFRegion
- 6.4 字符串相关函数
7.在C/C++本地代码中操作Java的数组对象
- 7.1处理基本类型数组
- 7.2处理对象类型数组
8.全局引用/局部引用/弱全局引用
- 8.1局部引用
- 8.2全局引用
- 8.2全局引用
- 8.4关于引用的一些函数
9.JNI优化
Android 中NDK的使用详解第二篇:Hello World
目录:
Hello World
编译多个源文件
支持多CPU架构
使用Ant批量生成头文件
上一编讲到了搭建AndroidNDK开发环境的内容,这篇则进行实战.
在实战之前首先介绍一下NDK与JNI的关系.
JNI (Java Native Interface)
JNI是java语言提供的Java和C/C++相互沟通的机制,
Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码。
JNI 是本地编程接口,Java和C/C++互相通过的接口。
Java通过C/C++使用本地的代码的一个关键性原因在于C/C++代码的高效性。NDK是一系列工具的集合。它提供了一系列的工具,
帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。
这些工具对开发者的帮助是巨大的。它集成了交叉编译器,并提供了相应的mk文件
隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要
编译”、“编译特性要求”等),就可以创建出so。它可以自动地将so和Java应用一起
打包,极大地减轻了开发人员的打包工作。简单概括: 用C语言生成一个库文件,在java中调用这个库文件的函数。
JNI的过程比较复杂,生成.so需要大量操作,而NDK就是简化了这个过程。
Android 中NDK的使用详解第一篇:环境
目录
- 1.下载集成开发环境
- 2.安装配置环境
- 3.常用功能配置
- 3.1自动生成头文件(配置javah)
- 3.2生成Sign签名(配置Javap)
- 3.3配置C/C++库
1. 下载集成开发环境
所需要的开发工具:
Eclipse 下载地址:http://www.eclipse.org/downloads/
选择Eclipse的时候可以选择C/C++版本的,方便后续直接在Eclipse里编写C程序.当然也可以自己对Eclipse安装C/C++插件
JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
ADT 下载地址:http://developer.android.com/sdk/installing/installing-adt.html
Android SDK 下载地址:http://developer.android.com/sdk/index.html
NDK 下载地址:http://developer.android.com/ndk/downloads/index.html
也可以直接下载ADT Bundle 但官方已经找不到下载地址.可网上搜索或者我下面提供的一个地址可找到.
如果没有代理可能很多工具无法下载.这里提供一个Android开发人员工具集给大家
Android安全模式机制之三(实际运用)
目录:
1.移动平台中的主流签名作用
- 1.1自签名的完整性鉴别
- 1.2信任模式
- 1.3限制安装/运行
- 1.4权限的作用
- 1.5权限的安全性保护
- 1.6Android的签名作用
- 1.7Android APK之METAINF
2.Android中的权限
- 2.1Android的权限作用
- 2.2Android的权限类别
- 2.3Android的权限定义方式
- 2.4Android的运行时权限控制方式
- 2.5Android的Permission与UID/GID的mapping
3.Android中的组件的安全机制
- 3.1组件的权限分配(Demo)
- 3.1.1 Activity
- 3.1.2 Service
- 3.1.3 ContentProvide
- 3.1.4 BroadcastReceiver
- 3.1组件的权限分配(Demo)
4.Android应用安装
- 4.1应用安装的安全性考虑和调用方式
- 4.2应用安装流程之UID/GID的分配
- 4.3应用安装流程之工作目录的创建和权限设置
5.Android中系统Service的安全
- 5.1Binder的安全
- 5.2ServiceManager Add Service的安全限制
- 5.3Zygote的Process Fork
- 5.4Zygote的Socket安全检查
6.Android中的ContentProvider以及基于URI的安全
- 6.1ContentProvider的作用
- 6.2权限临时继承的需求
- 6.3配置ContentProvider允许临时委派权限
- 6.4基于URI的权限临时委派
7.Android的Policy模式和多设备绑定
- 7.1Android的Policy模式
- 7.2MR2开始的AppOps(安卓4.3开始)
- 7.3AppOps对开发者的影响
- 7.4设备绑定
- 7.5跨设备使用
8.应用内计费和App2SDCard
- 8.1应用内计费
- 8.2SD卡安装应用的安全策略
9.Android中的多用户安全
- 9.1需求场景
- 9.2UserManagerService
- 9.3对开发者的影响
10.Android Superuser机制讲解
- 10.1ROOT的作用
- 10.2ROOT的第一步:寻找漏洞并安装特权文件
- 10.3SU的sUID的特性
- 10.4SU的核心代码分析
- 10.5MR2后的方案:SU Deamon Service
11.SEAndroid
- 11.1DAC和MAC
- 11.2基于Label的MAC
- 11.3推荐读物
Android安全模式机制之二(操作系统现代安全体系基础概念)
目录:
- 1.进程和进程边界
- 2.多用户和多用户边界
- 3.进程和文件的UID/GID (UserID/groupId)
- 3.1文件资源的权限力度:UID/GID
- 3.2文件的可操作权限
- 3.3进程的标识: PID , UID , GID , GIDs
- 3.4Name和ID的映射
- 3.5Chmod和chown命令介绍
- 3.5.1Chmod
- 3.5.2Chown
- 4.UID/GID的衔接
- 5.进程的RealUID和EffectiveUID
- 6.文件的setUID标识
- 7.Capability
- 7.1进程的Capability
- 7.2文件的Capability
- 7.3Capability BoundSet
- 7.4Spawn进程的Capability
进程和进程边界
进程和线程
可执行文件:不活动就是废物
进程:可执行文件的活动表现,一次生命的历练
线程:CPU(核)的调度单位,并发的执行序列,进程的多管齐下
资源和调度.
进程边界的安全围栏:
Crash的不可扩延性
全局数据和服务的不可访问性
Android安全模式机制之一(现代安全体系基础概念)
Android程序自动化打包
Java8新特性
目录:
- 1.简介
- 2.Java的新特性
- 2.1 Lambda表达式和函数式接口
- 2.2 接口的默认方法和静态方法
- 2.3 方法引用
- 2.4 重复注释
- 2.5 更好的类型推断
- 2.6 注解的扩展
- 3.Java编译器的新特性
- 3.1 参数名字
- 4.Java 库的新特性
- 4.1 Optional
- 4.2 Stream
- 4.3日期时间API(JSR310)
- 4.4 Nashorn javascript引擎
- 4.5 Base64
- 4.6 并行数组
- 4.7 并发
- 新的工具
- 5.1 Nashorn引擎:jjs
- 5.2 类依赖分析工具:jdeps
- 新的工具
- JVM的新特性
- 资源