Ale*_*iev 155 android android-studio build.gradle android-gradle-plugin aar
我知道这个问题:将本地.aar文件添加到我的gradle构建中,但该解决方案对我不起作用.
我尝试将此语句添加到我的build.gradle文件的顶级:
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
Run Code Online (Sandbox Code Playgroud)
我还把slidingmenu.aar文件放入/libs并在dependencies部分中引用它:compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar'但它根本不起作用.
我也试过compile files('libs/slidingmenu.aar')但没有运气.
我错过了什么?有任何想法吗?
PS Android Studio 0.8.2
Ash*_*erg 290
在Josiah的回答的基础上,这是我如何使它工作.
按照他的指示(编辑下)(文件 - >新建 - >新模块 - >导入.JAR/.AAR)并导入.AAR.
然后在你的项目build.gradle(不是顶级的,'app'下的那个)中添加以下内容(在依赖项部分中):
dependencies {
compile project(':Name-Of-Your-Project')
}
Run Code Online (Sandbox Code Playgroud)
注意您的项目名称应与导入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文件)
Nis*_*nt. 188
更新:正如@ amram99所述,该问题已在Android Studio v1.3发布时得到修复.
经过测试并通过以下规格验证
什么现在有效
现在,您可以通过Android Studio v1.3中的文件>新建>新模块>导入.JAR/.AAR包选项导入本地aar文件
但是,无论Android Studio的更改如何,下面的答案都是真实有效的,因为这是基于gradle脚本编写的.
旧答案: 在最近的更新中,android的人通过Android Studio的添加新模块菜单选项打破了包含本地aar文件.检查此处列出的问题.无论进入和退出IDE的功能列表,以下方法在处理本地aar文件时都有效.(今天测试过):
将aar文件放在libs目录中(如果需要,创建它),然后在build.gradle中添加以下代码:
dependencies {
compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*iah 26
编辑: 使用本地AAR文件作为构建依赖项的正确方法(当前)是使用模块导入向导(文件|新模块|导入.JAR或.AAR包),它将自动添加.aar作为库模块在你的项目中.
老答案
试试这个:
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
...
compile(name:'slidingmenu', ext:'aar')
Run Code Online (Sandbox Code Playgroud)
Ric*_*ard 14
我在Android Studio 2.1上工作了.我有一个名为"Native_Ads"的模块,它在多个项目中共享.
首先,我在Native_ads模块中创建了一个名为'aars'的目录,然后将aar文件放在那里.
目录结构:
libs/
aars/ <-- newly created
src/
build.gradle
etc
Run Code Online (Sandbox Code Playgroud)
顶级Gradle文件:
allprojects {
repositories {
jcenter()
// For module with aar file in it
flatDir {
dirs project(':Native_Ads').file('aars')
}
}
}
Run Code Online (Sandbox Code Playgroud)
App模块的build.gradle文件: - 没有变化
Settings.gradle文件(包括模块):
include ':app'
include 'Native_Ads'
project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads')
Run Code Online (Sandbox Code Playgroud)
Native_Ads模块的Gradle文件:
repositories {
jcenter()
flatDir {
dirs 'aars'
}
}
dependencies {
compile(name:'aar_file_name_without_aar_extension', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
而已.清洁和建造.
小智 12
该解决方案适用于 Android Studio 4.0.1。
除了按照上述解决方案中建议的方式创建新模块之外,您还可以尝试此解决方案。
如果您的应用程序中有多个模块并且只想将 aar 添加到其中一个模块,那么此解决方案会很方便。
在你的根项目build.gradle中
添加
repositories {
flatDir {
dirs 'libs'
}}
Run Code Online (Sandbox Code Playgroud)
然后在本地要添加.aar文件的模块中。只需添加以下代码行即可。
dependencies {
api fileTree(include: ['*.aar'], dir: 'libs')
implementation files('libs/<yourAarName>.aar')
Run Code Online (Sandbox Code Playgroud)
}
快乐编码:)
这是我的结构,以及我如何解决这个问题:
MyProject/app/libs/ mylib-1.0.0.aar
我的项目/应用程序/myModulesFolder/myLibXYZ
在build.gradle 上
来自项目/应用程序/myModulesFolder/myLibXYZ
我已经把这个:
repositories {
flatDir {
dirs 'libs', '../../libs'
}
}
compile (name: 'mylib-1.0.0', ext: 'aar')
Run Code Online (Sandbox Code Playgroud)
完成并且工作正常,我的子模块 XYZ 依赖于主模块中的某个库。
就我而言,我只是将 AAR 文件放入 libs 中,然后添加
dependencies {
...
api fileTree(dir: 'libs', include: ['*.aar'])
...
}
Run Code Online (Sandbox Code Playgroud)
并build.gradle成功了。我认为它与默认生成的依赖项类似:
implementation fileTree(dir: 'libs', include: ['*.jar'])
Run Code Online (Sandbox Code Playgroud)
如果您已经使用 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
Run Code Online (Sandbox Code Playgroud)
我的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"))))
}
Run Code Online (Sandbox Code Playgroud)
flatDirs// 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")
}
Run Code Online (Sandbox Code Playgroud)
之所以需要它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
)
Run Code Online (Sandbox Code Playgroud)
免责声明:使用第一和第二方法的区别flatDirs,我仍然不太了解,您可能需要编辑/评论这个答案。
参考:
你可以这样做.它需要采用maven格式:
repositories {
maven { url uri('folderName')}
}
Run Code Online (Sandbox Code Playgroud)
然后你的AAR需要进入组ID"com.example"的文件夹结构:
folderName/
com/
example/
verion/
myaar-version.aar
Run Code Online (Sandbox Code Playgroud)
然后作为依赖引用:
compile 'com.example:myaar:version@aar'
version您的aar文件的版本在哪里(即3.0等)
就我而言,上述答案均无效!因为我有不同的产品口味只是添加
repositories {
flatDir {
dirs 'libs'
}
}
Run Code Online (Sandbox Code Playgroud)
不工作!我最终指定了libs目录的确切位置:
repositories{
flatDir{
dirs 'src/main/libs'
}
}
Run Code Online (Sandbox Code Playgroud)
我猜当build.gradle中有不同的 ProductFlavors 时,应该像这样引入 flatDirs
| 归档时间: |
|
| 查看次数: |
148303 次 |
| 最近记录: |