android开发之NDK配置开发

1、打开项目后,一次点击Tools>SDK Manager
2、点击SDK Tools标签页
3、选中NDK(Side by Side)和CMake复选框
在这里插入图片描述
4、点击OK
此时系统会显示一个对话框,告诉你NDK软件包占用了多少磁盘空间
5、点击OK
6、安装完成后,点击finish
7、您的项目会同步build文件并执行构建,修改构建过程中所有的错误
如果您想要使用SDK管理器未包含的CMake版本,请按以下步骤操作:
1、从CMake官方网站下载并安装CMake
2、在模块的build.gradle文件中指定您想要让gradle使用的CMake版本
3、将CMake的安装路径添加到PATH环境变量,或将其添加到项目的local.properties文件中,如下所示。如果Gradle找不到您在build.gradle文件中指定的CMake版本,就会出现构建错误。

If you set this property, Gradle no longer uses PATH to find CMake.
cmake.dir = “path-to-cmake”

4.可以不安装,如果您尚未在工作站上安装Ninja构建系统,请访问Ninja官网 ,然后下载并安装适用于您的操作系统最新版Ninja。此外,请务必将Ninja的安装路径也添加到PATH环境变量。
5、在local.properties的文件添加NDK的路径和SDK的路径

sdk.dir=C:\Users\admin\AppData\Local\Android\Sdk
ndk.dir=C:\Users\admin\AppData\Local\Android\Sdk\ndk

6、在Project Structure配置SDK和NDK的路径
在这里插入图片描述
7、配置gradle.properties文件,输入图中红色框内的内容
在这里插入图片描述
8、在build.gradle文件中ndk的模块
在这里插入图片描述
9、指定android编译中c代码不用gradler编译,jniLib的库的加载目录
在这里插入图片描述
10、目录的结构如图
10
Application.mk和Android.mk

//Application.mk
APP_STL := c++_static
APP_CPPFLAGS := -frtti -fexceptions -std=c++0x
APP_ABI := arm64-v8a
APP_PLATFORM := android-19

//Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := playMusic
LOCAL_SRC_FILES := playMusic.so
include $(PREBUILT_SHARED_LIBRARY)
//上面的部分是指引用第三方so的配置
include $(CLEAR_VARS)
LOCAL_MODULE := tinyplayJni
LOCAL_SRC_FILES := com_aac_richtap_PlayMusic.cpp
LOCAL_LDLIBS += -llog
LOCAL_SHARED_LIBRARIES := playMusic
LOCAL_EXPORT_C_INCLUDES := src/main/jni
include $(BUILD_SHARED_LIBRARY)

11、以上配置完成后
在Terminal终端输入ndk-build 出现下图所示就表示成功了
在这里插入图片描述
12、最后一步就是使用System.loadLibrary将so加载到java代码

public class PlayMusic {

    public static native void setDeviceAndCard(int card,int device);

    public static native void playMusicByName(String name);

    static {
        System.loadLibrary("tinyplayJni");
    }
}
//在需要的activity中调用
 PlayMusic music = new PlayMusic();

        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                music.setDeviceAndCard(3,0);
                Log.d("Main", "onClick: ");
            }
        });

最后留言:为了直接将java文件编译成jni的头文件可以在配置以上的环境之后使用
输入命令javah -jni com.example.mr5.jnidemo.JniUtil --------包名+类名

如果报找不到该类的错误,用javah -classpath . -jni com.example.mr5.jnidemo.JniUtil。


插入部分
引用系统文件且自定义一个so库

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := playMusic

#LOCAL_MODULE := playMusicZero


LOCAL_SRC_FILES := PlayMusic.cpp \
                   Interface.cpp

LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libtinyalsa

LOCAL_MODULE_TAGS := optional

LOCAL_C_INCLUDES += external/tinyalsa/include  //引入其他目录的头文件方式    在cpp文件中使用#include<***>的方式引用

LOCAL_CFLAGS += \
      -Wno-unused-parameter \
      -Wno-unused-function \
      -Wno-unused-variable

#include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)

//在Android.mk同目录下面的文件
Interface.cpp
PlayMusic.cpp
PlayMusic.h

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值