Android Studio App项目转成aar

一.说明

在一些跨平台的移动开发环境中,如html5,QT,Unity3D中,经常碰到复杂功能. 一般都有相应原生SDK实现.如果播放器,地图等.而且也提供原生的demo.

如果在跨平台环境采用源码或插件集成方法,一是集成繁琐,(如资源文件引用就很不好解决).

二.调试麻烦.

如果是在Android studio开发原生的App,可以通过调整gradle脚本和AndroidManifest.xml定义,可以直接把生成app生成aar库.
因为aar库是直接打包,java,资源及.so动态库,完全不需跨平台调整.因此一次解决上述两个问题.

一.调试用app项目.二.集成时,换成aar直接给跨平台引用.

以下在高效的二唯码扫描的项目为例来说明

https://github.com/heiBin/QrCodeScanner
这是一个原生界面+ zxing+zbar的项目.比我直接用 Qt +Zxing 的扫描效率高了不少.因此我需要把这个打包就aar 直接给Qt使用.

二. 相关文件改造

2.1 build.gradle

把构建插件由

apply plugin: 'com.android.application'

换成

apply plugin:'com.android.library'

如果定义 applicationId ,也要注释掉

2.2 AndroidManifest.xml改造

主窗口调用按需要去掉,不去会在桌面多出一个快捷方式,直接调用aar原来主窗口

 
                

                
            

去掉Application 中icon,label,theme属性,防止跟调用应用冲突

2.3 去掉switch

aar源码中所有switch 都不能出现,只能改写成 if else

2.4 生成aar

在菜单 build --> make modlule 'app'
看到在项目app/build/outputs/aar目录下生成一个aar文件

四.调用 aar

4.1 build.gradle

把 将aar包复制到与src同级libs目录下
在repositories增加

 flatDir {
            dirs 'libs'
    }

在 dependencies增加

compile(name:'photoview',ext:'aar')
以上表示引入 photoview.aar 到项目中
或者更简单,表示libs所有 jar,aar自动引入
implementation fileTree(dir: 'libs', include: ['.jar', '.aar'])

4.2 对AndroidManifest.xml改进

以是针对 错误的改进

Manifest merger failed with multiple errors, see logs

在manifest根标签上加入

xmlns:tools="http://schemas.android.com/tools"

Manifest.xml的application标签下添加

tools:replace="icon,label,theme",

replace里面填上与调用app冲突的属性名称。上一句表示突略aar中这三个属性
或者将冲突的直接删除。

你可能感兴趣的:(Android Studio App项目转成aar)