Android Studio在音视频开发进阶指南中的Mp3Encoder中遇到的问题
增加C++中java曾调用Native代码中遇到的问题
主要的错误:
- 在对应的class文件的目录下,执行下面的命令生成JNI接口文件
javah -jni com.phuket.tour.studio.Mp3Encoder
javah在高版本的java中已经废除了,目前可以用javac代替,用以下代码实现
javac -h 保存的位置 ./Mp3Encoder.java
// ./Mp3Encoder.java是指在当前文件夹内的Mp3Encoder.java,如果不在当前文件夹内自行添加前面的文件名称
- 执行ndk-build指令,编译出该动态so库。
这里问题巨大,主要有3个错误,都放在下面了,在第7点开始,我找了好久的资料在解决。
我每一步的流程图:
首先你要先安装要用的包
- ndk,网上有很多资料,可以自己去找
- Andriod API
- Android SDK PT 和 B U
- 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. 三个问题
- 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就不会报这个错了。
- 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
- 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中遇到的问题相关推荐
- 《音视频开发进阶指南:基于Android与iOS平台的实践》源码下载地址
年前买了这本书,想看下随书源码,一开始从CSDN下载频道下载电子书+源码,但那个源码不是这边书的. 从网上找了一段时间,终于找到了(其实在书的前言/勘误和支持中有给出),作者展晓凯的相关网站如下: 作 ...
- 23最新《Android音视频开发进阶指南》,音视频开发者速领
作为Android开发程序员,我们时刻站在互联网的前端,而音视频作为现在乃至未来几年一个强劲的风口,吸引了许多程序员的关注. 那么音视频开发的行业现状究竟如何呢?我们又该怎样入门呢?请看下文: 音视频 ...
- 《音视频开发进阶指南》读书笔记(一) —— 音视频基础概念
前言 最近要学音视频,在图书馆借到这本<音视频开发进阶指南>,读了一段时间觉得挺好就在某宝买了. 以后一段时间应该都会沉浸在研究音视频中,开个专题记录哈每一章的读书笔记吧(以iOS开发的角 ...
- 音视频开发进阶指南--音视频概念基础
音视频开发进阶指南--音视频概念基础 音频概念基础: 采样.量化和编码: 首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化.根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以 ...
- 给Android工程师的音视频开发学习指南
毕业至今,之前一直从事Android开发的工作,今年5月份开始接触音视频开发相关工作,于是打算写一个音视频相关专栏,让移动端的同学,能通过这个专栏快速掌握音视频相关知识,首先带来第一篇,主要讲讲移动端 ...
- 已拿字节、腾讯、墨墨 offer,音视频开发进阶指南pdf
背了多少单词 (更慌了,随口说100个左右) 怎么知道有墨墨这个app的 (同学介绍) 你简历说你自己心思缜密,但是你简历上的句子的标点符号有问题啊.(emmm) 项目的UI问题 技术 : JavaS ...
- 音视频开发进阶指南:基于iOS实现超低延时耳返
1 功能简介 在音视频应用中我们经常涉及到耳机麦克风和设备麦克风的切换.不同声道的配置.在遇到这种情况的时候,我们如何配置呢? 耳返即耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机)后,能从本机耳 ...
- android音视频开发进阶指南,音视频开发进阶指南:基于Android与iOS平台的实践
领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...
- Android IOS WebRTC 音视频开发总结(三八)-- tx help
Android IOS WebRTC 音视频开发总结(三八)-- tx help 本文主要介绍帮一个程序员解决webrtc疑问的过程,文章来自博客园RTC.Blacker,支持原创,转载请说明出处(w ...
最新文章
- 假几何真逆序数 NB HDU3465
- 面向对象精要-理解对象
- 蓝桥杯 ADV-205 算法提高 拿糖果
- 目录指南中的Python列表文件-listdir VS system(“ ls”)通过示例进行解释
- .读取excel表格(JAVA)
- Android Studio Button背景颜色无法修改
- Linux内核深入理解中断和异常(6):IRQs的非早期初始化
- [Windows Phone] 自己动手实现Telerik公司的LayoutTransform动画效果
- 基于XML的ASP留言板
- 和数传媒:区块链博弈论机制设计是未来关键
- 【Linux运维】01-Linux运维概述与CentOS系统安装
- Markdown的使用心得
- 数据结构之八大排序算法(C语言实现)
- Java中除数能否为0
- python描述对象静态特性的数据为_The couple wanted to adopt the black boy they had been _______._学小易找答案...
- Linux小技巧之终端快捷键大全
- 【面试次体验】堆糖前端开发实习生
- 采集到博客数据的10个经典方法
- DDN收购Intel Lustre系统业务,详解Lustre系统架构、配置和调优
- BypassUAC方式总结