您的位置:首页 > 移动开发 > Android开发

Android Studio Jni 环境搭建

2016-05-13 15:21 495 查看

第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置

安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压。下面给出两个下载地址(1)官网:http://wear.techbrood.com/tools/sdk/ndk/(2)社区:http://tools.android-studio.org/下载完成解压:如下图

第二步:新建测试JNI示例HelloJni显示C文件里面的字符串

新建JAVA文件NdkJniUtils并定义本地接口


然后cleanproject再rebuildproject生成class文件,
这时候打开如下图的文件夹看是否生成了classes文件夹,没有生成请重新来过。

头文件生成

再打开Terminal输入指令进入debug文件夹下
cdapp/build/intermediates/classes/debug
然后再输入指令生成头文件,这里javah-jni后面跟的是NdkJniUtils类的全路径
javah-jni
com.boyoi.ysj.hello.jni.NdkJniUtils[/code]
如果没有报错就说明生成头文件成功,如果报错请检查环境是否配置错误。
这时候打开classes/debug下面的文件发现多了一个文件com_boyoi_ysj_hello_jni_NdkJniUtils.h然后在src/main下新建文件夹jni,把生成的.h文件复制或者剪切到jni文件夹下面去,新建一个c类随便取一个名字,添加代码如下

配置文件

(1)在gradle.properties文件末尾添加
android.useDeprecatedNdk=true
(2)在app文件下得build.gradle->defaultConfig括号内添加如下代码
ndk{
moduleName"NdkJniDemo"//生成的so名字
abiFilters"armeabi","armeabi-v7a","x86"//输出指定三种abi体系结构下的so库,目前可有可无。
}
重新build项目,发现已经没有变红了。接下来就是运用了,在JniUtils类里面添加如下代码
static{
System.loadLibrary("HelloJNI");//之前在build.gradle里面设置的so名字,必须一致
}

测试是否成功

在activity_main:

<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/test"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="HelloWorld!"/></RelativeLayout>

在MainActivity:

publicclassMainActivityextendsAppCompatActivity{privateTextViewmTextView;NdkJniUtilsjni=newNdkJniUtils();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextView=(TextView)this.findViewById(R.id.test);NdkJniUtilsjni=newNdkJniUtils();mTextView.setText(jni.hello());}

运行结果:

另外:打开app->intermediates-ndk-debug发现生成了三个文件夹,并且对应了之前我们在build.gradle配置的abiFilters注意:我也在mac下androidstudio通过重复如上步凑也是成功的,下图为证

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: