AndroidStudio JNI开发:生成可调用jar

      我们知道JNI开发无论是静态注册还是动态注册,都会有跟相关包名类名绑定的情况,因此无法在其他项目正确引用,解决此问题一般是采用编写一个对应的接口java类,将so一并打包成jar,即可供开发者正确使用。
      本文主要目的: 用于解决生成的.so库中,jni的方法名有包名的限制,导致其他项目工程引用时,包名不一致,出现jni层接口调用无效的问题。

1、新建Android Library
在project面板,项目名称右键–>new–>Android Library,输入名字(jniTest)即可生成对应的moudle
新建Android Library

2、然后到路径jniTest/src/main/java下可找到刚才创建的项目,如上图中的com.example.mylibrary,然后创建自己的接口类,右键new–>java class

3、导入jni文件,指定android.mk文件,然后build moudle一下

以上具体步骤可参考:
Android Studio jni动态注册步骤

4、配置并生成jar文件
在jniTest这个module下的build.gradle的末尾添加如下配置信息:

def SDK_NAME = "JniUtil"; //sdk的名字
def SDK_VERSION = "_V1.0"; //版本
def sdkDestinationPath = "build";
def zipFile = file('build/intermediates/bundles/release/classes.jar')//注意这里的release可能是debug或者是default

task deleteBuild(type: Delete) {
    //最终生成的jar的名字
    delete sdkDestinationPath + SDK_NAME + SDK_VERSION + ".jar"
}

task makeJar(type: Jar) {
    from zipTree(zipFile)
    from fileTree(dir: 'src/main',includes: ['assets/**'])
    baseName = SDK_NAME + SDK_VERSION
    destinationDir = file(sdkDestinationPath)
}

makeJar.dependsOn(deleteBuild, build)

添加完后 点击右上角的Sync Now,没有报错即可

5、接下来在Android Srudio的Gradle窗口(右侧),找到项目名称–>module名称–>Tasks–>other–>makeJar(Gradle窗口左上角的刷新按钮进行刷新),双击
全是绿色的话,即可生成对应的jar文件,路径为:moduleName/build/下
此时打开jar文件,可以看到已经包含了我们的接口类,但是没有包含我们生成的so文件。

6、打包so文件进入jar
在路径moduleName/src/main下新建Folder–>Assets Folder,然后将jni/lib/下的架构文件copy到刚才创建的assets文件夹中,再次点击makeJar,同样的路径下,我们可以看到生成的jar已经包含了我们的so

参考文章
AndroidStudio2.2.3 JNI与NDK开发之二:生成可调用jar包

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值