Android NDK系列(四)-AS生成jar包、导入so库并使用方法
2017-09-08 15:32
519 查看
NDK系列(一)-AS使用javah生成so文件
NDK系列(二)-AS使用CmakeLists生成so文件
NDK系列(三)-AS编写C文件没有提示和不识别NULL
AS导入so库呢,这其实很简单。很多的三方都会使用到so文件,和一些jar包。这里呢,还有一种就是我们在编写自己的C/C++文件的时候,需要用到三方so库的一些方法,这个时候需要导入别人的so库,从而调用C/C++的方法。
如何生成jar包呢,在jnilibrary里加入一个任务。
整个gradle文件我贴出来
然后在Terminal里输入,gradlew makeJar 运行这个任务。
成功之后就能在该library下的libs里发现一个myjni.jar的jar包。
拿这个项目的jar和so举例。新建一个AS项目。将jar包放在醒目的libs下。
然后就是依赖jar包。
依赖完成之后,接下来就导入so文件。
把这些so文件导入新项目中。
我使用的是项目默认的文件夹,so文件放在jniLibs,jniLibs自己创建的,也可以放在libs里面,自己在gradle手动修改src.jnilibs的源文件路径。
好啦,这个结合之前的文章,也算把so文件生成、导入、使用都走了一遍,在使用的这个环节,我想很多道友都是老手了,就不多说了。
感谢动脑学院NDK专题资源
http://ke.qq.com/cgi-bin/agency?aid=26937
NDK系列(二)-AS使用CmakeLists生成so文件
NDK系列(三)-AS编写C文件没有提示和不识别NULL
AS导入so库呢,这其实很简单。很多的三方都会使用到so文件,和一些jar包。这里呢,还有一种就是我们在编写自己的C/C++文件的时候,需要用到三方so库的一些方法,这个时候需要导入别人的so库,从而调用C/C++的方法。
第一步:生成jar包
生成jar包,在其他应用中调用封装好的Java方法。就用之前的例子生成的代码(AS使用javah ibrary生成的so文件)。如何生成jar包呢,在jnilibrary里加入一个任务。
task makeJar(type: Copy) { //删除存在的 delete 'build/libs/myjni.jar' //设置拷贝的文件 release或者debug都可以,看你有没有release版的文件夹 from('build/intermediates/bundles/debug/') //打进jar包后的文件目录 into('build/libs/') //将classes.jar放入build/libs/目录下 //include ,exclude参数来设置过滤 //(我们只关心classes.jar这个文件) include('classes.jar') //重命名 rename ('classes.jar', 'myjni.jar') } makeJar.dependsOn(build)
整个gradle文件我贴出来
apply plugin: 'com.android.library' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { minSdkVersion 19 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" ndk{ moduleName "nativeUtil" ldLibs "log","z","m" abiFilters "armeabi","armeabi-v7a","x86" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' } task makeJar(type: Copy) { //删除存在的 delete 'build/libs/myjni.jar' //设置拷贝的文件 from('build/intermediates/bundles/debug/') //打进jar包后的文件目录 into('build/libs/') //将classes.jar放入build/libs/目录下 //include ,exclude参数来设置过滤 //(我们只关心classes.jar这个文件) include('classes.jar') //重命名 rename ('classes.jar', 'myjni.jar') } makeJar.dependsOn(build)
然后在Terminal里输入,gradlew makeJar 运行这个任务。
gradlew makeJar
成功之后就能在该library下的libs里发现一个myjni.jar的jar包。
第二步:导入jar包和so文件
这个时候就可以把jar包和so库导入需要使用的项目中就ok了。拿这个项目的jar和so举例。新建一个AS项目。将jar包放在醒目的libs下。
然后就是依赖jar包。
依赖完成之后,接下来就导入so文件。
把这些so文件导入新项目中。
我使用的是项目默认的文件夹,so文件放在jniLibs,jniLibs自己创建的,也可以放在libs里面,自己在gradle手动修改src.jnilibs的源文件路径。
第三步:使用jar包的方法
public class MainActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text1); textView.setText(JniLib.getStringFromC()); } }
好啦,这个结合之前的文章,也算把so文件生成、导入、使用都走了一遍,在使用的这个环节,我想很多道友都是老手了,就不多说了。
感谢动脑学院NDK专题资源
http://ke.qq.com/cgi-bin/agency?aid=26937
相关文章推荐
- Android NDK系列(一)-AS使用javah生成so文件
- Android NDK系列(二)-AS使用CmakeLists生成so文件
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- Android Studio中jar与aar 的生成与aar导入项目方法
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- 使用Myeclipse生成可执行的jar文件的方法
- [Android Studio] *.jar 与 *.aar 的生成与*.aar,jar,第三方库项目导入项目方法
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- [Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- 使用powerdesigner导入sql脚本,生成物理模型,name和code都显示英文的解决方法
- [Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- 转载和积累系列 - linux 生成KEY的方法与使用
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- 让spring3.0可以使用aop注解的方法是导入两个jar包aspectjrt.jar aspectjweaver.jar
- Java项目 使用MyEclipse打包生成jar文件方法
- AS导入jar包和so库
- 使用Myeclipse生成可执行的jar文件的方法