zoukankan      html  css  js  c++  java
  • Android中使用NDK

    首先用Android Studio下载NDK 

    这个比较简单,就不多说了

    1.写调用jni的Java代码

    新建一个JniUtils

    1 public class JniUtils {
    2     static {
    3         System.loadLibrary("test");
    4     }
    5     public native String getString();
    6 }

    代码会报错,先不管,在后面解决跟方便:) 

    然后修改MainActivity(主要用于显示结果)

     1 public class MainActivity extends AppCompatActivity {
     2     private TextView tv;
     3     @Override
     4     protected void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     6         setContentView(R.layout.activity_main);
     7         tv= (TextView) findViewById(R.id.tv);
     8         JniUtils jni=new JniUtils();
     9         tv.setText(jni.getString());
    10     }
    11 }

    2.修改配置文件

    app对应的build.gradle文件 

    defaultConfig下添加NDK的配置,如下

     1 ...
     2 defaultConfig {
     3         applicationId "com.vonnie.ndkexample"//你的包名
     4         minSdkVersion 14
     5         targetSdkVersion 23
     6         versionCode 1
     7         versionName "1.0"
     8         ndk {
     9             moduleName "test"            //生成的so名字
    10             abiFilters "armeabi", "armeabi-v7a", "x86"    //输出指定三种abi体系结构下的so库。目前可有可无。
    11         }
    12     }
    13 ...

    之后在gradle.properties文件的末尾添加

    1 android.useDeprecatedNdk=true

    然后点击Sync Now,开始同步

    3.写C的代码

    同步完成后,就可以处理1中的错误代码了,鼠标点中报错的getString()函数按ALT+ENT键(Windows下的自动提示错误的快捷键)。 

    选择Create function,就可以创建一个test.C的文件了(值根据你所加载的库的名字所创建的),修改文件如下

    1 #include <jni.h>
    2 JNIEXPORT jstring JNICALL
    3 Java_com_kun_ndkexample_JniUtils_getString(JNIEnv *env, jobject instance) {
    4     return (*env)->NewStringUTF(env,"Android Studio NDK JNI developer from test!");
    5 }

    现在运行一下程序就ok 

       

    如果有朋友遇到问题,欢迎留言

       

       

       

  • 相关阅读:
    批量更新sql |批量update sql
    智力测试题3
    【管理心得之二十一】管得少就是管得好
    查看sqlserver被锁的表以及如何解锁
    AD域相关的属性和C#操作AD域
    毕业5年小结一下
    WPF版公司的自动签到程序
    用友畅捷通高级前端笔试题(一)凭借回忆写出
    .NET中制做对象的副本(三)通过序列化和反序列化为复杂对象制作副本
    .NET中制做对象的副本(二)继承对象之间的数据拷贝
  • 原文地址:https://www.cnblogs.com/yxx123/p/5404501.html
Copyright © 2011-2022 走看看