GithubHelp home page GithubHelp logo

alibaba / freeline Goto Github PK

View Code? Open in Web Editor NEW
5.5K 222.0 621.0 73.62 MB

A super fast build tool for Android, an alternative to Instant Run

Home Page: https://www.freelinebuild.com/

License: BSD 3-Clause "New" or "Revised" License

Python 40.62% Shell 1.73% Batchfile 1.02% Java 56.62%

freeline's Issues

xml布局无法预览

Expecting a stackmap frame at branch target 22 Exception Details: Location: R$styleable. ()V @10: ifeq Reason: Expected stackmap frame at this location. Bytecode: 0x0000000: 2ab7 02dc b202 e2b6 02e6 9900 0cb2 02ec 0x0000010: 1302 eeb6 02f4 b1

优化建议

[gradle_clean_build_task]
这个task有优化空间吗,或需要额外配置么。
每次运行freeline.py,这个task要花去3min左右的时间。

引入freeline导致gradle构建release 版本失败

调试构建debug版本通过,但是在使用gradle构建release版本失败,LOG如下:

Using Shell executor...
Running on haohang-desktop...
Fetching changes...
正删除 .gradle/
正删除 app/build/
正删除 build/
HEAD 现在位于 e2580f4 去掉butterknife的混淆规则
   e2580f4..13bba3a  develop    -> origin/develop
Checking out 13bba3a0 as develop...
之前的 HEAD 位置是 e2580f4... 去掉butterknife的混淆规则
HEAD 目前位于 13bba3a... Use freeline to build project at development time
$ chmod +x ./gradlew
$ ./gradlew --profile clean tDR
Starting a new Gradle Daemon for this build (subsequent builds will be faster).
Parallel execution is an incubating feature.
Incremental java compilation is an incubating feature.
find variant DevelopDebug start hack process...
coupon-manager merge resources task not found.
variant DevelopRelease is not debug, skip hack process.
find variant OfficialDebug start hack process...
coupon-manager merge resources task not found.
variant OfficialRelease is not debug, skip hack process.
:app:clean
:app:preBuild UP-TO-DATE
:app:extractProguardFiles
:app:preDevelopReleaseBuild
:app:checkDevelopReleaseManifest
:app:preDevelopDebugBuild UP-TO-DATE
:app:preOfficialDebugBuild UP-TO-DATE
:app:preOfficialReleaseBuild
:app:prepareComAndroidSupportAppcompatV72220Library
:app:prepareComAndroidSupportCardviewV72211Library
:app:prepareComAndroidSupportDesign2220Library
:app:prepareComAndroidSupportRecyclerviewV72211Library
:app:prepareComAndroidSupportSupportV42311Library
:app:prepareComAntfortuneFreelineRuntime054Library
:app:prepareComGithangAndroidsnippet062Library
:app:prepareComGithangDrawableWidget03Library
:app:prepareComGithangUmengUpdate2601Library
:app:prepareComGithubDmytrodanylykShadowLayoutLibrary103Library
:app:prepareComGithubXiangtailiangTablayoutLibrary100Library
:app:prepareComGithubYoojiaFast125Library
:app:prepareComGithubYoojiaKeyboard16Library
:app:prepareComGithubYoojiaNextAndroid019Library
:app:prepareComGithubYoojiaNextAndroidSupports010Library
:app:prepareComGithubYoojiaNextInputsAndroid122Library
:app:preDevelopDebugUnitTestBuild UP-TO-DATE
:app:preDevelopReleaseUnitTestBuild
:app:preOfficialDebugUnitTestBuild UP-TO-DATE
:app:preOfficialReleaseUnitTestBuild
:app:prepareComSquareupLeakcanaryLeakcanaryAndroidNoOp14Beta2Library
:app:prepareComTencentBuglyCrashreport220Library
:app:prepareComWdullaerMaterialdatetimepicker240Library
:app:prepareComZcwTogglebuttonLibrary100Library
:app:prepareIoReactivexRxandroid110Library
:app:prepareJpWasabeefRecyclerviewAnimators130Library
:app:prepareDevelopReleaseDependencies
:app:compileDevelopReleaseAidl
:app:compileDevelopReleaseRenderscript
:app:generateDevelopReleaseBuildConfig
:app:generateDevelopReleaseResValues
:app:generateDevelopReleaseResources
:app:mergeDevelopReleaseResources
:app:processDevelopReleaseManifest
:app:processDevelopReleaseResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDevelopReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 20.619 secs

