依赖项目中引入aar包,编译时提示找不到引入的aar包

依赖项目中引入aar包,编译时提示找不到引入的aar包,第1张

在对接第三方人脸识别sdk时,对方提供的是aar包,通常在主项目中添加aar包的步骤如下:

1、将aar包放到项目libs下

2、在对应的项目的build.gradle中添加方法

3、在对应的项目的build.gradle中添加依赖dependencies

这样就可以调用了?!NONONO!!!

如果aar包是放在主项目中的话,这样的确可以使用了,但是我是放在主项目中的子项目里,由子项目提供依赖,说得有点绕口吧,来看看我的项目结构:

编译是会报错:

提示错误:

原因是主model(app)找不到这个aar,所以需要在主model下的build.gradle中添加指定这个aar的引用flatDir:

这样即可!在此记录一下!

参考

ps:2013-12-25 号更新,升级到0.4以后 这种方法已经完美使用!

因为项目里面要用到actionbarsherlock,所以研究了一下如何导入到android studio中。

arr(Android Archive):名字是谷歌到的,至于中文叫什么我也不知道。不过好像依赖都要使用这样的包了。

首先说明我使用的android studio 版本是3.1.因为现在android studio的bug还不较多,所以你的版本能不能正常使用我就不敢说了。

如果你只是单纯的想使用actionbarsherlock的话,引用是十分简单的

复制代码

代码如下:

dependencies {

// compile fileTree(dir: 'libs', include: '*.aar')

compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'

compile 'com.android.support:support-v4:18.0.+'

}

然后重新编译一下项目就行了。(ps 这两天看见群里面都在讨论引用第三方jar包,请看我的第一行注释,你只要新建一个libs的文件夹,然后把想要jar包复制到文件夹下,接着把注释那句复制到build文件中,修改一下(*.aar ->*.jar)就可以了)

但是我们要是使用本地的aar文件,我谷歌了两天总算是勉强能用了,请看我的实现过程,如果你有更好的请转告小弟共同进步

第一步 :生成aar文件

我的方法是通过maven-android-plugin来生成的,如果你使用过actionbarsherlock以前的版本的话,这个工具应该不陌生,如果你连maven 都不知道的话,建议好好学习一下maven,虽然现在gradle很火 ,但是我还是最喜欢maven。

关于具体生成步骤不久不详细说了,文章最后贴出几个网址供大家学习使用,放心我按顺序给你们,只要一步一步的来绝对能成功

1、把你的maven版本提升到3.1.1

2、去github上clone下来 maven-android-sdk-deployer 这个项目https://github.com/mosabua/maven-android-sdk-deployer,按照使用说明安装android的版本

3、通过maven-android-plugin生成一个android项目

复制代码

代码如下:

mvn archetype:generate /

-DarchetypeArtifactId=android-quickstart /

-DarchetypeGroupId=de.akquinet.android.archetypes /

-DarchetypeVersion=1.0.11 /

-DgroupId=your.company /

-DartifactId=my-android-application

4 修改pom

复制代码

代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.lee.study.android</groupId>

<artifactId>NiMa</artifactId>

<packaging>aar</packaging>

<name>NiMa</name></p><p><properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<platform.version>4.1.1.4

</platform.version>

<android.plugin.version>3.8.0</android.plugin.version>

</properties>

<dependencies>

<dependency>

<groupId>com.google.android</groupId>

<artifactId>android</artifactId>

<version>${platform.version}</version>

<scope>provided</scope>

</dependency>

</dependencies>

<build>

<finalName>${project.artifactId}</finalName>

<pluginManagement>

<plugins>

<plugin>

<groupId>com.jayway.maven.plugins.android.generation2</groupId>

<artifactId>android-maven-plugin</artifactId>

<version>${android.plugin.version}</version>

<extensions>true</extensions>

</plugin>

</plugins>

</pluginManagement>

<plugins>

<plugin>

<groupId>com.jayway.maven.plugins.android.generation2</groupId>

<artifactId>android-maven-plugin</artifactId>

<configuration>

