开源 java android app 开发(十二)封库.aar

 文章的目的为了记录使用java 进行android app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

 相关链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

本章节主要内容是如何进行打包封库,在Android 开发中,经常遇到两种情况:1.需要简化流程提高编译速度,将部分不需要修改的代码进行打包。2.需要提供第三方开发的SDK,保证对方能使用源码的情况同时又看不到源码。在这两种情况中就需要对源码进行打包封库来实现。

本章内容如下:

1  使用源码制作.aar库文件。

2  在测试程序中引入.aar文件进行验证。

一、制作.aar文件

1.1  使用工程创建module

选择Library

给库命名

1.2  在module中创建Class文件

最后创建2个类

AddFun源码

ackage com.example.mylib;import android.app.Activity;public class AddFun extends Activity {public  int Add (int a,int b){return  a+b;}
}

MulFun源码

package com.example.mylib;import android.app.Activity;public class MulFun extends Activity {public  int Mul(int a,int b){return  a*b;}
}

1.3  修改build.gradle文件,minifyEnable需要改为true,库文件编译后才能看不见源码。

1.4  编译生成 .arr库文件

 

二、在测试文件中调用库文件

2.1  修改app文件夹的build.gradle文件

2.2  进行同步

2.3  测试工程中 MainActivity.java的源码

package com.example.myapplication;import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;import com.example.mylib.AddFun;
import com.example.mylib.MulFun;import org.eclipse.paho.client.mqttv3.IMqttActionListener;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);AddFun tmp = new AddFun();int a = tmp.Add(3,4);MulFun tmp1 = new MulFun();int b = tmp1.Mul(3,4);Log.d("AddFun:", String.valueOf(a));Log.d("MulFun:", String.valueOf(b));}
}

2.4  最终运行的结果,myLib.arr库的功能得到验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu + nginx 1.26 + php7.4 + mysql8.0 调优

服务器配置 8核 16G 查看内存 free -h nginx配置 worker_processes auto; # 自动检测CPU核心数 worker_rlimit_nofile 65535; # 提高文件描述符限制 ​ events {worker_connections 8192; # 每个worker的最大连接数multi_accept on; # 一次性接受…

[未验证]abaqus2022 更改内置python

如何在 Abaqus 2022 中更改内置 Python 在 Abaqus 中,Python 是常用的脚本语言,它使得用户能够自动化模型的创建、分析和后处理。可能有时候你需要更改默认的 Python 版本,比如使用特定库或者功能。本文将为您详细说明如何在 Abaqus 2022 中更…

RAG文档解析难点2:excel数据“大海捞针”,超大Excel解析与精准行列查询指南

写在前面 在构建检索增强生成(RAG)应用时,Excel文件是不可或缺的数据源。它们通常包含了企业运营、市场分析、科学研究等各个领域的宝贵数据。然而,当这些Excel文件变得“超大”——可能包含数十万甚至数百万行数据时,传统的解析方法和RAG数据处理流程将面临严峻的内存、…

深度掌控,智启未来 —— 基于 STM32F103RBT6 的控制板

在科技浪潮奔涌向前的时代,电子领域的创新发展从未停歇。对于电子工程师、科研工作者以及电子技术爱好者,在校电子专业学生而言,一款性能卓越、功能全面且稳定可靠的开发板,是探索电子世界奥秘、实现创意构想的关键基石。今天&…

什么样的登录方式才是最安全的?

目录 一、基础协议:HTTP与HTTPS HTTP协议 HTTPS协议 二、常见Web攻击与防御 2.1 XSS 常见攻击手段 针对XSS 攻击窃取 Cookie 2.2 CSRF CSRF攻击的核心特点 与XSS的区别 常见防御措施 三、疑问解答 四、登录方式演变 4.1 方案一🐶狗都不用 …

android studio底部导航栏

实现底部导航栏切换 将java文件return的xml文件赋值给页面FrameLayout控件 java文件BottomNavigationView,监听器setOnNavigationItemSelectedListener MainActivity.java代码 package com.example.myapplication;import android.os.Bundle;import androidx.appc…

vue-router相关理解

一、前言 随着 Vue.js 在前端开发中的广泛应用,Vue Router 成为了 Vue 官方推荐的路由管理器。它不仅支持单页面应用(SPA)中常见的路由跳转、嵌套路由、懒加载等功能,还提供了导航守卫、动态路由等高级特性。 本文将带你深入了解…