ERROR: Build failed with: exit status 1

`useLibrary 'org.apache.http.legacy'`在freeline增量编译时会找不到相关的类

 错误: 无法访问HttpRequestBase
        httpUtils.send(HttpRequest.HttpMethod.POST, BaseConstants.CollectCount_URL, params, new RequestCallBack<String>() {
 找不到org.apache.http.client.methods.HttpRequestBase的类文件
/home/zhiweijin/AndroidStudioProjects/BusinessListing/app/src/main/java/com/clds/businesslisting/MainActivity.java:220: 错误: 无法访问HttpEntityEnclosingRequest
        httpUtils.send(HttpRequest.HttpMethod.POST, BaseConstants.Advertisement_URL, params, new RequestCallBack<String>() {
                                  ^
  找不到org.apache.http.HttpEntityEnclosingRequest的类文件

感觉每次都是全量编译

python freeline.py

[WARNING] NoInstallationException occurs, a clean build will be automatically executed.
[-][read_project_info_task] finished. in 22.1s
[-][generate_file_stat_task] finished. in 0.2s
[-][gradle_clean_build_task] finished. in 164.6s
[-][clean_all_cache_task] finished. in 0.0s
[-][install_apk_task] finished. in 27.5s
[-][build_base_resource_task] finished. in 10.2s
[-][generate_project_info_task] finished. in 0.0s
[DEBUG] --------------------------------------------------------
[DEBUG] Prepare tasks time: 15.1s
[DEBUG] Task engine running time: 214.3s
[DEBUG] Total time: 229.4s
[DEBUG] --------------------------------------------------------

是不是上面的Warning造成的?

连接不上设备

ERROR] --------------------------------------------------------
[ERROR] Freeline ERROR
[ERROR] --------------------------------------------------------
Please make sure your application is properly running in your device.
Check follow steps:
1. If freeline is not added to your app's denpendencies, modifiy your dependency and run python freeline.py -f.
[ERROR] --------------------------------------------------------
[ERROR] Package com.XXX is not found.
[ERROR] ---------------------------------------

配置了 productFlavors 报错

Execution failed for task ':app:mergeApk_DEBUGDebugAssets'.

/Users/wey/work/android/stock-android/app/build/intermediates/assets/debug/apktime (No such file or directory)

取消 productFlavors 就没问题了

Android 7.0 增量资源兼容性问题

操作步骤:

  1. Activity 里面套了 四个 fragment, 修改第一个里面的东西,点击第二个 tab 的时候崩溃,提示如下:
309 E/Freeline.ResPatcher: Failed to update existing theme for activity com.jm.android.jumei.home.activity.HomeActivity@86885df
                                          java.lang.NoSuchFieldException: No field mTheme in class Landroid/content/res/Resources$Theme; (declaration of 'android.content.res.Resources$Theme' appears in /system/framework/framework.jar)
                                              at java.lang.Class.getDeclaredField(Native Method)
                                              at com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources(MonkeyPatcher.java:330)
                                              at com.antfortune.freeline.gradle.GradleDynamic.applyDynamicRes(GradleDynamic.java:32)
elineCore.applyDynamicRes(FreelineCore.java:297)
                                              at com.antfortune.freeline.FreelineCore.injectResources(FreelineCore.java:240)
                                              at com.antfortune.freeline.FreelineCore.saveDynamicResInfo(FreelineCore.java:322)
                                              at com.antfortune.freeline.FreelineReceiver.saveDynamicResInfo(FreelineReceiver.java:52)
                                              at com.antfortune.freeline.FreelineReceiver.onReceive(FreelineReceiver.java:39)
                                              at android.app.ActivityThread.handleReceiver(ActivityThread.java:3011)
                                              at android.app.ActivityThread.-wrap18(ActivityThread.java)
                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1544)
                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                              at android.os.Looper.loop(Looper.java:154)
                                              at android.app.ActivityThread.main(ActivityThread.java:6077)
                                              at java.lang.reflect.Method.invoke(Native Method)
                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

希望freeline可以增加参数使得不影响正常的debug编译

当使用as直接run的时候 freeline 不会对我的生成物有影响, 只有使用python 命令的时候才会对我的生成物有影响,因为有时候用户的环境是比较复杂的,当出现一个bug 的时候, 他可以直接用run编译项目, 排除所有freeline 可能对项目的影响。而不需要编辑 build.gradle里面的内容。

IncompatibleClassChangeError

Hello:
Is it must rebuild the whole project after delete some public static final String fields?
Because after I deleted a filed my app crashed by:

`java.lang.IncompatibleClassChangeError: com.xxx.rc.example.view.ExampleActivity
                      at dalvik.system.DexFile.defineClassNative(Native Method)
                      at dalvik.system.DexFile.defineClass(DexFile.java:226)
                      at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
                      at dalvik.system.DexPathList.findClass(DexPathList.java:322)
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                      at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2515)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2697)
                      at android.app.ActivityThread.access$800(ActivityThread.java:179)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1540)
                      at android.os.Handler.dispatchMessage(Handler.java:111)
                      at android.os.Looper.loop(Looper.java:194)
                      at android.app.ActivityThread.main(ActivityThread.java:5796)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1010)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)`

FreelineService 没启动

Intent intent = new Intent(sApplication, FreelineService.class);
sApplication.startService(intent);

断点到这就完了,FreelineService并没有成功启动
日志也没有打出来

初始化错误

image
initFreeline的时候不断出现上面的情况,求解。

执行 Python freeline.py报错

Traceback (most recent call last):
File "freeline.py", line 5, in
from freeline_core.dispatcher import Dispatcher
File "xxx/freeline/freeline_core/init.py", line 1, in
import build_commands
ImportError: No module named 'build_commands'

build failed with databinding

As title, i got this result:

app/src/main/res/layout/venue_detail_activity.xml:156: error: Error: No resource type specified (at 'text' with value '@{data.cnName}').


[ERROR] --------------------------------------------------------
[ERROR] build base resources failed with: freeline/release-tools/FreelineAapt package

不支持lambda、kotlin

经过简单测试,freeline 不支持 gradle-retrolambdakotlin

并且,在每次执行python freeline.py后,撤回代码修改会有警告:

Undo Reload from Disk?

执行python freeline.py 报错【build base resources failed with: freeline/release-tools/FreelineAapt 】

执行python freeline.py 报错了

/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11612: error: Public symbol string/yotest_free_info declared here is not defined.
/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11614: error: Public symbol string/yotest_free_time declared here is not defined.
/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11616: error: Public symbol string/yotest_name declared here is not defined.
/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11618: error: Public symbol string/yotest_rate declared here is not defined.
/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11620: error: Public symbol string/yx_alter declared here is not defined.
/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11622: error: Public symbol string/yx_friend_apply_hint_message declared here is not defined.
/Users/test/AndroidGit/testGitProject/app/build/freeline/app/backup/res/values/freeline_id_keeper_public.xml:11624: error: Public symbol string/zhifubao_start_failed declared here is not defined.
ERROR] --------------------------------------------------------
[ERROR] build base resources failed with: freeline/release-tools/FreelineAapt package -f -I /Users/test/Library/Android/sdk/platforms/android-21/android.jar -M /Users/test/AndroidGit//test//app/build/intermediates/manifests/full/debug/AndroidManifest.xml -S /Users/test/AndroidGit//test//app/src/main/res -S /Users/test/AndroidGit//test//libYxKnife/src/main/res -S /Users/test/AndroidGit//test//libwatchdog/src/main/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar/com.bugtags.library/bugtags-lib/1.3.3/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar/com.antfortune.freeline/runtime/0.5.4/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar//test//fanxingsdk/unspecified/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar/com.android.support/gridlayout-v7/21.0.3/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar/com.android.support/multidex/1.0.1/res -S /Users/test/AndroidGit//test//app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/res -S /Users/test/AndroidGit//test//app/build/generated/res/rs/debug -S /Users/test/AndroidGit//test//app/build/freeline/app/backup/res -A /Users/test/AndroidGit//test//app/build/freeline/freeline-assets -A /Users/test/AndroidGit//test//app/src/main/assets -m -J /Users/test/AndroidGit//test//app/build/freeline/app/backup --auto-add-overlay -F /Users/test/AndroidGit//test//app/build/freeline/base-res.so --debug-mode --resoucres-md5-cache-path /Users/test/AndroidGit//test//app/build/freeline/arsc_cache.dat --ignore-assets public_id.xml:public.xml:*.bak:.*
[ERROR] --------------------------------------------------------
[DEBUG] Prepare tasks time: 0.3s
[DEBUG] Task engine running time: 159.4s
[DEBUG] Total time: 159.7s
[DEBUG] --------------------------------------------------------

applicationIdSuffix属性不支持,建议添加配置项

用gradle构建能够正常运行,用 python freeline.py 报错

[ERROR] build base resources failed with: freeline\release-tools\FreelineAapt.exe package -f -I 
D:\android_tool\sdk\platforms\android-23\android.jar -M 
D:\workspace\mogoo\app\build\intermediates\manifests\full\dev\debug\AndroidManifest.xml -S 
D:\workspace\mogoo\app\src\main\res -S 
D:\workspace\mogoo\material_dialog_core\src\main\res -S D:\workspace\mogoo\periscopelibrary\src\main\res -S 
D:\workspace\mogoo\textswitch\src\main\res -S 
D:\workspace\mogoo\umeng_share01\src\main\res -S 
D:\workspace\mogoo\umeng_push_sdk\res -S 
D:\workspace\mogoo\http\src\main\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.bartoszlipinski.recyclerviewheader\library\1.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.github.ctiao\dfm\0.4.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.github.championswimmer\SimpleFingerGestures_Android_Library\1.2\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\io.reactivex\rxandroid\1.1.0\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\support-v4\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.wdullaer\materialdatetimepicker\2.2.0\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\in.srain.cube\ultra-ptr\1.0.11\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\de.hdodenhof\circleimageview\2.0.0\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\support-vector-drawable\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\animated-vector-drawable\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.bigkoo\convenientbanner\2.0.4\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.antfortune.freeline\runtime\0.5.0\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\cardview-v7\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\recyclerview-v7\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\design\23.2.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.soundcloud.android\android-crop\1.0.1\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\me.zhanghai.android.materialprogressbar\library\1.1.5\res -S 
D:\workspace\mogoo\app\build\intermediates\exploded-aar\com.android.support\multidex\1.0.1\res -S D:\workspace\mogoo\app\build\freeline\app\backup\res -A 
D:\workspace\mogoo\app\build\freeline\freeline-assets -A 
D:\workspace\mogoo\app\src\main\assets -m -J 
D:\workspace\mogoo\app\build\freeline\app\backup --auto-add-overlay -F 
D:\workspace\mogoo\app\build\freeline\base-res.so --debug-mode --resoucres-md5-cache-path 
D:\workspace\mogoo\app\build\freeline\arsc_cache.dat --ignore-assets public_id.xml:public.xml:*.bak:.*
[ERROR] --------------------------------------------------------

怀疑是不是因为 MultiDex 的问题

ubuntu 中 python freeline.py 命令出现:OSError: [Errno 13] Permission denied

这个可能不属于freeline。
运行 python freeline.py 还是sudo python freeline.py
都会出现如下错误

File "/home/xx/AndroidStudioProjects/DownLoadManager/freeline/freeline_core/task.py", line 123, in execute
self.task.execute()
File "/home/xx/AndroidStudioProjects/DownLoadManager/freeline/freeline_core/gradle_clean_build.py", line 69, in execute
output, err, code = cexec(command.split(' '), callback=None)
File "/home/xx/AndroidStudioProjects/DownLoadManager/freeline/freeline_core/utils.py", line 28, in cexec
p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, env=env, cwd=cwd)
File "/usr/lib/python2.7/subprocess.py", line 710, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception

