Android 将Android项目打包成aar文件并在其他项目中引用,打包成jar包(转载学习)

本文深入解析了Android应用模块化过程中,如何使用aar和jar包进行资源和代码的分离与复用。从打包过程、配置修改到引用方式,详细介绍了aar和jar的区别及应用场景,为开发者提供了实用的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    先说说背景吧!公司最近和某省检察院合作一个云平台,检方的核心需求第一次听到有点懵逼!因为现在他们各级检察院都有自己的信息化建设,都有自己的管理平台以及对应的app!现在省检察院的需求就是希望做一个云平台吧所有下属检察院的应用全部传到云平台上,然后根据用户的选择,将勾选的应用重新打包生成一个新的应用!当时听到这个需求都懵了,说的什么鬼,第一反应是这个需求简直是无稽之谈。 。 。

还好当时是给检察院讲的是先回来查资料(但是心想这个怎么可能有),结果一查还真的可以有这样的。。。下面上找到的资料(还没去测试,明天上班找来年各个安卓的小伙伴试试)

--------------------------------------------------------分割线-----------------------------------------------------------------

首先说一下jar包和aar包有什么区别?
1.打包之后生成的文件地址:

*.jar:库/build/intermediates/bundles/debug(release)/classes.jar

*.aar:库/build/outputs/aar/libraryname.aar

2.jar包只包含了classes文件,不包含资源文件;aar不仅包含了classes文件,还包含资源文件 
并且,aar的这个可以发布到maven库,然后使用者直接通过更改版本号就可以获取到最新的aar文件

打包成aar文件 
build.gradle(app) 
1.将apply plugin: ‘com.android.application’改为apply plugin: ‘com.android.library’ 
2.去掉applicationId 
如下图所示 
è¿éåå¾çæè¿°

3.清单文件AndroidManifest.xml 
将application的name icon lable theme roundIcon等属性去掉

è¿éåå¾çæè¿°

4.去掉软件的入口,如果不去掉,引用此aar文件后,运行时软件有两个图标 

è¿éåå¾çæè¿°

5.双击右侧的assembleDebug,如下图位置 

è¿éåå¾çæè¿°

完成后,可以看到在项目app/build/outputs/aar目录下生成一个aar文件。 

è¿éåå¾çæè¿°

这是在debug模式下生成的aar包,正常需要在build.gradle(app)中配置好签名,点击assembleRelease,生成aar包。不会签名的百度下吧。

  • 引用aar文件。 
    1.把aar文件放在一个文件目录内,比如就放在libs目录内 
  • è¿éåå¾çæè¿°
  • 2.build.gradle(app)里添加如下内容
  • repositories {
        flatDir {
            dirs 'libs'
        }
    }
    compile(name: 'app-debug', ext: 'aar')

    如下图所示: 

  • è¿éåå¾çæè¿°

重新运行下工程,可以看到aar文件被加载了 

è¿éåå¾çæè¿°

至此,可以调用aar中的方法和资源了。

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bluetoothmicrecord">

    <application

        android:allowBackup="true"
        android:supportsRtl="true"

        >
        <activity android:name=".MainActivity">
        </activity>
        <activity android:name=".activity.AddBlueToothDevicesActivity" />
        <activity android:name=".activity.RecordAudiosActivity" />

        <service
            android:name=".activity.UploadService"
            android:enabled="true"
            android:exported="true" />

        <activity android:name=".activity.BaseActivity"></activity>
    </application>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <!--蓝牙录音所需的权限-->

    <!--  允许程序连接配对过的蓝牙设备-->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <!-- 允许程序录制音频-->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!--   允许程序修改全局音频设置-->
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <!-- 允许一个程序收到广播后快速收到下一个广播-->
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <!-- 允许程序进行发现和配对新的蓝牙设备-->
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <!-- 允许一个程序访问CellID或WiFi热点来获取粗略的位置,6.0后蓝牙扫描必须需要的权限,要不discovery时发不了广播-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>

3.res内定义的属性或者名称, 都应当加上前缀

你的aar里定义资源文件是很正常的事, 资源文件很有可能和别人的资源重名, 而悲剧的是, 别人很有可能是引用了另外一个aar导致与你重名. 他无法修改那个aar的资源名, 就像他不能修改你的aar资源名一样. 为了避免这种尴尬, 最好在定义的资源程前加上一个前缀, 比如你的模块简写,商标简写等等. 避免冲突, 还能打个广告, 何乐而不为.

打包成jar文件 
build.gradle(app) 
1.将apply plugin: ‘com.android.application’改为apply plugin: ‘com.android.library’ 
2.去掉applicationId 
如下图所示 

è¿éåå¾çæè¿°

3.重新编译project 
build–Make Project 
编译完成之后会在Module的build–>intermediates–>bundles–>debug(release)–>classes.jar,如下图所示: 

è¿éåå¾çæè¿°

以上就是csdn_mm博主关于Android项目打包成aar文件并在其他项目中引用的过程,家里的电脑没有环境,明天到公司去试试。
作者:csdn_mm 
来源:优快云 
原文:https://blog.youkuaiyun.com/csdn_mm/article/details/78364444

转载于:https://my.oschina.net/u/3903095/blog/2245543

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值