Android studio JNI 制作SO文件,在其他项目中调用
来源:互联网 发布:pcb软件哪个好 编辑:程序博客网 时间:2024/06/05 00:44
为了方便起见,制作这个so文件,我就直接用debug模式,在上一篇Android Studio中使用JNI 把初夜送给HelloWorld中介绍了jni的基本使用。
一、获取so文件
build完项目
然后自己就生成了so文件,位置在:
这些目录下,每个下面都会有so文件。区别在于不同设备,会调用不同包下面的文件。(这点我也不清楚,不浅学误人)
二、新建项目,将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 2017/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分,因为我实在没下载币了)
0 0
- Android studio JNI 制作SO文件,在其他项目中调用
- Android Studio Gradle项目中添加JNI so文件
- [Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- [Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- [Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- [Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- Android Studio-Gradle项目中添加JNI生成文件(.so文件)
- [Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- Android Studio-Gradle项目中添加JNI生成文件(.so文件)
- Android Studio-Gradle项目中添加JNI生成文件(.so文件)
- [Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- [Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- Android Studio-Gradle项目中添加JNI生成文件(.so文件)
- [Android Studio] Gradle项目中添加JNI生成文件(.so文件)
- Android Studio 调用写好的SO文件(JNI)
- android studio中使用ndk编译.so文件,调用C/C++代码(jni编程)
- Android Studio项目如何添加.so文件(JNI)
- Android 调用.so文件 jni
- MFC Combobox 输入内容自动补全并选中缺失部分(类似qq登录输入账号)
- 设计模式----简单工厂
- 让网站提速的最佳前端实践
- shell下数字和字符串比较操作命令 if的参数说明
- vue笔记---打包文件
- Android studio JNI 制作SO文件,在其他项目中调用
- WPF 中鼠标事件无效
- Linux下ps -ef和ps aux的区别及格式详解
- 二十六,iOS UIWindow的简单使用
- 隐匿的攻击之-Domain Fronting
- Java浮点数的精确计算及表示
- 立方根的求解
- 常用python日期、日志、获取内容循环的代码片段
- c/c++ 编码/解码工具总结