Description
Developed and used by Ant Fortune Android Team, Freeline has been significantly saving time in daily work. Inspiring by Buck and Instant Run but faster than ever, Freeline can finish an incremental build in just a few seconds. No more recompile and reinstall again and again before seeing your modifications, Freeline brings life-changing development experience for Android.
Freeline alternatives and similar packages
Based on the "Tools" category.
Alternatively, view Freeline alternatives based on common mentions on social networks and blogs.
-
vectalign
Tool for create complex morphing animations using VectorDrawables (allows morphing between any pair of SVG images) -
maven-android-sdk-deployer
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools. -
Uber Apk Signer
A cli tool that helps signing and zip aligning single or multiple Android application packages (APKs) with either debug or provided release certificates. It supports v1, v2 and v3 Android signing scheme has an embedded debug keystore and auto verifies after signing. -
android-resource-remover
A simple utility to remove unused resources in your Android app to lower the size of the APK. It's based on the Android lint tool output. -
AndroidLocalizationer
DISCONTINUED. This is a Android Studio/ IntelliJ IDEA plugin to localize your Android app, translate your string resources automactically. -
Debug Bottle
🍼Debug Bottle is an Android runtime debug / develop tools written using kotlin language. -
density-converter
A multi platform image density converting tool converting single or batches of images to Android, iOS, Windows or CSS specific formats and density versions given the source scale factor or width/height in dp. It has a graphical and command line interface and supports many image types (svg, psd, 9-patch, etc.) aswell as some lossless compressors like pngcrush. -
USB-Device-Info
This application will provide information about almost all currently plugged-in USB devices. -
TaggerString
TaggerString is very light library which allows to build dynamic string resource in much more readable way. -
release-android-library
Remote script to create a maven compatible release of an android library (aar) -
Uber Adb Tools for Android
A tool that enables advanced features through adb installing and uninstalling apps like wildcards and multi device support. Useful if you want to clean your test device from all company apks or install a lot of apks in one go. Written in Java so it should run on your platform. -
Android-Intent-Library
A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation codes like Share, Contacts, Email and etc, which you can easily use.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Freeline or a related project?
README
Freeline
Freeline is a super fast build tool for Android and an alternative to Instant Run. Caching reusable class files and resource indices, it enables incremental building Android apps, and optionally deploying the updates to your device by hot swap.
See Freeline official website for more information.
Developed and used by Ant Fortune (about us) Android Team, Freeline has been significantly saving time in daily work. Inspiring by Buck and Instant Run but faster than ever, Freeline can make an incremental build in just a few seconds. No more recompile and reinstall again and again before seeing your modifications, Freeline brings life-changing development experience for Android.
[中文说明](README-zh.md)
Freeline Insights
Freeline splits the build task into several small tasks that run concurrently. It makes full use of the compiled cache files to implement a real incremental build and uses some components of Buck such as dx and DexMerger to speed up the build tasks. Freeline runs a socket server in a separate process on device side, which connects with build tool on developer's machine, so that deployment can still take effects even if the main process crashes.
Freeline uses multi-dex solution for incremental dex hot swapping. A deeply optimized version of aapt tool (FreelineAapt) is made to generate incremental resource pack, which is several times faster than the original aapt tool and the resouce pack can be as small as 1kb. MonkeyPatcher from Instant Run is utilized to make hot resource replacement. Freeline support dynamic swap native .so library, you don't need to re-build your project after native .so files changed.
Freeline will automatically switch between full build and incremental build.
Freeline is also a great basis for over-the-air hotpatching. Deliverying Freeline's incremental output, which can be packed into a zip file and usually less than 100 kb, it is able to take effect to fix crashes or other problems and replace resoucres dynamically. Statistical data over large amount cases show that it is effective for 99% of users. Please note that the OTA patch delivery system is out of scope of this project.
FreelineAapt will open source codes later. See wiki to know more about Freeline, only Chinese available now.
Features
- Speed up standard android gradle projects with multiple modules
- Concurrent tasks that incrementally build project
- Hot deploy even if the main process crashes
- Build incremental dex and resource pack
- Caching resource.arsc support
- Running on Windows, Linux and Mac
- Native so hot swap support
- Annotation support
- Retrolambda support
- DataBinding support
See the following table for changes support.
Java | drawable, layout, etc. | res/values | native so | |
---|---|---|---|---|
add | √ | √ | √ | √ |
change | √ | √ | √ | √ |
remove | √ | √ | x | - |
Freeline has been tested with API versions 17, 19, 22, 23 on the android emulators, a Nexus 6p running marshmallow and a smartisan running Kitkat. Incremental resource patch would be much faster if the android device is running Lolipop or above.
Download
Configure your project-level build.gradle to include freeline plugin:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.antfortune.freeline:gradle:0.8.8'
}
}
Then, apply the freeline plugin in your android application module's build.gradle:
apply plugin: 'com.antfortune.freeline'
android {
...
}
Finally, execute the gradle task initFreeline
to download freeline dependencies.
- Windows[CMD]: gradlew initFreeline
- Linux/Mac: ./gradlew initFreeline
For Chinese users, if you got stuck in the download process, you can execute gradlew initFreeline -Pmirror
to speed up the progress.
You can also use -PfreelineVersion={your-specific-version}
parameter to download the specific version of freeline's python and bin dependencies.
If you have a complex project structure, you may need to use freeline DSL to customize your build process. For more details about freeline DSL, see Freeline DSL References.
Usage
You can install freeline plugin in Android Studio for quick usage.
How to install? In Android Studio, go to:
MacOS
Android Studio → Preferences... → Plugins → Browse repositories...
Windows and Linux
File → Settings... → Plugins → Browse repositories...
and search for freeline
.
Just use the Run Freeline
button and enjoy it.
The plugin will show you the latest update of Freeline, you can use this plugin to update Freeline.
Many thanks to @pengwei1024 and @act262 for creating such an awesome plugin.
Besides, you can also execute python script in the command line in the root dir of your project. See wiki for more details.
Sample Usage
git clone [email protected]:alibaba/freeline.git
cd freeline/sample
./gradlew initFreeline
python freeline.py
TODO
- Compatibility Improvement
- Multiple Devices Connection Support
Limitations
- Sync incremental resource pack to the device first time may be a bit slow
- Removing res/values is not supported, which may cause aapt exception
- Incrementally build abstract class is not support
- Not support Jack compile
- Not support Kotlin/Groovy/Scala
Contributing
We are always very happy to have contributions, whether for trivial cleanups, big new features or other material rewards.
Troubleshooting
See wiki.
Thanks
License
BSD3 License
*Note that all licence references and agreements mentioned in the Freeline README section above
are relevant to that project's source code only.