OSError: [Errno 13] Permission denied

找不到apktime文件,原因是查找路径错误

Error:Execution failed for task ':app:mergeAndroidmarketDebugAssets'.

/Users/eric/Project/lifon/app/build/intermediates/assets/debug/apktime (No such file or directory)

实际上文件存在于> /Users/eric/Project/lifon/app/build/intermediates/assets/androidmarket/debug/apktime

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeAndroidmarketDebugAssets'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:33)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
    Caused by: java.io.FileNotFoundException: /Users/eric/Project/lifon/app/build/intermediates/assets/debug/apktime (No such file or directory)
    at com.antfortune.freeline.FreelinePlugin$_addFreelineGeneratedFiles_closure4.doCall(FreelinePlugin.groovy:186)
    at com.antfortune.freeline.FreelinePlugin.addFreelineGeneratedFiles(FreelinePlugin.groovy:181)
    at com.antfortune.freeline.FreelinePlugin$_apply_closure3_closure6_closure8.doCall(FreelinePlugin.groovy:63)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:554)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:535)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 60 more

init error

PS D:\Github\freeline\sample> ./gradlew initFreeline --stacktrace
Incremental java compilation is an incubating feature.
find variant normalDebug start hack process...
sample merge resources task not found.
ThirdParty merge resources task not found.
variant normalMonkey is not debug, skip hack process.
variant normalRelease is not debug, skip hack process.
find variant developDebug start hack process...
sample merge resources task not found.
ThirdParty merge resources task not found.
variant developMonkey is not debug, skip hack process.
variant developRelease is not debug, skip hack process.
:initFreeline
Freeline init process start...
Downloading lastest release from https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip
Please wait a minute...
[get] Getting: https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip
[get] To: D:\Github\freeline\sample\freeline.zip.tmp
[get] https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip moved to https://github-cloud.s3.amazonaws.com/releases/64864962/00b3e48a-6aee-11e6-9f70-d7212f834403.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20160825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20160825T103733Z&X-Amz-Expires=300&X-Amz-Signature=8c770a5628c0bd22399e7f404ea4ef30e986f2a27545b41c87b265291e361baf&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dfreeline-v0.5.3-1608251800.zip&response-content-type=application%2Foctet-stream
[get] Error getting https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip to D:\Github\freeline\sample\freeline.zip.tmp
:initFreeline FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':initFreeline'.

    java.net.ConnectException: Connection timed out: connect

  • Try:
    Run with --info or --debug option to get more log output.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':initFreeline'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
    Caused by: : java.net.ConnectException: Connection timed out: connect
    at org.apache.tools.ant.taskdefs.Get.execute(Get.java:146)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at com.antfortune.freeline.FreelineInitializer.initFreeline(FreelineInitializer.groovy:40)
    at com.antfortune.freeline.FreelineInitializer$initFreeline.call(Unknown Source)
    at com.antfortune.freeline.FreelinePlugin$_apply_closure1.doCall(FreelinePlugin.groovy:19)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:554)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:535)
    at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:77)
    at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:73)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 60 more
    Caused by: java.net.ConnectException: Connection timed out: connect
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:690)
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:715)
    at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:606)
    at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:596)

