当前位置: 首页 > news >正文

成品网站w灬源码16伊园建设英文网站费用

成品网站w灬源码16伊园,建设英文网站费用,手机银行下载app,建设部网站1667号下载文章目录 需求背景目录结构gradle结构makeJar的语法解析 执行makeJar 任务拿到jar包 需求背景 别部门做C语言开发的同学开发了一个库#xff0c;需要给我们Android端去调用。 我们拿到源码#xff0c;首先需要做的是通过CMake去把C源码编译链接成动态库。 当然静态库也行需要给我们Android端去调用。 我们拿到源码首先需要做的是通过CMake去把C源码编译链接成动态库。 当然静态库也行看项目需求吧。不过大部分都是编译动态库不理解动态库和静态库概念的同学可以翻看我的Linux专栏里面有详细的介绍。 然后就是通过编写JNI代码去调用这个.so库。 我们作为Android开发工程师要把输出的.so目标文件和调用这个.so文件的Java代码封装给别的不懂JNI的Android开发同学。 基于上述场景和需求。 我们输出的产物需要有一个.so库跟进不同cpu架构一共有4种不同的目标文件 一个.jar文件。 本文介绍的是如何生成对应的.jar文件。关于JNI和CMake的知识可以查看我专栏的其他博文。 目录结构 首先这个模块是个library结构如下 由于JNI代码Java的native方法映射到JNI中C代码的方法是通过包名方法名映射的包名不一样会导致无法调用.so库的代码。 Java层的native方法 JNI层的C方法 所以我们需要做的是把Java层用于调用JNI层的代码打包起来作为jar包提供给外部。 gradle结构 plugins {id com.android.library }android {namespace com.xxx.nativelibcompileSdk 33defaultConfig {minSdk 24targetSdk 33testInstrumentationRunner androidx.test.runner.AndroidJUnitRunnerconsumerProguardFiles consumer-rules.proexternalNativeBuild {cmake {cppFlags }}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile(proguard-android-optimize.txt),proguard-rules.pro}}externalNativeBuild {cmake {path src/main/cpp/CMakeLists.txtversion 3.22.1}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}lintOptions {abortOnError false} }//定义一个makeJar任务 task makeJar(type: Copy) {//删除存在的delete build/libs/KsnetSecurity.jar//from这个语法是将aar_main_jar目录下的release目录下的classes.jar文件拷贝到build/libs/目录下//设置拷贝的文件,build/intermediates/aar_main_jar/release/目录下的classes.jarfrom(build/intermediates/aar_main_jar/release/)//into表示 classes.jar打进jar包后的文件目录// build/libs/表示classes.jar打进jar包后的文件目录//将classes.jar放入build/libs/目录下into(build/libs/)//include表示的是我们只关心classes.jar这个文件include(classes.jar)//重命名rename (classes.jar, xxxxx.jar) }//作用是在执行makeJar任务之前先执行build任务 makeJar.dependsOn(build)dependencies {testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.5androidTestImplementation androidx.test.espresso:espresso-core:3.5.1 }makeJar的语法解析 //定义一个makeJar任务 task makeJar(type: Copy) {//删除存在的delete build/libs/KsnetSecurity.jar//from这个语法是将aar_main_jar目录下的release目录下的classes.jar文件拷贝到build/libs/目录下//设置拷贝的文件,build/intermediates/aar_main_jar/release/目录下的classes.jarfrom(build/intermediates/aar_main_jar/release/)//into表示 classes.jar打进jar包后的文件目录// build/libs/表示classes.jar打进jar包后的文件目录//将classes.jar放入build/libs/目录下into(build/libs/)//include表示的是我们只关心classes.jar这个文件include(classes.jar)//重命名rename (classes.jar, xxxxx.jar) }//作用是在执行makeJar任务之前先执行build任务 makeJar.dependsOn(build)这里的makeJar代码用于定义一个名为makeJar的任务。 任务依赖关系 makeJar.dependsOn(build)此语句表示在执行makeJar任务之前需要先执行build任务。dependsOn是Gradle中用于定义任务之间依赖关系的方法确保在执行makeJar之前build任务已经成功执行。 定义makeJar任务 task makeJar(type: Copy) {这部分定义了一个名为makeJar的任务它的类型是Copy这意味着它是一个拷贝任务用于复制文件。 删除已存在的文件 delete build/libs/KsnetSecurity.jar此语句表示在执行makeJar任务之前删除已存在的build/libs/xxxxx.jar文件。 设置拷贝源和目标 from(build/intermediates/aar_main_jar/release/) into(build/libs/)这两行语句设置了拷贝的源目录和目标目录。from表示从指定目录拷贝文件into表示将文件拷贝到指定目录。 指定拷贝文件及重命名 include(classes.jar) rename (classes.jar, xxxxx.jar)include指定了需要拷贝的文件此处是classes.jar而rename则指定了拷贝到目标目录后的重命名规则将classes.jar重命名为xxxxx.jar。 这个脚本的主要目的是在执行makeJar任务之前先执行build任务并在执行makeJar任务时进行文件拷贝和重命名生成最终的JAR文件。 执行makeJar 任务 点击左上方的三角形按钮既可以开始构建和运行任务。 拿到jar包 在build文件夹下的libs目录可以找到生成的jar包
http://www.w-s-a.com/news/687314/

相关文章:

  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网
  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司
  • 运用django做网站网站建设问题及解决办法
  • 商丘企业网站服务c mvc 网站开发
  • 太仓建设工程网站广州seo排名外包
  • 成都的教育品牌网站建设做网站不给提供ftp
  • 建站行业市场人力管理系统
  • qq钓鱼网站在线生成器google关键词搜索工具
  • 化妆网站模板移动网站建设模板
  • 欢迎访问语文建设杂志网站网站蓝色配色
  • 最新网站发布重庆城乡建设部网站首页
  • 网站建设费用高鄂尔多斯seo
  • dw做网站怎么发布网站无后台可以上框架
  • 网络公司如何建网站网站的建设需要多少钱
  • 代刷网站推广快速泉州网页定制
  • 网站优秀网站地址做宣传册的公司
  • 苏州高端网站建设咨询wordpress云图插件
  • 河北省建设厅网站重新安装优秀中文网页设计
  • 如何在腾讯云做网站开源站群cms
  • 公司网站建设的意义网易做网站
  • 网络营销案例分析与实践搜外seo
  • 手机建网站挣钱吗wordpress面包屑
  • 淘客做网站怎么备案网站开发工具的是什么
  • 提供大良网站建设郑州网站建设网站开发
  • 邢台做wap网站价格wordpress评论滑动