Android JNI编程
16lz
2021-01-23
创建工程:结构如下
代码如下:
这样在工程的bin目录下就生成了.class文件,这时切换到src目录,用javah生成头文件:
根据头文件创建.c文件
创建 Android.mk文件
将.h .c Android.mk文件放入一个文件夹,复制到Android源码 2.2source/external/XXX,然后编译下这个文件夹就会生成so库啦,将so放到工程的libs/armeabi下,再运行试试,可以了吧。
代码如下:
package com.tcl.testjni;public class MyJNI {public native void fun();}
package com.tcl.testjni;import android.R.integer;import android.app.Activity;import android.os.Bundle;import android.text.StaticLayout;public class TestJNIActivity extends Activity {static{System.loadLibrary("kang");} /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyJNI jni = new MyJNI(); jni.fun(); }}
这样在工程的bin目录下就生成了.class文件,这时切换到src目录,用javah生成头文件:
根据头文件创建.c文件
/* DO NOT EDIT THIS FILE - it is machine generated */#include "com_tcl_testjni_MyJNI.h"JNIEXPORT void JNICALL Java_com_tcl_testjni_MyJNI_fun (JNIEnv *, jobject){printf("%s","here is jni");}
创建 Android.mk文件
## Copyright (C) 2008 The Android Open Source Project## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.# LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ com_tcl_testjni_MyJNI.c LOCAL_C_INCLUDES := \ $(JNI_H_INCLUDE) LOCAL_SHARED_LIBRARIES := libutils LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libkang include $(BUILD_SHARED_LIBRARY)
将.h .c Android.mk文件放入一个文件夹,复制到Android源码 2.2source/external/XXX,然后编译下这个文件夹就会生成so库啦,将so放到工程的libs/armeabi下,再运行试试,可以了吧。
更多相关文章
- android WebView载入本地html及css文件
- [Android Pro] proguard.cfg 配置文件
- 记一次新建Android工程报错: Could not download appcompat.aar (
- Android 将文件保存到SD卡中
- 编译NotificationManagerService.java文件的方法
- Android studio gradle 无法获取 pom文件
- Android FTP客户端使用,快速上传文件
- Android学习:导入工程时报错The import android cannot be resolv
- Android N共享文件报错:android.os.FileUriExposedException