BUILD FAILED

error: cannot find symbol

全量编译python freeline.py -f 可以正常运行
直接运行python freeline.py 总是报error: cannot find symbol 很多类找不到
不知道什么原因 求助

执行gradlew initFreeline命令安装 出现错误

Windows平台上 执行cmd命令行命令 gradlew initFreeline进行安装,出现错误 如下:

C:\Users\zhangtao-iri\Desktop\freeline-master\sample>gradlew initFreeline
Exception in thread "main" java.lang.RuntimeException: Timeout of 120000 reached
 waiting for exclusive access to file: C:\Users\zhangtao-iri\.gradle\wrapper\dis
ts\gradle-2.10-all\dsjfzfdv0b7g6tl0p5fhv6wr3\gradle-2.10-all.zip
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAcc
essManager.java:61)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

windows环境下存在unicode编码错误

使用全量编译没问题,但是在5.0.1的手机上增量编译一直报错
修改Java文件和资源文件增量编译均会出现同个错误

[ERROR] --------------------------------------------------------
[ERROR] Freeline ERROR
[ERROR] --------------------------------------------------------
Traceback (most recent call last):
  File "D:\workspace\TestLibrary_open\freeline_core\android_tools.py", line 298, in e
xecute
    self._command.execute()
  File "D:\workspace\TestLibrary_open\freeline_core\gradle_inc_build.py", line 159, i
