Android 使用“添加本地.aar文件到Gradle build”;flatDirs“;它不起作用了
我知道这个问题:但解决方案对我不起作用 我尝试将此语句添加到我的Android 使用“添加本地.aar文件到Gradle build”;flatDirs“;它不起作用了,android,android-studio,android-gradle-plugin,build.gradle,aar,Android,Android Studio,Android Gradle Plugin,Build.gradle,Aar,我知道这个问题:但解决方案对我不起作用 我尝试将此语句添加到我的build.gradle文件的顶层: repositories { mavenCentral() flatDir { dirs 'libs' } } 我还将slidingmenu.aar文件放入/libs中,并在dependencies部分中引用它:compile'com.slidingmenu.lib:slidingmenu:1.0。0@aar“但它根本不起作用 我也试过编译文件('lib
build.gradle
文件的顶层:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
我还将slidingmenu.aar
文件放入/libs
中,并在dependencies
部分中引用它:compile'com.slidingmenu.lib:slidingmenu:1.0。0@aar“
但它根本不起作用
我也试过编译文件('libs/slidingmenu.aar'),但没有成功
我错过了什么?有什么想法吗
p.S.Android Studio 0.8.2编辑:
使用本地AAR文件作为构建依赖项的正确方法(当前)是使用模块导入向导(文件| New module | import.JAR或.AAR包),该向导将自动将.AAR添加为项目中的库模块
旧答案
试试这个:
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
...
compile(name:'slidingmenu', ext:'aar')
以约西亚的回答为基础,以下是我如何让它发挥作用的 按照他的指示(在编辑下)(文件->新建->新模块->导入.JAR/.AAR)并导入您的.AAR 然后在您的project build.gradle(不是顶级版本,而是“app”下的版本)中添加以下内容(在依赖项部分): 注意:项目名称应与导入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
我的申请
主意
应用程序
build.gradle(这里是将编译项目(':ProjectName')添加到依赖项部分的位置)
ProjectName(导入后自动添加,与aar文件的名称匹配)
建造
格拉德尔
等
这对我运行Android Studio 0.8.0很有效。完成此操作后,不要忘记同步gradle(使用工具栏按钮或在文件->同步中)
(感谢约西亚让我走上了正确的方向)
(注意:在此之前,我尝试将其添加到libs文件夹中,尝试操作顶层
build.gradle
和应用程序级build.gradle
,但这些都不适用于我的aars文件——jar可以正常工作,但aar文件不行)更新:正如@amram99所提到的,自Android Studio v1.3发布之日起,该问题已得到修复
按照以下规范进行测试和验证
- Android Studio v1.3
- gradle插件v1.2.3
- 格雷德尔v2.4
- 现在,您可以通过文件>新建>新建导入本地aar文件 Android Studio v1.3中的模块>导入.JAR/.AAR包选项
- 但是,不管Android Studio的变化如何,下面的答案都是正确有效的,因为这是基于gradle脚本编写的。
旧答案: 在最近的一次更新中,android的人员通过android Studio的“添加新模块”菜单选项打破了本地aar文件的限制。 检查此处列出的选项。 不管IDE功能列表中的任何内容,下面的方法在处理本地aar文件时都有效。(今天已经测试过了): 将aar文件放在libs目录中(如果需要,创建它),然后在build.gradle中添加以下代码:
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
你可以这样做。它需要采用maven格式:
repositories {
maven { url uri('folderName')}
}
然后,您的AAR需要进入组id“com.example”的文件夹结构中:
然后将引用作为依赖项:
implementation fileTree(dir: 'libs', include: ['*.jar'])
compile'com.示例:myaar:version@aar“
其中,
version
是aar文件的版本(例如,3.0等)对于在Android Studio 1.4中出现此问题的任何人,我通过在项目中创建一个包含两个内容的模块使其工作
配置。创建(“默认值”)
artifacts.add(“默认”,文件('facebook-android-sdk-4.7.0.aar'))
这是Facebook的功劳。我在将Android SDK集成到一个项目中时找到了解决方案。在我的例子中,上述答案都不起作用!因为我有不同的产品口味只是添加
repositories {
flatDir {
dirs 'libs'
}
}
没用!我最后指定了libs目录的确切位置:
repositories{
flatDir{
dirs 'src/main/libs'
}
}
我想,当build.gradle中有不同的产品风格时,应该引入这样的FlatDir。我有一个名为“Native_Ads”的模块,可以在多个项目中共享 首先,我在本机的_ads模块中创建了一个名为“aars”的目录,然后将aar文件放在其中 目录结构:
libs/
aars/ <-- newly created
src/
build.gradle
etc
应用程序模块的build.gradle文件:
-不变
Settings.gradle文件(包括模块):
本机_Ads模块的渐变文件:
repositories {
jcenter()
flatDir {
dirs 'aars'
}
}
dependencies {
compile(name:'aar_file_name_without_aar_extension', ext:'aar')
}
就这样。清理并构建。现在最简单的方法是将其作为模块添加
这将创建一个包含aar文件的新模块,因此您只需在以后将该模块作为依赖项包含进去这是我的结构,以及我如何解决这个问题: MyProject/app/libs/mylib-1.0.0.aar MyProject/app/myModulesFolder/myLibXYZ 在build.gradle上 来自Project/app/myModulesFolder/myLibXYZ 我这样说:
repositories {
flatDir {
dirs 'libs', '../../libs'
}
}
compile (name: 'mylib-1.0.0', ext: 'aar')
完成并运行良好,我的子模块XYZ依赖于主模块中的某个库。在我的例子中,我只是将AAR文件放在libs中,然后添加
dependencies {
...
api fileTree(dir: 'libs', include: ['*.aar'])
...
}
在build.gradle
中,它可以工作。我认为这与默认生成的依赖项类似:
implementation fileTree(dir: 'libs', include: ['*.jar'])
此行包括
libs
文件夹中的所有aar
和jar
文件:
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
在应用程序中添加以下渐变文件 实施项目
dependencies {
...
api fileTree(dir: 'libs', include: ['*.aar'])
...
}
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
|-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
// 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"))))
}
// 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")
}
// 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
)
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
dependencies {
api fileTree(include: ['*.aar'], dir: 'libs')
implementation files('libs/<yourAarName>.aar')
repositories {
flatDir {
dirs 'libs'
}}
dependencies {
api fileTree(include: ['*.aar'], dir: 'libs')
implementation files('libs/<yourAarName>.aar')