• 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 

       

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

       

       

       

  • 相关阅读:
    UIApplicationMain函数做了什么
    Navigation Bar的简单设置
    Xcode调试 之 内存泄露 .
    ASIHTTPRequest类库简介和使用说明
    IOS开源项目汇总
    列表框的左右移动,单个,多个,全部
    window.showModalDialog以及window.open用法简介
    URL编码方法比较 Encode,Javascript,escape,encodeURI,encodeURIComponent,UTF8
    实现repeater控件多列显示 简单方法(用CSS float属性)
    如何部署强命名程序集(Strong Name Assembly)和GAC
  • 原文地址:https://www.cnblogs.com/yxx123/p/5404501.html
Copyright © 2020-2023  润新知