n execute
    map(lambda command: command.execute(), self.command_list)
  File "D:\workspace\TestLibrary_open\freeline_core\gradle_inc_build.py", line 159, i
n <lambda>
    map(lambda command: command.execute(), self.command_list)
  File "D:\workspace\TestLibrary_open\freeline_core\gradle_inc_build.py", line 210, i
n execute
    self._invoker.run_dex_task()
  File "D:\workspace\TestLibrary_open\freeline_core\android_tools.py", line 561, in r
un_dex_task
    output, err, code = cexec(dex_args, add_path=add_path)
  File "D:\workspace\TestLibrary_open\freeline_core\utils.py", line 28, in cexec
    p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, env=env, cwd=cwd)
  File "C:\tools\python2\lib\subprocess.py", line 710, in __init__
    errread, errwrite)
  File "C:\tools\python2\lib\subprocess.py", line 958, in _execute_child
    startupinfo)
TypeError: environment can only contain strings

[ERROR] --------------------------------------------------------
[ERROR] incremental build task failed.
[ERROR] --------------------------------------------------------

gradle 配置是

    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "io.pcyan.testapplication"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

Build failed with an exception

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:mergeFirDebugAssets'.

    ../Gank/app/build/intermediates/assets/debug/apktime (No such file or directory)

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

