将会出现jni文件夹,即下面Hello_NDk.cpp和Android.mk
此时会出现下面问题,虽然网上有人说可以用下面这种方式解决,没错是可以解决,但是又会出现另一个问题,那就是如果你想在jni目录下建c++工程及class,你会发现找不到相应的
网上找得比较多得办法(感觉不好):
后面又找到另外一种方法:
选中工程,右键->Properties,点击C/C++ General展开,点击 Path and Symbols,在右边Includes下,点击Add,把NDK文件夹下的jni头文件和相应的C++头文件添加进来。一定要填写完整的路径,比如我添加的两个路径分别是:
E:\AndroidNDK\android-ndk-r10c\toolchains\mipsel-linux-android-4.8\prebuilt\windows-x86_64\lib\gcc\mipsel-linux-android\4.8\include
E:\AndroidNDK\android-ndk-r10c\platforms\android-19\arch-arm\usr\include
即可解决问题。
之后就是建立相应的java接口来与C/C++通信:
并在Java代码中引入so库
将GetString类生成头文件,网上比较常见的是用Cmd命令生成的,但这种方式太麻烦了
下面这种是通过直接在eclipse里配置的
1、首先先在工程新建一个
然后代码参考下面
</pre><pre code_snippet_id="1675487" snippet_file_name="blog_20160508_1_2733330" name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<!-- ======================================================================
2016年5月8日 下午6:21:49
HelloNDK
description
hejia
====================================================================== -->
<project name="HelloNDK" default="BuildAllHeaders">
<description>
description
</description>
<!-- =================================
target: BuildAllHeaders
================================= -->
<target name="BuildAllHeaders">
<antcall target="BuildGetStringHeaders"> </antcall>
<antcall target="BuildGetIntHeaders"> </antcall>
</target>
<!-- - - - - - - - - - - - - - - - - -
target: BuildGetStringHeaders
- - - - - - - - - - - - - - - - - -->
<target name="BuildGetStringHeaders">
<javah destdir="./jni" classpath="./bin/classes/" class="com.example.hellondk.GetString"></javah>
</target>
<!-- =================================
target: BuildGetIntHeaders
================================= -->
<target name="BuildGetIntHeaders" >
<javah destdir="./jni" classpath="./bin/classes/" class="com.example.hellondk.GetInt"></javah>
</target>
</project>
</pre><pre code_snippet_id="1675487" snippet_file_name="blog_20160508_1_2733330" name="code" class="html">
配置Ant编译头文件
后面就是编译c++编译问题。网上有直接用ndk-builder编译的,但是那种方法太复杂了,每次建工程都要配置一大堆,才能使用,其中现在直接用CDT就可以了,按刚才那种方法配置,就能自动生成CDT Builder