gradle-eclipse-aar-plugin


Source link: https://github.com/ksoichiro/gradle-eclipse-aar-plugin

gradle-eclipse-aar-plugin

Gradle plugin to use Android AAR libraries on Eclipse.
With this plugin, you can manage dependencies with Gradle and build app on Eclipse.

Android Studio has been officially released, but some of you still want/are forced to use Eclipse ADT for some reasons. Android Studio has much better build system by integrating Gradle, and many of the remarkable features are unavailable in Eclipse. In particular, many Android libraries are provided with AAR format recently, so it's now big disadvantage for Eclipse to manage these dependencies. This plugin will explode AAR libraries and create "Android Library Project"s or copy JARs for your project by executing just one command, and you just import these projects in Eclipse.

Originally I was inspired by this article, then rewrote almost all of it and added many improvements to automate conversion process and to cover several dependency/project conditions.

Prerequisites

Eclipse ADT is no longer maintained by Google, and it's forked into the Andmore project.

This plugin is tested under these conditions.

For the original Eclipse ADT Plugin developed by Google, the plugin is tested under the following conditions.

Usage

Prepare build.gradle

If your project already uses Gradle and Android Studio, just apply this plugin.

Gradle 2.1+:

buildscript {

  repositories {

mavenCentral()

// or jcenter()
  
}

  dependencies {

classpath 'com.android.tools.build:gradle:1.0.0'
  
}
 
}
  plugins {

  id 'com.github.ksoichiro.eclipse.aar' version '0.3.1' 
}
  apply plugin: 'com.android.application'

Gradle 2.0 and former:

buildscript {

  repositories {

mavenCentral()

// Enable this if you use SNAPSHOT

//maven {


//
 url uri('https://oss.sonatype.org/content/repositories/snapshots/')

//
}

  
}

  dependencies {

classpath 'com.android.tools.build:gradle:1.0.0'

classpath 'com.github.ksoichiro:gradle-eclipse-aar-plugin:0.3.1'
  
}
 
}
  apply plugin: 'com.android.application'  // Apply this plugin apply plugin: 'com.github.ksoichiro.eclipse.aar'

And configure it in eclipseAar closure.

repositories {

  mavenCentral() 
}
  // Write your dependencies dependencies {

  compile 'com.android.support:appcompat-v7:21.0.2'
  compile 'com.nineoldandroids:library:2.4.0'
  compile 'com.melnykov:floatingactionbutton:1.0.7'
  compile 'com.github.ksoichiro:android-observablescrollview:1.5.0' 
}
  // Configure eclipse-aar plugin eclipseAar {

  // See "Configurations" for details
  androidTarget = 'android-21'
  aarDependenciesDir = 'aarDependencies'
  // Set to true if you use Andmore. Default is false
  andmore = true 
}
  // Configure android plugin // (Even if you don't develop with Gradle, write following at least) android {

  compileSdkVersion 1

// Source directory is 'src/main/java' by default.
  // This will be added as a classpath entry in .classpath file.
  // If you'd like to set src directory other than that,
  // override it with sourceSets.main.java.srcDirs like this.
  sourceSets {

main {

 java.srcDirs = [ 'src' ]

}

  
}
 
}

Migrate from Eclipse ADT to Andmore

If you're going to migrate from Eclipse ADT to Andmore, please check the following notes.

Remove or edit meta data files

Please remove the meta data files ( .classpath and .project) in your app project
or edit them manually before executing tasks.

Those files are slightly different between ADT and Andmore - package has been changed
from com.android.ide.eclipse.adt to org.eclipse.andmore - and
if they're not changed, Andmore does not recognize the projects.

Perhaps this plugin can/should overwrite those files in the future,
but currently it respects the existent contents.

Set andmore flag

Set eclipseAar.andmore option to true to generate the meta data files ( .classpath and .project) for Andmore.

Prepare Gradle or Gradle wrapper

Install Gradle 2.2.1+.

Or copy Gradle wrapper files into your project. If you use Gradle wrapper, you don't have to install Gradle.

  • gradle\wrapper\
  • gradlew
  • gradlew.bat

Generate dependencies

$ ./gradlew generateEclipseDependencies

JAR dependencies will be copied to libs directory,
and AAR dependencies will be exploded and copied to aarDependencies directory by default.

Import projects to Eclipse and build app

  1. Launch Eclipse.
  2. Select File > Import.
  3. Select General > Existing Projects into Workspace and click Next.
  4. Click Browse and select project root directory.
  5. Check Search for nested projects.
  6. Select all projects and click next.
    Note that if you've imported projects in Eclipse before, there might be bin directories and they might be recognized as projects, but don't select them.
  7. Some warning messages might be generated, but ignore them and wait until build finishes.

Run the app

  1. Confirm your device is connected.
  2. Right click your main project and select Run As > Android Application.

project.properties?

Eclipse ADT plugin uses project.properties file to manage library project dependencies.

If you don't have project.properties file, this plugin will create it.
If you have project.properties file but don't have the required AAR dependency entries in it, this plugin will add these entries, too.
Therefore you don't have to care about them.

But please note that if you have file dependencies ( libs/xxx.jar), you should manually add entries for them to project.properties file.

.classpath files?

Eclipse has .classpath files to manage dependencies.
For Android apps, each library projects must be declared as <classpathentry> tags in .classpath file.

If you don't have .classpath file, this plugin will create it.
If you have .classpath file but don't have <classpathentry>s for the required libraries in it, this plugin will add these entries, too.
Therefore you don't have to care about them.

