增加C++中java曾调用Native代码中遇到的问题

主要的错误:

  1. 在对应的class文件的目录下,执行下面的命令生成JNI接口文件
javah -jni com.phuket.tour.studio.Mp3Encoder

javah在高版本的java中已经废除了,目前可以用javac代替,用以下代码实现

javac -h 保存的位置 ./Mp3Encoder.java
// ./Mp3Encoder.java是指在当前文件夹内的Mp3Encoder.java,如果不在当前文件夹内自行添加前面的文件名称
  1. 执行ndk-build指令,编译出该动态so库。
    这里问题巨大,主要有3个错误,都放在下面了,在第7点开始,我找了好久的资料在解决。

我每一步的流程图:

首先你要先安装要用的包

  1. ndk,网上有很多资料,可以自己去找
  2. Andriod API
  3. Android SDK PT 和 B U
  4. cmake

1. 创建新项目


2.书上的第一步和第二步,建立Java文件,以及写入一个本地方法。

#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG, __VA_ARGS__)Java_com_phuket_tour_mp3encoder_MpeEncoder_encode(JNIEnv * env, jobject obj) {LOGI("encoder encode");
}


3. 创建jni文件夹


如果没有这个选项就直接在main里面创建一个名叫jni的文件,并告诉build.gradle,这个是在Android的。

4. 生成JNI接口文件



5. 在cpp文件夹内创建一个cpp文件

6. 创建Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES = ./Mp3Encoder.cpp
LOCAL_LDLIBS :=-L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE := jni
include $(BUILD_SHARED_LIBRARY)


后面会报错,我会逐个逐个告诉你们怎么把错误改了,先看看报什么错:

7. 三个问题

  1. Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16

解决方法:
这个需要我们设置一个Application.mk,并设置APP_PLATFORM

APP_STL := c++_static
APP_CPPFLAGS := -frtti -fexceptions -std=c++0x
APP_ABI := armeabi-v7a
APP_PLATFORM := android-16


在运行一次ndk-build就不会报这个错了。

  1. Android NDK: WARNING: APP_PLATFORM android-16 is higher than android:minSdkVersion 1 in D:/Android_app/mp3encoder2/app/src/main/AndroidManifest.xml. NDK binaries will not be compatible with devices older than android-16.

解决方法:


这样就解决了,在运行一次
第二个解决方法的来源:https://blog.csdn.net/jiao_mrswang/article/details/79820228

  1. make: *** No rule to make target ‘D:/Android_app/mp3encoder2/app/src/main/jni/./Mp3Encoder.cpp’, needed by ‘D:/Android_app/mp3encoder2/app/src/main/obj/local/armeabi-v7a/objs/jni/./Mp3
    Encoder.o’. Stop.

这个问题是由这个Android.mk中的LOCAL_SRC_FILES = ./Mp3Encoder.cpp导致的
No rule to make target :翻译过来就是不存在创建目标的规则,也就是这个LOCAL_SRC_FILES是错误的看报错也知道了,Mp3Encoder.cpp的地址不对,实在cpp内的,不是在jni里面的。我现在还不知道怎么通过修改值来矫正错误,我只能通过其他的方法决定Android.mk的目标文件:
先删除LOCAL_SRC_FILES = ./Mp3Encoder.cpp,然后如下图:


然后运行:

