1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android studio jni so Android studio JNI 制做SO文件 在其余项目中调用

android studio jni so Android studio JNI 制做SO文件 在其余项目中调用

时间:2024-04-17 05:22:20

相关推荐

android studio jni so Android studio JNI 制做SO文件 在其余项目中调用

这些目录下,每一个下面都会有so文件。区别在于不一样设备,会调用不一样包下面的文件。(这点我也不清楚,不浅学误人)

2、新建项目,将armeabi连同下面的so文件,放入项目的libs下。

java代码中调用。你能够把代码写成这样:

package com.example.administrator.myapplication;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.TextView;

public class MainActivity2 extends AppCompatActivity {

private TextView tv;

static {

System.loadLibrary("native-lib");

}

public native String stringFromJNI();

public native int getNum();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv =(TextView)findViewById(R.id.textView);

// MainActivity mc = new MainActivity();

// mc.put();

tv.setText(""+getNum());

}

}运行看看,结果发现:

java.lang.UnsatisfiedLinkError: No implementation found for....

我完了一早上看这是个啥问题,最后才得出结论,

调用这个方法,包名、类名必需要和C代码中方法一致,不然调不到。

因此,我新建了个包,建了个类。在另一个类中调用。

package com.example.administrator.myapplication;

/**

* Created by fireMorning on /3/2 0002.

*/

public class MainActivity {

public native String stringFromJNI();

public native int getNum();

public void put(){

System.out.println("firefox++++++++++++"+getNum());

}

public String get(){

return stringFromJNI();

}

}固然,别好奇我这个命名,只是为了说明问题。这不是activity,而是普通类。而在activity中,

package com.example.administrator.myapplication;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.TextView;

public class MainActivity2 extends AppCompatActivity {

private TextView tv;

static {

System.loadLibrary("native-lib");

}

public native String stringFromJNI();

public native int getNum();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv =(TextView)findViewById(R.id.textView);

MainActivity mc = new MainActivity();

mc.put();

tv.setText(""+mc.get());

}

}

另外,public native String stringFromJNI();

public native int getNum();

这两句代码报红,别理他。只要你本身确认无误就能够直接编译了。

附上代码:点击下载

(真很差意思,这么个东西,竟然要1分,由于我实在没下载币了)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。