studio写jniHelloWorld的步骤

studio写jniHelloWorld的步骤

1. 创建一个项目
2. 创建一个java项目例如myJNI
    1. 类中声明一个本地方法:
    2. 声明链接 这样才能在java代码中调用c

    代码如下:
        public class myJNI {

            static {
                System.loadLibrary("hello"); //加载动态链接库
            }
            public static  native String helloFromC();
        }
3. 在Terminal中进行命令行操作
    1. 进入myJNI所在的文件夹下 cd app\src\main\java\com\wal\jni
    2. 对于myJNI.java进行编译,生成class文件  javac myJNI.java
    3. 退回到com的上一层  
    4. 用myJNI.class生成javah文件 

4. 创建c文件
    1. 在main文件夹下创建文件夹 例如 : jni
    2. 在jni中创建c文件,文件名为hello(要与2.2中声明的相同)
    3. c文件中写代码,先将h文件中生成的头考过来.注:虽然h文件不影响运行,但是方法多的时候可以方便写c文件

    #include <jni.h>

    JNIEXPORT jstring

    JNICALL Java_com_wal_encode_myJNI_encode
            (JNIEnv *env, jclass obj, jstring str) {
        char *cstr = (*env)->GetStringUTFChars(env, str, 0);
        int i;
        for (i = 0; i < strlen(cstr); i++) {
            *(cstr + i) += 1;
        }

        return (*env)->NewStringUTF(env, cstr);
    }

5. 重要配置
    1. 配置ndk路径
    2. appbuild.Gradle中配置ndk(defaultConfig节点下)

        defaultConfig {
            applicationId "com.wal.jni"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"

            ndk{
                moduleName "hello"         //生成的so名字
                abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。
            }
        }
    3. appbuild.Gradle中的android下配置:否则找不到ndk,c文件会报错

        sourceSets.main {
            jni.srcDirs = []
        }

6. 在Mainactivity中进行c的调用(例如输入一个字符串 或弹个土司)

    public class MainActivity extends AppCompatActivity {

        private String str;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            str = new myJNI().helloFromC();
        }

        public void click(View view) {
            Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
        }
    }

7. 运行到手机上               
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值