package com.devilwwj.jnidemo;
/**
- Created by wwj_748 on 2016/4/27.15.47
*/
public class TestJNI {
public native boolean Init();
public native int Add(int x, int y);
public native void destory();
}
使用javah命令生成.h文件
===============
执行完上面的命令之后,就生成了com_devilwwj_jnidemo_TestJNI.h这个文件:
ok,这样我们就可以进行下一步操作了。
创建jni目录,创建.cpp文件
================
然后根据.h文件,创建相对应的.cpp文件
com_devilwwj_jnidemo_TestJNI.cpp
//
// Created by wwj_748 on 2016/4/27.
//
#include <stdio.h>
#include <stdlib.h>
#include “com_devilwwj_jnidemo_TestJNI.h”
#include “Add.h”
CAdd *pCAdd = NULL;
JNIEXPORT jboolean JNICALL Java_com_devilwwj_jnidemo_TestJNI_Init(JNIEnv *env, jobject obj) {
if (pCAdd == NULL) {
pCAdd = new CAdd;
}
return pCAdd != NULL;
}
JNIEXPORT jint JNICALL Java_com_devilwwj_jnidemo_TestJNI_Add
(JNIEnv *env, jobject obj, jint x, jint y) {
int res = -1;
if (pCAdd != NULL) {
res = pCAdd->Add(x, y);
}
return res;
}
JNIEXPORT void JNICALL Java_com_devilwwj_jnidemo_TestJNI_destory
(JNIEnv *env, jobject obj) {
if (pCAdd != NULL) {
pCAdd = NULL;
}
}
这里我还需要创建两个文件,CAdd.h和CAdd.cpp:
ok,到目前我们已经完成JNI层的实现了。
创建Android.mk和Application.mk文件
=============================
在jni目录下,我们需要创建两个mk文件
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JNIDemo
LOCAL_SRC_FILES := com_devilwwj_jnidemo_TestJNI.cpp
LOCAL_SRC_FILES += Add.cpp
include $(BUILD_SHARED_LIBRARY)
其中LOCAL_PATH是C/C++代码所在目录,也就是我们的jni目录。
LOCAL_MODULE是要编译的库的名称。编译器会自动在前面加上lib,在后面加上.so。
LOCAL_SRC_FILES是要编译的C/C++文件。
Application.mk
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
要如何成为Android架构师?
搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;
对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,在这里点击GitHub免费分享,希望能帮你突破瓶颈,跳槽进大厂;
最后我必须强调几点:
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境