step7 验证
1、在工程的主项目app下,编写java代码
app\src\main\java\com\thinking\maketest\Test.java
package com.thinking.maketest;
/**
* Created by Yu Yong on 2017/10/18.
*/
public class Test {
static {
System.loadLibrary("com_thinking_faacd");
}
public static native void test();
}
//javah -d E:\AV-study\MakeTest\app\jni -classpath E:\AV-study\MakeTest\app\build\intermediates\classes\debug com.thinking.maketest.Test
app\src\main\java\com\thinking\maketest\MainActivity.java
package com.thinking.maketest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Test.test();
}
}
2、在app项目下新建jni目录,编写C++验证程序
app\jni\com_thinking_maketest_Test.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_thinking_maketest_Test */
#ifndef _Included_com_thinking_maketest_Test
#define _Included_com_thinking_maketest_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_thinking_maketest_Test
* Method: test
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_thinking_maketest_Test_test
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
app\jni\test.cpp
#include "com_thinking_maketest_Test.h"
#include <faac.h>
#include <faad.h>
#include <android\log.h>
JNIEXPORT void JNICALL Java_com_thinking_maketest_Test_test
(JNIEnv *, jclass)
{
faacEncHandle hEncoder;
faacEncConfigurationPtr pConfiguration;
__android_log_print(ANDROID_LOG_INFO, "yuyong", "faac test success");
NeAACDecHandle decoder = NeAACDecOpen();
NeAACDecClose(decoder);
__android_log_print(ANDROID_LOG_INFO, "yuyong", "faad test success");
}
3、编写编译脚本
app\jni\Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_CFLAGS += -Wno-error=format-security
APP_ABI := all
APP_PLATFORM := android-24
app\jni\Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := faac
LOCAL_SRC_FILES := E:\AV-study\MakeTest\faac\libs\$(TARGET_ARCH_ABI)\libfaac.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := faad
LOCAL_SRC_FILES := E:\AV-study\MakeTest\faad\libs\$(TARGET_ARCH_ABI)\libfaad.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := com_thinking_faacd
LOCAL_SRC_FILES := test.cpp
LOCAL_C_INCLUDES += E:\AV-study\MakeTest\faac\jni\include \
E:\AV-study\MakeTest\faad\jni\include
LOCAL_LDLIBS += -llog -ldl -lz
LOCAL_SHARED_LIBRARIES := faac faad
include $(BUILD_SHARED_LIBRARY)
4、编译C++部分得到
E:\AV-study\MakeTest\app\jni>E:\android-ndk-r14-beta2\ndk-build
[arm64-v8a] Compile++ : com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[arm64-v8a] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\arm64-v8a"
[arm64-v8a] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\arm64-v8a"
[arm64-v8a] SharedLibrary : libcom_thinking_faacd.so
[arm64-v8a] Install : libcom_thinking_faacd.so => libs/arm64-v8a/libcom_thinking_faacd.so
[arm64-v8a] Install : libfaac.so => libs/arm64-v8a/libfaac.so
[arm64-v8a] Install : libfaad.so => libs/arm64-v8a/libfaad.so
[x86_64] Compile++ : com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[x86_64] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\x86_64"
[x86_64] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\x86_64"
[x86_64] SharedLibrary : libcom_thinking_faacd.so
[x86_64] Install : libcom_thinking_faacd.so => libs/x86_64/libcom_thinking_faacd.so
[x86_64] Install : libfaac.so => libs/x86_64/libfaac.so
[x86_64] Install : libfaad.so => libs/x86_64/libfaad.so
[mips64] Compile++ : com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[mips64] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\mips64"
[mips64] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\mips64"
[mips64] SharedLibrary : libcom_thinking_faacd.so
[mips64] Install : libcom_thinking_faacd.so => libs/mips64/libcom_thinking_faacd.so
[mips64] Install : libfaac.so => libs/mips64/libfaac.so
[mips64] Install : libfaad.so => libs/mips64/libfaad.so
[armeabi-v7a] Compile++ thumb: com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[armeabi-v7a] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\armeabi-v7a"
[armeabi-v7a] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\armeabi-v7a"
[armeabi-v7a] SharedLibrary : libcom_thinking_faacd.so
[armeabi-v7a] Install : libcom_thinking_faacd.so => libs/armeabi-v7a/libcom_thinking_faacd.so
[armeabi-v7a] Install : libfaac.so => libs/armeabi-v7a/libfaac.so
[armeabi-v7a] Install : libfaad.so => libs/armeabi-v7a/libfaad.so
[armeabi] Compile++ thumb: com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[armeabi] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\armeabi"
[armeabi] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\armeabi"
[armeabi] SharedLibrary : libcom_thinking_faacd.so
[armeabi] Install : libcom_thinking_faacd.so => libs/armeabi/libcom_thinking_faacd.so
[armeabi] Install : libfaac.so => libs/armeabi/libfaac.so
[armeabi] Install : libfaad.so => libs/armeabi/libfaad.so
[x86] Compile++ : com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[x86] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\x86"
[x86] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\x86"
[x86] SharedLibrary : libcom_thinking_faacd.so
[x86] Install : libcom_thinking_faacd.so => libs/x86/libcom_thinking_faacd.so
[x86] Install : libfaac.so => libs/x86/libfaac.so
[x86] Install : libfaad.so => libs/x86/libfaad.so
[mips] Compile++ : com_thinking_faacd <= test.cpp
In file included from E:/AV-study/MakeTest/app/jni/test.cpp:3:
E:\AV-study\MakeTest\faad\jni\include\faad.h:32:9: warning: please update faad2 include filename and function names! [-W#pragma-messages]
#pragma message("please update faad2 include filename and function names!")
^
1 warning generated.
[mips] Prebuilt : libfaac.so <= E:\AV-study\MakeTest\faac\libs\mips"
[mips] Prebuilt : libfaad.so <= E:\AV-study\MakeTest\faad\libs\mips"
[mips] SharedLibrary : libcom_thinking_faacd.so
[mips] Install : libcom_thinking_faacd.so => libs/mips/libcom_thinking_faacd.so
[mips] Install : libfaac.so => libs/mips/libfaac.so
[mips] Install : libfaad.so => libs/mips/libfaad.so
5、运行程序
10-18 02:49:27.524 10677-10677/? I/yuyong: faac test success
10-18 02:49:27.524 10677-10677/? I/yuyong: faad test success