<sdk>

<platform>16</platform>

<path>E:/android_work/sdk/</path>

</sdk>

</configuration>

</plugin>

</plugins>

</build>

</project>

这是我的pom,打包类型改成aar,插件改成3.8版本,添加ANDROID_HOME到path。

5 执行 mvn install ,这样我们就得到了aar文件,和aar-class.jar文件,其实aar文件里面包含class.jar文件,但是我目前的版本必须手动导入到android studio中,这就是不完美之处。

第二步 导入到android studio中 创建libs文件夹,放入想要导入的文件

1 修改build.gradle ,依然是给出我的大家可以按照自己的项目对比修改

复制代码

代码如下:

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'com.android.tools.build:gradle:0.6.+'

}

}

apply plugin: 'android'</p><p>repositories {

mavenLocal()

mavenCentral()

flatDir {

dirs 'libs'

}

}

android {

compileSdkVersion 18

buildToolsVersion "18.1.1"</p><p>defaultConfig {

minSdkVersion 7

targetSdkVersion 18

}

}

dependencies {

// compile fileTree(dir: 'libs', include: '*.aar')

compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'

compile 'com.jayway.maven.plugins.android.generation2.samples.libraryprojects:aar-lib1:1.0.0@aar'

//compile 'com.lee.study.android:NiMa:0.0.1@aar'

compile 'com.android.support:support-v4:18.0.+'

}

android {

compileOptions.encoding = "UTF-8"

}

repositories 添加了 flatDir , dependencies 里面添加了 依赖的aar文件。

如果你做到这一步,重新编译一下依赖就添加好了,我目前的版本添加完了aar访问aar中的资源文件是不成问题的,但是不能访问到aar中的类文件。如果你和我一样不幸的话,请看下一步

2 手动的添加class.jar文件到android -studio,选中项目F4 ,手动添加依赖 jar到项目,看图片

如果这一步你也搞定了,恭喜你就能和我一样使用依赖了

Toast 显示的内容是依赖包中的一个静态方法返回的文本内容。

最后关于maven 如果搭建android项目的网址,按顺序看就可以

https://code.google.com/p/maven-android-plugin/

http://stand.spree.de/wiki_details_maven_archetypes

http://javacan.tistory.com/198

最近实现了人生第一个APK,中间遇到点问题,比较基础,但还是在此做个总结

我将和播放器相关的类放在一个Android Lib,生成aar,新建一个项目module包含这个aar,同时在module中intent aar包中PlayerView.class 显示界面

参考

Android开发之Android Studio依赖aar包的四种方法(附加第三方库依赖方式)_xiayiye5的博客-CSDN博客

aar依赖引用关系解析 -

lib_A启动lib_B的activity即两个依赖工程互相启动组件_网鱼的栈-CSDN博客

Android Lib 可以生成jar包或aar包作为第三方给其他项目工程使用

jar包 不包含资源文件

aar包 包含资源文件, 比如layout value等

经过验证,Android Studio添加aar依赖 只有以下两种方法好用

首先将第三方aar包 放在所在 module的libs下

然后再module的buid.gradle 中添加如下两种方法的依赖

有两点值得注意的:

1. 使用 aar不包含依赖关系

项目 module需要再次依赖aar包中所依赖的包

如果将aar包上传仓库,使用仓库引用就包含了依赖关系

2.module包名com.a.aa,aar的包名为com.b.bb。在module中启动aar中的PlayerView.class, 会使用到ComponentName,定义如下

如果如下实现,在运行apk时就会报找不到com.b.bb.PlayerView.class 错误

但是将pkg换成com.a.aa 或者 this, 如下,运行就没问题,可以启动PlayerView.class

所以, 如果已经依赖,直接显示调用这个activity就行

如果没有依赖,就需要填入activity所在的包名

PlayerView.class再aar包中的manifest.xml中已经有如下申明

项目 module 依赖 aar包 并不需要 在项目module的manifest.xml中再次申明(查阅有的博客说需要在module的.xml中再次申明,经验证不需要)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11553379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存