python freeline.py 增量编译的时候 IOError: [Errno 2] No such file or directory

init 和 python freeline.py -f 都是 ok 的
但是修改代码后 python freeline.py 就会报错

Traceback (most recent call last):
File "D:\as\new\im_android\freeline_core\android_tools.py", line 304, in execute
self._command.execute()
File "D:\as\new\im_android\freeline_core\gradle_inc_build.py", line 159, in execute
map(lambda command: command.execute(), self.command_list)
File "D:\as\new\im_android\freeline_core\gradle_inc_build.py", line 159, in
map(lambda command: command.execute(), self.command_list)
File "D:\as\new\im_android\freeline_core\gradle_inc_build.py", line 193, in execute
self._invoker.append_r_file()
File "D:\as\new\im_android\freeline_core\gradle_inc_build.py", line 378, in append_r_file
write_file_content(main_r_path, content)
File "D:\as\new\im_android\freeline_core\utils.py", line 118, in write_file_content
with open(target_path, 'w') as fp:
IOError: [Errno 2] No such file or directory: u'D:\as\new\im_android\app\build\freeline\app\backup\com\kanjian\radio\R.java'

[ERROR] --------------------------------------------------------
[ERROR] incremental build task failed.
[ERROR] --------------------------------------------------------
[DEBUG] Prepare tasks time: 0.2s
[DEBUG] Task engine running time: 0.2s
[DEBUG] Total time: 0.4s
[DEBUG] --------------------------------------------------------

