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

Android framework 中间件开发(二)

        上篇文章中我们讲述了怎么去开发中间件

        Android framework 中间件开发(一)

        这篇我们讲一下怎么打包中间件给外部应用使用

目录

        1.新建项目

        2.编写jar包代码

        3.打包jar包

        4.使用jar包

        我们可以直接将系统编译出来的framework的jar包拿出来直接用,但是为了安全起见,防止用户调用不该用的API,所以我们需要将framework的jar包再打包一层,只暴露需要的函数

        framework的jar包位置:

out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes-header.jar


        1.新建项目

        打开AndroidStudio,随便新建一个空项目,然后点击左上角File->New->New Module

新建一个模块之后,将classes-header.jar复制到module的libs目录下(没有的话新建一个)
目录结构如下:

编辑mudule的build.gradle,添加如下几行:

将jar包添加到项目中:

implementation fileTree(dir: 'libs', include: ['*.jar'])

生成新的jar包,并指定路径和名字:

task makeJar(type: Copy) {delete 'build/libs/darksdk.jar'from('build/intermediates/aar_main_jar/debug/')into('build/libs/')include('classes.jar')rename ('classes.jar', 'darksdk.jar')
}
makeJar.dependsOn(build)

然后点击右上角的Sync Now,

        2.编写jar包代码

        在module中,新建一个类,这个就是外部应用调用的类.

package com.example.darklib;import android.annotation.SuppressLint;
import android.content.Context;import android.darkcontrol.DarkControlManager;public class DarkManager {private Context context;private DarkControlManager darkControlManager;@SuppressLint("WrongConstant")public DarkManager(Context context) {this.context = context;darkControlManager = (DarkControlManager)context.getSystemService("dark_control");}/*** 设置亮度* @param bright 0~1*/public void setBright(float bright) {darkControlManager.setBright(bright);}
}
        3.打包jar包

 编写完成之后点击这边:

等编译完成后:

这便是我们给客户的jar包了  

        4.使用jar包

        和上面的使用步骤一样,将darksdk.lib复制出来,放到项目的libs目录下,并在build.gradle的dependencies节点下添加

implementation fileTree(dir: 'libs', include: ['*.jar'])

然后点击右上角的Sync Now,

        在项目中调用:

至此打包中间件和使用jar包步骤完成 

下一篇我们讲中间件中添加C++代码:

Android framework 中间件开发(三)

相关文章:

  • 当 PyIceberg 和 DuckDB 遇见 AWS S3 Tables:打造 Serverless 数据湖“开源梦幻组合”
  • git管理忽略指定路径/临时文件
  • QT6 源(101)篇一:阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试
  • Python零基础入门到高手8.4节: 元组与列表的区别
  • 以项目的方式学QT开发C++(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • c++,windows,多线程编程详细介绍
  • 【歌曲结构】2:小节与歌曲结构信息整合
  • 模糊综合评价模型建立
  • salesforce如何导出所有字段
  • 人工神经网络(ANN)模型
  • ctfshow权限维持
  • FPGA: UltraScale+ bitslip实现(方案+代码)
  • AI Agent开发第67课-彻底消除RAG知识库幻觉(1)-文档分块全技巧
  • 通义灵码 2.5.4 版【**编程智能体**】初体验
  • How to initialize Linux Mint 22.1 Desktop Operating System
  • Python训练打卡Day22
  • 【Java实战】IO流(转换流,打印流,数据流,序列化流)
  • 网络原理 | 网络基础概念复习
  • 以项目的方式学QT开发C++(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • 第二十五天打卡
  • 《五行令》《攻守占》,2个月后国博见
  • 上海博物馆展览进校园,“小先生”传递文物知识
  • 韶关一企业将消防安装工程肢解发包,广东住建厅:罚款逾五万
  • 既是工具又是食物,可食用机器人开启舌尖上的新科技
  • 复原展出孙吴大墓,江苏首座考古博物馆将开放
  • 多个侵华日军细菌战部队留守名簿文件首次公布