可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I\'m aware of this question: Adding local .aar files to my gradle build but the solution does not work for me.
I tried adding this statement to the top level of my build.gradle
file:
repositories {
mavenCentral()
flatDir {
dirs \'libs\'
}
}
I\'ve also put the slidingmenu.aar
file into /libs
and referenced it in the dependencies
section: compile \'com.slidingmenu.lib:slidingmenu:1.0.0@aar\'
but it did not work at all.
I tried compile files(\'libs/slidingmenu.aar\')
as well but with no luck.
What am I missing? Any ideas?
P.S. Android Studio 0.8.2
回答1:
Building upon Josiah\'s answer, here\'s how I got it to work.
Following his instructions (under edit) (File -> New-> New Module -> Import .JAR/.AAR) and import your .AAR.
Then in your project build.gradle (not the top level one, the one under \'app\') add the following (in the dependencies section):
dependencies {
compile project(\':Name-Of-Your-Project\')
}
Note Name-Of-Your-Project should match the name of the folder that was added after you imported the AAR file (at the same level as app/.idea
under the top most level folder). Or to put it another way...
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
This worked for me running Android Studio 0.8.0. Don\'t forget to synchronize gradle (using toolbar button or in File->Synchronize) after you do this.
(Thanks to Josiah for getting me going in the right direction)
(Note: prior to this I tried adding it to the libs folder, trying to manipulate the top level build.gradle
and the app level build.gradle
, but none of that worked for my aars files--jar\'s will work fine, but not the aar files)
回答2:
Update : As @amram99 mentioned, the issue has been fixed as of the release of Android Studio v1.3.
Tested and verified with below specifications
- Android Studio v1.3
- gradle plugin v1.2.3
- Gradle v2.4
What works now
Now you can import a local aar file via the File>New>New
Module>Import .JAR/.AAR Package option in Android Studio v1.3
However the below answer holds true and effective irrespective of the Android Studio changes as this is based of gradle scripting.
Old Answer :
In a recent update the people at android broke the inclusion of local aar files via the Android Studio\'s add new module menu option.
Check the Issue listed here.
Irrespective of anything that goes in and out of IDE\'s feature list , the below method works when it comes to working with local aar files.(Tested it today):
Put the aar file in the libs directory (create it if needed), then, add the following code in your build.gradle :
dependencies {
compile(name:\'nameOfYourAARFileWithoutExtension\', ext:\'aar\')
}
repositories{
flatDir{
dirs \'libs\'
}
}
回答3:
Edit:
The correct way (currently) to use a local AAR file as a build dependency is to use the module import wizard (File | New Module | Import .JAR or .AAR package) which will automatically add the .aar as a library module in your project.
Old Answer
Try this:
allprojects {
repositories {
jcenter()
flatDir {
dirs \'libs\'
}
}
}
...
compile(name:\'slidingmenu\', ext:\'aar\')
回答4:
I got this working on Android Studio 2.1. I have a module called \"Native_Ads\" which is shared across multiple projects.
First, I created a directory in my Native_ads module with the name \'aars\' and then put the aar file in there.
Directory structure:
libs/
aars/ <-- newly created
src/
build.gradle
etc
Then, the other changes:
Top level Gradle file:
allprojects {
repositories {
jcenter()
// For module with aar file in it
flatDir {
dirs project(\':Native_Ads\').file(\'aars\')
}
}
}
App module\'s build.gradle file:
- no changes
Settings.gradle file (to include the module):
include \':app\'
include \'Native_Ads\'
project(\':Native_Ads\').projectDir = new File(rootProject.projectDir, \'../path/to/Native_Ads\')
Gradle file for the Native_Ads module:
repositories {
jcenter()
flatDir {
dirs \'aars\'
}
}
dependencies {
compile(name:\'aar_file_name_without_aar_extension\', ext:\'aar\')
}
That\'s it. Clean and build.
回答5:
The easiest way now is to add it as a module
This will create a new module containing the aar file, so you just need to include that module as a dependency afterwards
回答6:
You can do it this way. It needs to go in the maven format:
repositories {
maven { url uri(\'folderName\')}
}
And then your AAR needs to go in a folder structure for a group id \"com.example\":
folderName/
com/
example/
verion/
myaar-version.aar
Then reference as a dependency:
compile \'com.example:myaar:version@aar\'
Where version
is the version of your aar file (ie, 3.0, etc)
回答7:
In my case the none of the answers above worked! since I had different productFlavors just adding repositories{
flatDir{
dirs \'libs\'
}
}
did not work! I ended up with specifying exact location of libs directory:
repositories{
flatDir{
dirs \'src/main/libs\'
}
}
Guess one should introduce flatDirs like this when there\'s different productFlavors in build.gradle
回答8:
This is my structure, and how I solve this:
MyProject/app/libs/mylib-1.0.0.aar
MyProject/app/myModulesFolder/myLibXYZ
On build.gradle
from Project/app/myModulesFolder/myLibXYZ
I have put this:
repositories {
flatDir {
dirs \'libs\', \'../../libs\'
}
}
compile (name: \'mylib-1.0.0\', ext: \'aar\')
Done and working fine, my submodule XYZ depends on somelibrary from main module.
回答9:
For anyone who has this problem as of Android Studio 1.4, I got it to work by creating a module within the project that contains 2 things.
build.gradle with the following contents:
configurations.create(\"default\")
artifacts.add(\"default\", file(\'facebook-android-sdk-4.7.0.aar\'))
the aar file (in this example \'facebook-android-sdk-4.7.0.aar\')
Then include the new library as a module dependency. Now you can use a built aar without including the sources within the project.
Credit to Facebook for this hack. I found the solution while integrating the Android SDK into a project.