我知道这个问题:Adding local .aar files to my gradle build但解决方案对我不起作用。
我尝试将此语句添加到build.gradle
文件的顶层:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
我还将slidingmenu.aar
文件放入/libs
并在dependencies
部分引用它:compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar'
但它根本不起作用。
我也试过compile files('libs/slidingmenu.aar')
,但没有运气。
我错过了什么?有什么想法吗?
P.S。 Android Studio 0.8.2
答案 0 :(得分:286)
以Josiah的答案为基础,这里是我如何运作的。
按照他的说明(编辑中)(文件 - >新 - >新模块 - >导入.JAR / .AAR )并导入.AAR。
然后在你的项目build.gradle(不是顶级的那个,' app'下面的那个)中添加以下内容(在依赖项部分中):
dependencies {
compile project(':Name-Of-Your-Project')
}
注意,您的项目名称应与导入AAR文件后添加的文件夹名称相匹配(与最高级别文件夹下的app/.idea
级别相同)。或者换句话说......
MyApplication .idea app build.gradle (here's where to add compile project(':ProjectName') to dependency section) ProjectName (added automatically after importing, matching the name of your aar file) build gradle etc
这适用于运行Android Studio 0.8.0。在执行此操作后,不要忘记同步gradle(使用工具栏按钮或文件 - >同步)。
(感谢Josiah让我朝着正确的方向前进)
(注意:在此之前我尝试将其添加到libs文件夹,尝试操作顶级build.gradle
和应用级build.gradle
,但这些都不适用于我的aars文件 - jar的工作正常,但不是aar文件)
答案 1 :(得分:185)
更新:正如@ amram99所述,issue已在Android Studio v1.3发布时修复。
使用以下规格进行测试和验证
现在有效吗
现在您可以通过 文件>新建>新建导入本地aar文件 模块>在Android Studio v1.3中导入.JAR / .AAR包 选项
但是,无论Android Studio的更改如何,以下答案都是正确有效的,因为它基于gradle脚本。
旧答案: 在最近的一次更新中,Android的用户通过Android Studio添加新的模块菜单选项打破了包含本地aar文件的麻烦。 查看此处列出的Issue。 无论进入和退出IDE的功能列表,下面的方法在使用本地aar文件时都有效。(今天测试过):
将aar文件放在libs目录中(如果需要,创建它),然后在build.gradle中添加以下代码:
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
答案 2 :(得分:24)
修改强> 使用本地AAR文件作为构建依赖项的正确方法(当前)是使用模块导入向导(文件|新模块|导入.JAR或.AAR包),它将自动将.aar作为库模块添加到您的库中。项目
旧答案
试试这个:
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
...
compile(name:'slidingmenu', ext:'aar')
答案 3 :(得分:14)
我在Android Studio 2.1上使用它。我有一个名为“Native_Ads”的模块,它在多个项目中共享。
首先,我在Native_ads模块中创建了一个名为'aars'的目录,然后将aar文件放在那里。
目录结构:
libs/
aars/ <-- newly created
src/
build.gradle
etc
顶级Gradle文件:
allprojects {
repositories {
jcenter()
// For module with aar file in it
flatDir {
dirs project(':Native_Ads').file('aars')
}
}
}
App模块的build.gradle文件: - 没有变化
Settings.gradle文件(包括模块):
include ':app'
include 'Native_Ads'
project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads')
Native_Ads模块的Gradle文件:
repositories {
jcenter()
flatDir {
dirs 'aars'
}
}
dependencies {
compile(name:'aar_file_name_without_aar_extension', ext:'aar')
}
就是这样。清洁和建设。
答案 4 :(得分:6)
答案 5 :(得分:5)
你可以这样做。它需要采用maven格式:
repositories {
maven { url uri('folderName')}
}
然后你的AAR需要进入组ID为“com.example”的文件夹结构:
folderName/
com/
example/
verion/
myaar-version.aar
然后引用为依赖:
compile 'com.example:myaar:version@aar'
其中version
是您的aar文件的版本(即3.0等)
答案 6 :(得分:4)
这是我的结构,以及我如何解决这个问题:
MyProject的/应用/库/的 MYLIB-1.0.0.aar 强>
MyProject的/应用/ myModulesFolder / myLibXYZ
在 build.gradle
上来自项目/ app / myModulesFolder / myLibXYZ
我已经说过了:
repositories {
flatDir {
dirs 'libs', '../../libs'
}
}
compile (name: 'mylib-1.0.0', ext: 'aar')
完成并正常工作,我的子模块XYZ取决于主模块中的某个库。
答案 7 :(得分:3)
对于从Android Studio 1.4开始出现此问题的任何人,我通过在项目中创建包含2件事的模块来实现它。
build.gradle,包含以下内容:
configurations.create("default")
artifacts.add("default", file('facebook-android-sdk-4.7.0.aar'))
aar文件(在此示例中为'facebook-android-sdk-4.7.0.aar')
然后将新库包含为模块依赖项。现在,您可以使用构建的aar而不包括项目中的源。
对于这次黑客攻击Facebook。我在将Android SDK集成到项目中时找到了解决方案。
答案 8 :(得分:3)
就我而言,上述答案都没有奏效!因为我有不同的productFlavors只添加repositories{
flatDir{
dirs 'libs'
}
}
没用!我最终指定了 libs 目录的确切位置:
repositories{
flatDir{
dirs 'src/main/libs'
}
}
猜猜当 build.gradle
中有不同的productFlavors时,应该引入这样的flatDirs答案 9 :(得分:1)
此解决方案适用于Android Studio 4.0.1。
除了上述解决方案中建议的创建新模块之外,您还可以尝试此解决方案。
如果您的应用程序中有多个模块,并且只想向其中一个模块添加aar,则此解决方案会派上用场。
在您的根项目中 build.gradle
添加
<ul>
<?php
$categories= get_terms( 'product_cat', array( 'parent' => 15, 'hide_empty' => false ) );
foreach($categories as $category): ?>
<li>
<div class="grid-subheader">
<?php
$metaArray = get_option('taxonomy_' . $category->term_id);
$productCatMetaTitle = $metaArray['wh_meta_title'];
$type = get_term_by( 'id', $category->parent, 'product_cat' );
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => 1,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id', //This is optional, as it defaults to 'term_id'
'terms' => $category->term_id,
'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
)
)
);
$products = new WP_Query($args);
foreach ($products as $prod){
$link = get_the_permalink($prod->ID);
}
?>
<h3><?php echo $productCatMetaTitle; ?></h3>
<p><?php echo $category->description; ?></p>
<a href="<?php echo $link; ?>">
<div class="button-menu">
<?php //echo $type->name; ?> <?php echo $category->name; ?>
</div>
</a>
</div>
</li>
<?php endforeach; ?>
</ul>
然后在要在本地添加.aar文件的模块中。只需在下面的代码行中添加。
repositories {
flatDir {
dirs 'libs'
}}
}
快乐编码:)
答案 10 :(得分:0)
就我而言,我只是将aar文件放入libs中,然后添加
from _dbm import *
在build.gradle中,它可以工作。我认为这与默认生成的依赖项相似:
dependencies {
...
api fileTree(dir: 'libs', include: ['*.aar'])
...
}
答案 11 :(得分:0)
此行包括aar
文件夹中的所有jar
和libs
文件:
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
答案 12 :(得分:0)
在应用gradle文件中添加以下内容 实施项目(路径:“:项目名称”)
答案 13 :(得分:0)
如果您已经在使用Kotlin Gradle DSL,则可以通过以下方式使用它:
这是我的项目结构
|-root
|----- app
|--------- libs // I choose to store the aar here
|-------------- my-libs-01.aar
|-------------- my-libs-02.jar
|--------- build.gradle.kts // app module gradle
|----- common-libs // another aar folder/directory
|----------------- common-libs-01.aar
|----------------- common-libs-02.jar
|----- build.gradle.kts // root gradle
我的app/build.gradle.kts
fileTree
使用简单的方法// android related config above omitted...
dependencies {
// you can do this to include everything in the both directory
// Inside ./root/common-libs & ./root/app/libs
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation(fileTree(mapOf("dir" to "../common-libs", "include" to listOf("*.jar", "*.aar"))))
}
flatDirs
从本地/远程maven存储库中获取// android related config above omitted...
repositories {
flatDir {
dirs = mutableSetOf(File("libs"), File("../common-libs")
}
}
dependencies {
implementation(group = "", name = "my-libs-01", ext = "aar")
implementation(group = "", name = "my-libs-02", ext = "jar")
implementation(group = "", name = "common-libs-01", ext = "aar")
implementation(group = "", name = "common-libs-02", ext = "jar")
}
由于group
在Kotlin implementation
中是必需的(不是可选的/具有默认值),因此是必需的,请参见以下内容:
// Filename: ReleaseImplementationConfigurationAccessors.kt
package org.gradle.kotlin.dsl
fun DependencyHandler.`releaseImplementation`(
group: String,
name: String,
version: String? = null,
configuration: String? = null,
classifier: String? = null,
ext: String? = null,
dependencyConfiguration: Action<ExternalModuleDependency>? = null
)
免责声明:
使用1号方法和flatDirs
2号方法的区别,我还是不太了解,您可能需要编辑/注释此答案。
参考:
答案 14 :(得分:0)
此解决方案适用于Android Studio 4.0.1。
除了上述解决方案中建议的创建新模块之外,您还可以尝试此解决方案。
如果您的应用程序中有多个模块,并且只想向其中一个模块添加aar,则此解决方案会派上用场。
在您的根项目build.gradle
添加
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
然后在要在本地添加.aar文件的模块中。只需在下面的代码行中添加。
dependencies {
api fileTree(include: ['*.aar'], dir: 'libs')
implementation files('libs/<yourAarName>.aar')
}
快乐编码:)