
Android_NDK
ndk开发实践记录
木寸~
结庐在人境,而无车马喧。
展开
-
Android_NDK JNI实现Android Parcel(D9)
Android_NDK JNI实现Android ParcelParcel 原理通过C结构体存储对象,返回结构体首地址(long类型)java层获取long之后申请从native层按照顺序写入数据把long值传递给另外的地方通过long值拿到native层的对象通过顺序读取顺序Parcel 思路实现// 结构体和对象 Parcel.cppclass Parcel{ char* mData;// char 1 共享内存的首地址 int mDataPos = 0; // =原创 2022-04-13 00:30:38 · 660 阅读 · 1 评论 -
Android_NDK JNI Native层构建java对象(D8)
Android_NDK JNI Native层构建java对象常量指针和指针常量//常量指针 100也就是常量不能改变int num1 = 100;const int *p = &num1;//指针常量 p1指向的&num2也就是地址不能改变int num2 = 200;int * const p1 = &num2;Native层构建java对象JNIEXPORT jobject JNICALL Java_com_sweet_lib_1network_1sig原创 2022-04-10 22:53:07 · 2412 阅读 · 0 评论 -
Android_NDK JNI实现原理和简单实现(D7)
Android_NDK JNI实现原理和简单实现JNI开发一般流程定义本地native方法生成.h头文件添加.h的工程目录依赖添加实现头文件中的native方法load动态库定义java native方法kotlinexternal fun signatureParams(params: String): Stringinit { System.loadLibrary("lib_network_sign") }System.load 加载一个具体路径原创 2022-04-10 00:43:59 · 314 阅读 · 0 评论 -
Android_NDK C文件操作(D6)
Android_NDK C文件操作读取文本文件void main(){ //打开文件 (文件名,模式[r,w,,rb,wb(二进制读写)]) char * filename = "C:\\a.text"; FILE * file = fopen(filename,"r"); if(file){ char buffer[10]; while(fgets(buffer,10,file)){ printf("%s",bu原创 2022-04-07 23:44:41 · 1862 阅读 · 0 评论 -
Android_NDK C结构体和枚举(D5)
Android_NDK C结构体和枚举结构体定义和使用struct Worker{ char name[10]; int age; double salary;};//不初始化,有默认值struct Worker1{ char name[10]; int age; double salary;}jack = {"jack",18,200},darry;struct Name{ char fisrtName[10]; char原创 2022-04-06 23:25:53 · 1873 阅读 · 0 评论 -
Android_NDK C字符串基本操作(D4)
Android_NDK C字符串基本操作字符串长度void main(){ char arr[] = {'a','a','a','a','a','\0'}; printf("%s",arr);}字符串结尾是\0,也就是字符串长度数据要比数组长度少1。void main(){ char *str = "aaaaaa"; printf("%s",str);}和上面的区别就是下面的不能修改。void main(){ char *str = "aaaaaa原创 2022-04-04 23:38:14 · 1081 阅读 · 0 评论 -
Android_NDK C内存开辟(D3)
Android_NDK C内存开辟内存开辟栈:占用内存空间大约2M,静态内存开辟,方法结束自动回收,栈虚拟机(jvm也是栈虚拟机,安卓虚拟机是寄存器虚拟机)堆:占用内存空间最大值的80%,动态内存开辟,必须手动回收内存void main(){ int arr[5];//静态开辟 //动态开辟 int* arr = (int*)malloc(10*1024*1024*sizeof(int)) //动态释放 free(arr) //arr[i] = *(原创 2022-04-03 23:56:14 · 458 阅读 · 0 评论 -
Android_NDK C指针运算和函数指针(D2)
Android_NDK C指针运算和函数指针二级指针和多级指针对地址再取地址int a = 12;int* p = &a;int** dp = &p;int* op = *dp;int* op2 = dp[0] ;dp的值是p的地址,p的值是a的值。如果想知道dp的地址,就需要3级指针指向dp的地址即可。如果想要最终的值,就用多级n个*进行取值即可。最后两个op的写法其实是一样的。看别人代码的时候可以灵活思维。数组和数组指针int arr[] = {1,2,3,4}原创 2022-04-02 23:54:11 · 643 阅读 · 0 评论 -
Android_NDK C基本类型和指针(D1)
Android_NDK C基本类型和指针推荐一个C++ VSCODE环境配置的博文 VSCODE C++环境配置基本数据类型short int long double float char变量地址&a : 取变量a的地址sizeof() : 获取数据类型占内存字节数*(&a) : 获取地址a对应的值int * : 代表int类型的指针(别的类推)*p : 可以通过指针取值再修改值通过指针相当于java传递引用写个方法对两个值进行交换指针修改开辟新空间void ch原创 2022-04-01 23:27:37 · 1781 阅读 · 0 评论