采用特殊的引用方程式,编译会遇到问题

我们的项目有一套比较特别的引用体系,由于项目中相关层module充分的解耦,所以我们项目中住项目module,通过一些配置文件来表示,是否需要引用某module。


通过findProject来判定是否某项目存在,如果存在才进行引用 dependencies.compile project(projectName)

而非通过常见的直接在dependencies中定义好所有需要引用的类


在这种情况下就遇到了实际的代码是没有问题的,但是用freeline进行增量编译,发现新增加的一些接口,在主module中找不到而导致编译失败的问题。

31472205480_ pic_hd

使用本地gradle版本遇到了以下问题

Exception in thread "main" java.io.FileNotFoundException: https://downloads.gradle.org/distributions/gradle-2.13.0-all.zip
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1836)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
        at org.gradle.wrapper.Download.download(Download.java:44)
        at org.gradle.wrapper.Install$1.call(Install.java:61)
        at org.gradle.wrapper.Install$1.call(Install.java:48)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

[ERROR] --------------------------------------------------------
[ERROR] freeline failed when read project info with script: ./gradlew -q checkBeforeCleanBuild
[ERROR] --------------------------------------------------------

建议FreelineExtension中增加一项abi

我不知道是不是个强需求,我们项目中打包时会输出armeabix86universal三个包,最终的.apk文件名是$projectName-$productFlavor-$abi-debug.apk的形式,现在是通过配置apkPath来解决的

在编译项目时,由于定制化的setting.gradle导致了编译的失败

感谢你们的开源,很赞的项目~ 👍

我们项目中对setting.gradle进行了定制,因此里面并非是一系列的module名,而是groovy代码,通过groovy代码加载出需要引入项目的module。因此在使用freeline编译项目的时候出现了错误。

错误日志:
16-08-12 13:42:16.log.zip

P.S: 希望能够有一个解决方案,或者是有接口或命令参数能够给freeline指定提供直接包含module的文件也行。

runtime的appcompact版本高于主工程的appcompact版本,导致编译出错

不使用freeline时正常,由于使用freeline加了compile 'com.antfortune.freeline:runtime:0.5.0'时编译失败,信息如下:

/workspace/project/coupon-manager/app/build/intermediates/res/merged/Develop/debug/values-v23/values-v23.xml:3: AAPT: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.

/workspace/project/coupon-manager/app/build/intermediates/res/merged/Develop/debug/values-v23/values-v23.xml:18: AAPT: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

下面是使用freeline所作的修改:

diff --git a/app/build.gradle b/app/build.gradle
index bc1fff5..db1d354 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,5 @@
 apply plugin: 'com.android.application'
+apply plugin: 'com.antfortune.freeline'

 android {
     compileSdkVersion 22
@@ -64,6 +65,9 @@ android {
         abortOnError false
     }

+    freeline {
+        hack true
+    }
 }

 apply plugin: 'bugly'
@@ -120,6 +124,8 @@ dependencies {

     // Material Date Time Picker
     compile 'com.wdullaer:materialdatetimepicker:2.4.0'
+    //freeline
+    compile 'com.antfortune.freeline:runtime:0.5.0'
 }

 apply plugin: 'fir'
diff --git a/app/src/main/java/com/parkingwang/business/WangApplication.java b/app/src/main/java/com/parkingwang/business/WangApplication.java
index f115449..3aaea98 100644
--- a/app/src/main/java/com/parkingwang/business/WangApplication.java
+++ b/app/src/main/java/com/parkingwang/business/WangApplication.java
@@ -3,6 +3,7 @@ package com.parkingwang.business;
 import android.app.Application;
 import android.content.Intent;

+import com.antfortune.freeline.FreelineCore;
 import com.github.yoojia.fast.AppSessionManager;
 import com.github.yoojia.fast.utils.Configurator;
 import com.github.yoojia.next.lang.QuantumObject;
