Mig*_*gne 379 android gradle build.gradle android-gradle-plugin
我一直在尝试新的Android构建系统,我遇到了一个小问题.我已经编译了自己的ActionBarSherlock的aar包,我称之为'actionbarsherlock.aar'.我正在尝试做的实际上是使用这个aar来构建我的最终APK.如果我使用编译项目(':actionbarsherlock')将整个ActionBarSherlock库作为android-library模块包含到我的主项目中,我可以成功构建而没有任何问题.
但我的问题是,我想将该依赖项作为aar文件包手动提供,如果我想要一个JAR,那么我似乎无法弄清楚如何正确地将它包含到我的项目中.我试图使用编译配置,但这似乎不起作用.我继续在编译期间找不到符号,这告诉我来自aar包的classes.jar没有包含在类路径中.
有谁知道手动将aar包作为文件包含的语法?
的build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile files('libs/actionbarsherlock.aar')
}
android {
compileSdkVersion 15
buildToolsVersion "17.0"
}
Run Code Online (Sandbox Code Playgroud)
编辑:所以答案是它目前不支持,如果你想跟踪它,这是问题.
编辑:目前仍然没有直接支持,最好的替代方案似乎是来自@RanWakshlak的建议解决方案
编辑:使用@VipulShah提出的语法也更简单
Vip*_*hah 640
请按照以下步骤使其正常运行(我已将其测试到Android Studio 2.2)
让我们说你已经在libs文件夹中保存了aar文件.(假设文件名是cards.aar
)
然后在应用程序中build.gradle
指定以下内容并单击与Gradle文件同步项目.打开项目级build.gradle并添加flatDir{dirs 'libs'}
如下所示
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在打开app level build.grdle文件并添加.aar
文件
dependencies {
compile(name:'cards', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
如果一切顺利,您将看到库条目在build - > explosion-aar中进行
另请注意,如果要从具有依赖项的其他项目导入.aar文件,则还需要在build.gradle中包含这些文件.
Oli*_*anz 238
小智 104
您可以从存储库引用aar文件.Maven是一个选项,但有一个更简单的解决方案:将aar文件放在libs目录中并添加目录存储库.
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
Run Code Online (Sandbox Code Playgroud)
然后在依赖项部分中引用库:
dependencies {
implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
Run Code Online (Sandbox Code Playgroud)
您可以查看Min'an博客文章了解更多信息.
ash*_*oke 47
以下方法适用于最新的Android studio(> v0.8.x):
保存aar
在应用程序模块的文件libs
夹(如:<project>/<app>/libs/myaar.aar
)
将以下内容添加到"app"模块文件夹(而不是项目根build.gradle)的build.gradle中.注意编译行中的名称,它是myaar @ aar而不是myaar.aar.
dependencies {
compile 'package.name.of.your.aar:myaar@aar'
}
repositories{
flatDir{
dirs 'libs'
}
}
Run Code Online (Sandbox Code Playgroud)点击 Tools -> Android -> Sync Project with Gradle Files
sus*_*i99 36
前(默认)
implementation fileTree(include: ['*.jar'], dir: 'libs')
Run Code Online (Sandbox Code Playgroud)
只需添加'*.aar'
的include
阵列.
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
Run Code Online (Sandbox Code Playgroud)
它在Android Studio 3.x上运行良好.
如果你想忽略一些图书馆?这样做.
implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')
Run Code Online (Sandbox Code Playgroud)
Art*_*aru 20
目前不支持引用本地.aar文件(由Xavier Ducrochet确认)
您可以做的是设置一个本地Maven存储库(比听起来简单得多)并从那里引用.aar.
我写了一篇博客文章详细介绍了如何让它在这里工作:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
Orh*_* D. 20
我刚刚成功了!
将mylib-0.1.aar文件复制到libs /文件夹中
将这些行添加到build.gradle的底部(应该是app,而不是project):
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile 'com.example.lib:mylib:0.1@aar'
}
Run Code Online (Sandbox Code Playgroud)到现在为止还挺好.这是最重要的一点:
除非启用了脱机模式,否则Gradle需要访问网络以获取依赖关系.
通过Project Structures/Gradle中的复选框确保已启用离线工作
- 要么 -
配置代理设置以访问网络.
要配置代理设置,您必须修改项目的gradle.properties文件,单独配置http和https,如下所示:
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>
Run Code Online (Sandbox Code Playgroud)
希望这有效.
mix*_*xel 18
您可以aar
使用几行代码添加多个依赖项.
添加本地flatDir
存储库:
repositories {
flatDir {
dirs 'libs'
}
}
Run Code Online (Sandbox Code Playgroud)
每添加aar
在libs
目录compile
依赖配置:
fileTree(dir: 'libs', include: '**/*.aar')
.each { File file ->
dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}
Run Code Online (Sandbox Code Playgroud)
Tar*_*n A 14
在应用级别 build.gradle 中添加以下行
implementation fileTree(dir: "libs", include: ["*.aar"])
Run Code Online (Sandbox Code Playgroud)
将项目结构从 Android 更改为 Project。
导航到app->libs如下
然后将“aar”粘贴到 libs 文件夹中。
单击android studio 左上角的File,然后单击“Sync Project with Gradle Files”,如下所示。
就是这样。
Álv*_*ero 11
更新安卓工作室 3.4
如果您使用Gradle Kotlin DSL,则需要在模块目录中添加一个文件。
例如:libs/someAndroidArchive.aar
在依赖块中的模块 build.gradle.kts 中写入此内容后:
implementation(files("libs/someAndroidArchive.aar"))
Run Code Online (Sandbox Code Playgroud)
小智 8
有两种方式:
1:打开Android Studio并通过File-> New-> New Module导航到"Create New Module"窗口......
2:选择"导入.JAR/.AAR包"项,然后单击下一步按钮
3:在build.gradle
属于app
Modlue的文件中添加依赖项.
implementation project(path: ':your aar lib name')
Run Code Online (Sandbox Code Playgroud)
那一切.
1在libs
目录中创建一个文件夹,例如aars
.
2将您的aar lib放入aars文件夹.
3添加代码段
repositories {
flatDir {
dirs 'libs/aars'
}
}
进入你的build.gradle
文件属于app模块.
4在build.gradle
属于app
Modlue的文件中添加依赖项.
dependencies {
...
compile(name:'your aar lib name', ext:'aar')
}
那一切
如果你能读懂中文,你可以查看博客什么是AAR文件以及如何在Android开发中使用
小智 6
我也遇到过这个问题.此问题报告:https://code.google.com/p/android/issues/detail? id = 55863似乎建议不支持直接引用.AAR文件.
也许现在的替代方法是将actionbarsherlock库定义为项目的父目录下的Gradle库并相应地引用.
语法在这里定义http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
使用Android Studio 3.4和Gradle 5,您可以像这样简单地进行操作
dependencies {
implementation files('libs/actionbarsherlock.aar')
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
294028 次 |
最近记录: |