But please note that if you have file dependencies ( libs/xxx.jar), you should manually add entries for them to .classpath file.

Note that .classpath file generated by ADT is not recognized by Andmore.
To develop with Andmore, set eclipseAar.andmore to true.

.project files?

Eclipse has .project files to manage project description.
If you don't have .project file, this plugin will create it, so you don't have to care about them.

Note that .project file generated by ADT is not recognized by Andmore.
To develop with Andmore, set eclipseAar.andmore to true.

Configurations

Configurations for this plugin are written in eclipseAar closure.

Configuration Default Description
androidTarget android-21 target value in dependency projects' project.properties
aarDependenciesDir aarDependencies Directory to explode AARs
jarDependenciesDir (null) Directory to locate JAR.
projectNamePrefix (Empty) Project name prefix for AAR dependencies
projectName (Target project name) Base project name for AAR dependencies
cleanLibsDirectoryEnabled false Set to true if you want libs directory to be cleaned before files are generated.
andmore false Set to true if you use Andmore.
targetConfigurations ['compile', 'debugCompile'] Configurations that dependency JAR/AAR will be aggregated from

Samples

See samples directory.

Each projects refer to samples/repo directory as a Maven repository. You must generate it before using samples with following command:

$ cd /path/to/this/project/root/ $ ./gradlew clean assemble uploadArchives

After that, you can try this plugin in each projects.
Example:

$ cd ./samples/example/ $ ./gradlew generateEclipseDependencies

License

Copyright 2015 Soichiro Kashima  Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 

Resources

ScrollableItemList is an Android RecyclerView List with items that can scroll to reveal more content on the side.

Grab'n Run (aka GNR) is a simple and effective Java Library that you can easily add to your Android projects to perform secure dynamic class loading operations.

An Android custom ListView that implements multiple columns and variable sized elements.

A tiny library that assists in saving and restoring objects to and from disk using RxJava on Android.

Android 9-patch shadow generator.

A rating toggle for Android which switches between 3 rating levels:

  • positive
  • neutral
  • negative

Topics


2D Engines   3D Engines   9-Patch   Action Bars   Activities   ADB   Advertisements   Analytics   Animations   ANR   AOP   API   APK   APT   Architecture   Audio   Autocomplete   Background Processing   Backward Compatibility   Badges   Bar Codes   Benchmarking   Bitmaps   Bluetooth   Blur Effects   Bread Crumbs   BRMS   Browser Extensions   Build Systems   Bundles   Buttons   Caching   Camera   Canvas   Cards   Carousels   Changelog   Checkboxes   Cloud Storages   Color Analysis   Color Pickers   Colors   Comet/Push   Compass Sensors   Conferences   Content Providers   Continuous Integration   Crash Reports   Credit Cards   Credits   CSV   Curl/Flip   Data Binding   Data Generators   Data Structures   Database   Database Browsers   Date &   Debugging   Decompilers   Deep Links   Dependency Injections   Design   Design Patterns   Dex   Dialogs   Distributed Computing   Distribution Platforms   Download Managers   Drawables   Emoji   Emulators   EPUB   Equalizers &   Event Buses   Exception Handling   Face Recognition   Feedback &   File System   File/Directory   Fingerprint   Floating Action   Fonts   Forms   Fragments   FRP   FSM   Functional Programming   Gamepads   Games   Geocaching   Gestures   GIF   Glow Pad   Gradle Plugins   Graphics   Grid Views   Highlighting   HTML   HTTP Mocking   Icons   IDE   IDE Plugins   Image Croppers   Image Loaders   Image Pickers   Image Processing   Image Views   Instrumentation   Intents   Job Schedulers   JSON   Keyboard   Kotlin   Layouts   Library Demos   List View   List Views   Localization   Location   Lock Patterns   Logcat   Logging   Mails   Maps   Markdown   Mathematics   Maven Plugins   MBaaS   Media   Menus   Messaging   MIME   Mobile Web   Native Image   Navigation   NDK   Networking   NFC   NoSQL   Number Pickers   OAuth   Object Mocking   OCR Engines   OpenGL   ORM   Other Pickers   Parallax List   Parcelables   Particle Systems   Password Inputs   PDF   Permissions   Physics Engines   Platforms   Plugin Frameworks   Preferences   Progress Indicators   ProGuard   Properties   Protocol Buffer   Pull To   Purchases   Push/Pull   QR Codes   Quick Return   Radio Buttons   Range Bars   Ratings   Recycler Views   Resources   REST   Ripple Effects   RSS   Screenshots   Scripting   Scroll Views   SDK   Search Inputs   Security   Sensors   Services   Showcase Views   Signatures   Sliding Panels   Snackbars   SOAP   Social Networks   Spannable   Spinners   Splash Screens   SSH   Static Analysis   Status Bars   Styling   SVG   System   Tags   Task Managers   TDD &   Template Engines   Testing   Testing Tools   Text Formatting   Text Views   Text Watchers   Text-to   Toasts   Toolkits For   Tools   Tooltips   Trainings   TV   Twitter   Updaters   USB   User Stories   Utils   Validation   Video   View Adapters   View Pagers   Views   Watch Face   Wearable Data   Wearables   Weather   Web Tools   Web Views   WebRTC   WebSockets   Wheel Widgets   Wi-Fi   Widgets   Windows   Wizards   XML   XMPP   YAML   ZIP Codes