Android Studio在音视频开发进阶指南中的Mp3Encoder中遇到的问题相关推荐

  1. 《音视频开发进阶指南:基于Android与iOS平台的实践》源码下载地址

    年前买了这本书,想看下随书源码,一开始从CSDN下载频道下载电子书+源码,但那个源码不是这边书的. 从网上找了一段时间,终于找到了(其实在书的前言/勘误和支持中有给出),作者展晓凯的相关网站如下: 作 ...

  2. 23最新《Android音视频开发进阶指南》,音视频开发者速领

    作为Android开发程序员,我们时刻站在互联网的前端,而音视频作为现在乃至未来几年一个强劲的风口,吸引了许多程序员的关注. 那么音视频开发的行业现状究竟如何呢?我们又该怎样入门呢?请看下文: 音视频 ...

  3. 《音视频开发进阶指南》读书笔记(一) —— 音视频基础概念

    前言 最近要学音视频,在图书馆借到这本<音视频开发进阶指南>,读了一段时间觉得挺好就在某宝买了. 以后一段时间应该都会沉浸在研究音视频中,开个专题记录哈每一章的读书笔记吧(以iOS开发的角 ...

  4. 音视频开发进阶指南--音视频概念基础

    音视频开发进阶指南--音视频概念基础 音频概念基础: 采样.量化和编码: 首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化.根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以 ...

  5. 给Android工程师的音视频开发学习指南

    毕业至今,之前一直从事Android开发的工作,今年5月份开始接触音视频开发相关工作,于是打算写一个音视频相关专栏,让移动端的同学,能通过这个专栏快速掌握音视频相关知识,首先带来第一篇,主要讲讲移动端 ...

  6. 已拿字节、腾讯、墨墨 offer,音视频开发进阶指南pdf

    背了多少单词 (更慌了,随口说100个左右) 怎么知道有墨墨这个app的 (同学介绍) 你简历说你自己心思缜密,但是你简历上的句子的标点符号有问题啊.(emmm) 项目的UI问题 技术 : JavaS ...

  7. 音视频开发进阶指南:基于iOS实现超低延时耳返

    1 功能简介 在音视频应用中我们经常涉及到耳机麦克风和设备麦克风的切换.不同声道的配置.在遇到这种情况的时候,我们如何配置呢? 耳返即耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机)后,能从本机耳 ...

  8. android音视频开发进阶指南,音视频开发进阶指南:基于Android与iOS平台的实践

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  9. Android IOS WebRTC 音视频开发总结(三八)-- tx help

    Android IOS WebRTC 音视频开发总结(三八)-- tx help 本文主要介绍帮一个程序员解决webrtc疑问的过程,文章来自博客园RTC.Blacker,支持原创,转载请说明出处(w ...

最新文章

  1. 假几何真逆序数 NB HDU3465
  2. 面向对象精要-理解对象
  3. 蓝桥杯 ADV-205 算法提高 拿糖果
  4. 目录指南中的Python列表文件-listdir VS system(“ ls”)通过示例进行解释
  5. .读取excel表格(JAVA)
  6. Android Studio Button背景颜色无法修改
  7. Linux内核深入理解中断和异常(6):IRQs的非早期初始化
  8. [Windows Phone] 自己动手实现Telerik公司的LayoutTransform动画效果
  9. 基于XML的ASP留言板
  10. 和数传媒:区块链博弈论机制设计是未来关键
  11. 【Linux运维】01-Linux运维概述与CentOS系统安装
  12. Markdown的使用心得
  13. 数据结构之八大排序算法(C语言实现)
  14. Java中除数能否为0
  15. python描述对象静态特性的数据为_The couple wanted to adopt the black boy they had been _______._学小易找答案...
  16. Linux小技巧之终端快捷键大全
  17. 【面试次体验】堆糖前端开发实习生
  18. 采集到博客数据的10个经典方法
  19. DDN收购Intel Lustre系统业务,详解Lustre系统架构、配置和调优
  20. BypassUAC方式总结

热门文章

  1. Mac 耳机突然偏音(左右耳道出现音量偏差)
  2. 前端实现一个简单的计算器
  3. vue中将名字,除了姓其余都用*标识
  4. paddleX使用教程学习笔记
  5. android 主屏幕程序,android修改默认桌面程序
  6. yolov5-7.0训练自己的VOC数据集
  7. freemarker模板导出带表格word详细教程
  8. 关于win7下魔兽争霸不能全屏的问题
  9. linux下打印带有颜色的字体
  10. Java正则表达式学习及使用案例干货