packagecom.bluelesson.a23android;
// 包名,相当于C++中的命令空间
// 相当于导入头文件,现在是导入一个类名(完整类名包含包名)
// (因为java中一个类文件一般存一个类)
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
// 继承自AppCompatActivity类
public class MainActivity extends AppCompatActivity {
// 相当于C++的虚函数
@Override
protected void onCreate(Bundle savedInstanceState) {
// 调用父类的方法
super.onCreate(savedInstanceState);
// 设置当前类依赖的资源文件
// 参数是资源文件
// 和窗口绑定的资源文件叫布局文件
setContentView(R.layout.activity_main);
}
}
.so
,包括C++代码,各种平台:x86、arm 1.Activity:界面,窗口
2.Service:服务,后台处理线程
3.BroadcastReceicer:广播接收者,消息hook
4.ContentProvider:内容提供者,为数据访问封装接口
package com.example.ynag.android00;
public class MyJni {
static {
System.loadLibrary("MyJni");
}
public native static String getString();
}
Make Project
会在build目录下生成.class文件app\src\main
文件夹下新建一个jni文件夹,使用External Tools生成.h文件Name:javah
Description:javah
Program:$JDKPath$\bin\javah.exe
Parameters:-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$
Working directory:$ModuleFileDir$\src\main\Java
- classpath classes指明类所在的位置
- -d 产生的.h文件放到指定目录下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_ynag_android00_MyJni */
#ifndef _Included_com_example_ynag_android00_MyJni
#define _Included_com_example_ynag_android00_MyJni
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_ynag_android00_MyJni
* Method: getString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_example_ynag_android00_MyJni_getString
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
#include "jni.h"
#include "com_example_ynag_android00_MyJni.h"
JNIEXPORT jstring JNICALL Java_com_example_ynag_android00_MyJni_getString
(JNIEnv *env, jclass jz){
return (*env)->NewStringUTF(env,"this is the first time for me to use jni");
}
Android.mk
和Application.mk
文件LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyJni
LOCAL_SRC_FILES := test.c
include $(BUILD_SHARED_LIBRARY)
APP_ABI := all
ndk-build
就会生成相应的so文件(ndk-build需要自行配置)app的build.gredle
中添加如下代码即可:sourceSets{
main {
jni.srcDirs = []
}
}
1.生成.so文件:
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
原文:https://www.cnblogs.com/Get-Me/p/12426573.html