uni-app 自定义路由封装模块详解(附源码逐行解读)

🚀uni-app 自定义路由封装模块详解(附源码逐行解读) 📌 请收藏 点赞 关注,获取更多 uni-app 项目实用技巧! 在实际 uni-app 项目中,我们常常需要对 uni.navigateTo、uni.switchTab 等 API 做…

QML显示图片问题解决办法

以前用qtwediget的时候,好像是放在qlabel或者什么组件上面,把图片的路径放上去就可以直接加载,但我用QML创建界面的时候就遇到了问题,哦对,qtwedget用qpixmap组件显示图片,也有image。话说回来,…

Vue中使用jsx

1. jsx的babel配置 1.1 在项目中使用jsx,需要添加对jsx的支持: jsx通常会通过Babel来进行转换(React编写的jsx就是通过babel转换的)Vue中,只需要在Babel中配置对应的插件即可以下列举需要支持转换的案例: template -> vue-l…

Spring Cache+Redis缓存方案 vs 传统redis缓存直接使用RedisTemplate 方案对比

结合 Spring Cache 和 Redis 的缓存方案(即 Spring Cache Redis)相较于普通的 Redis 缓存使用(如直接通过 RedisTemplate 操作),具有以下显著优势: 具体实现方案请参考:Spring CacheRedis缓存…

Web应用安全漏洞扫描:原理、常用方法及潜在风险解析?

Web应用安全的关键环节在于进行漏洞扫描,这种扫描通过自动化或半自动化的方式,对应用进行安全测试。它能揭示出配置错误、代码缺陷等众多安全风险。接下来,我将详细阐述这些情况。 扫描原理 它主要模拟攻击者的行为,以探测和攻击…

Spring中@Value注解:原理、加载顺序与实战指南

文章目录 前言一、Value注解的核心原理1.1 容器启动阶段:环境准备1.2 Bean实例化阶段:后置处理器介入1.3 值解析阶段:双引擎处理1. 占位符解析(${...})2. SpEL表达式解析(#{...}) 1.4 类型转换与…

MySQL 8配置文件详解

MySQL 8 配置文件详解 MySQL 8 的配置文件(my.cnf或my.ini)是MySQL服务器启动时读取的主要配置文件,它包含了服务器运行所需的各种参数设置。以下是MySQL 8配置文件的详细解析: 配置文件位置 MySQL 8 会按照以下顺序查找配置文件: /etc/m…

台湾住宅IP哪家好,怎么找到靠谱的海外住宅IP代理商

探索台湾住宅IP:如何找到靠谱的海外住宅IP代理商? 在当今数字化时代,海外住宅IP的需求日益增长,尤其在跨境电商、网络营销、数据抓取等领域。对于需要台湾住宅IP的用户来说,找到一家靠谱的海外住宅IP代理商至关重要。本…

读研一些毕业感想

回首过往三年,从踌躇迷茫到明晰坚定,从稚嫩懵懂到明理成熟,一切只觉轻舟已过万重山。 依稀记得我拉着行李箱跋山涉水来到学校的那天,早上从广东中山乘坐10小时高铁到北京西,然后坐1一个多小时地铁到学校&#x…

《飞算JavaAI:稳定、高效、跨平台的AI编程工具优势解析》

随着人工智能技术的不断发展,AI编程工具越来越成为开发者们在研究和应用AI模型时不可或缺的利器。国内外的AI编程工具多种多样,涵盖了从基础编程语言、框架到图形化界面的多种选择。然而,在这些工具中,飞算JavaAI作为一种基于Java…

day27/60重写(补充)

DAY 27 函数专题2:装饰器 ps:第一期day27对应5月16日 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 作业: 编写一个装饰器 logger,在函数执行前后打印日志信息(如…

网传西门子12亿美元收购云原生工业软件,云化PLM系统转机在协同

近日,网传西门子将以12亿美元全现金交易收购云原生MES公司FlexFact,并整合其技术至Xcelerator工业软件平台。如果此次收购动作完成,将会成为西门子加速工业云转型的标志性动作,背后的意义也极为深远,不仅会直接响应竞争…

大模型笔记_检索增强生成(RAG)

1. RAG的概念 RAG(Retrieval-Augmented Generation) 是一种结合 信息检索(Retrieval)与文本生成(Generation)的模型架构,旨在通过动态引入外部知识库或实时数据,提升大语言模型&…