@@ -31,6 +32,7 @@ public class WangApplication extends Application {
     @Override
     public void onCreate() {
         super.onCreate();
+        FreelineCore.init(this);
         LeakCanary.install(this);
diff --git a/build.gradle b/build.gradle
index 80e4381..97a96cd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,6 +15,7 @@ buildscript {
         classpath 'com.android.tools.build:gradle:2.2.0-beta1'
         classpath 'com.tencent.bugly:symtabfileuploader:1.3.9'
         classpath 'com.githang:fir:0.1.1'
+        classpath 'com.antfortune.freeline:gradle:0.5.2'
     }
 }

init error

PS D:\Github\freeline\sample> ./gradlew initFreeline --stacktrace
Incremental java compilation is an incubating feature.
find variant normalDebug start hack process...
sample merge resources task not found.
ThirdParty merge resources task not found.
variant normalMonkey is not debug, skip hack process.
variant normalRelease is not debug, skip hack process.
find variant developDebug start hack process...
sample merge resources task not found.
ThirdParty merge resources task not found.
variant developMonkey is not debug, skip hack process.
variant developRelease is not debug, skip hack process.
:initFreeline
Freeline init process start...
Downloading lastest release from https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip
Please wait a minute...
[get] Getting: https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip
[get] To: D:\Github\freeline\sample\freeline.zip.tmp
[get] https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip moved to https://github-cloud.s3.amazonaws.com/releases/64864962/00b3e48a-6aee-11e6-9f70-d7212f834403.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20160825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20160825T103733Z&X-Amz-Expires=300&X-Amz-Signature=8c770a5628c0bd22399e7f404ea4ef30e986f2a27545b41c87b265291e361baf&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dfreeline-v0.5.3-1608251800.zip&response-content-type=application%2Foctet-stream
[get] Error getting https://github.com/alibaba/freeline/releases/download/v0.5.3/freeline-v0.5.3-1608251800.zip to D:\Github\freeline\sample\freeline.zip.tmp
:initFreeline FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':initFreeline'.

    java.net.ConnectException: Connection timed out: connect

  • Try:
    Run with --info or --debug option to get more log output.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':initFreeline'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
    at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
    Caused by: : java.net.ConnectException: Connection timed out: connect
    at org.apache.tools.ant.taskdefs.Get.execute(Get.java:146)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at com.antfortune.freeline.FreelineInitializer.initFreeline(FreelineInitializer.groovy:40)
    at com.antfortune.freeline.FreelineInitializer$initFreeline.call(Unknown Source)
    at com.antfortune.freeline.FreelinePlugin$_apply_closure1.doCall(FreelinePlugin.groovy:19)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:554)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:535)
    at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:77)
    at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:73)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 60 more
    Caused by: java.net.ConnectException: Connection timed out: connect
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:690)
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:715)
    at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:606)
    at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:596)

BUILD FAILED

Task 'initFreeline' not found in root project 'MyApplication'.

我自己创建了一个AS的项目,进行相关配置以后,运行gradlew initFreeline -Pmirror 出现错误, 错误如下:
E:\mywork\MyApplication>gradlew initFreeline -Pmirror
Incremental java compilation is an incubating feature.

FAILURE: Build failed with an exception.

  • What went wrong:
    Task 'initFreeline' not found in root project 'MyApplication'.
  • Try:
    Run gradlew tasks to get a list of available tasks. Run with --stacktrace option
    to get the stack trace. Run with -
    -info
    or -
    -debug
    option to get more log output.

BUILD FAILED

配置minSdkVersion 21,由于默认的编译不会merge dex,用freeline存在问题

P.S: 除去这个问题,目前我们引入我们的项目速度非常的快!业界良心!

这个问题的原因是, 之前参考官方multidex文档 ,在开发时进行编译加速的配置,因此我们的配置类似与官方的情况:

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
          ...
    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                                                 'proguard-rules.pro'
        }
    }
}
dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

而freeline在上面 flavor-dev的情况下增量编译会出现问题。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.