Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build failed with an exception #33

Closed
zeng1990java opened this issue Aug 27, 2016 · 14 comments
Closed

Build failed with an exception #33

zeng1990java opened this issue Aug 27, 2016 · 14 comments

Comments

@zeng1990java
Copy link

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.

@lomanyong
Copy link
Member

lomanyong commented Aug 27, 2016

@zeng1990java 项目中是否有指定的flavor呢?有的话需要配置一下..例如:

freeline {
    hack true
    productFlavor "dev"
}

@zeng1990java
Copy link
Author

有,
productFlavors {
fir {
}
}
没看懂你说要配置什么

@lomanyong
Copy link
Member

@zeng1990java 你们平时的打包命令是什么呢?比如如果是gradlew.bat assembleFirDebug的话,则flavor为Fir,则需要配置为:

freeline {
    hack true
    productFlavor "fir"
}

@zeng1990java
Copy link
Author

多谢,成功了,但是耗时还是一样的,看输出主要是install apk和clean build task和耗时很多,你看正常吗
[-][read_project_info_task] finished. in 4.9s
[-][generate_file_stat_task] finished. in 0.0s
[-][gradle_clean_build_task] finished. in 17.5s
[-][clean_all_cache_task] finished. in 0.0s
[-][install_apk_task] finished. in 15.5s
[-][build_base_resource_task] finished. in 0.5s
[-][generate_project_info_task] finished. in 0.0s

@lomanyong
Copy link
Member

@zeng1990java 你可以修改一下代码再执行一下python freeline.py看下。

freeline并不加速全量编译,主要是加速增量编译。在增量编译前,需要有一个全量编译的底包作为基线包。经过一次全量编译后,再执行python freeline.py就会进行增量编译了。如果遇见build.gradle以及AndroidManifest.xml之类的修改,freeline会自动执行全量编译重新打基线包。

@zeng1990java
Copy link
Author

zxbdeMBP:FreelineDemo zxb$ python freeline.py
[WARNING] check sync status failed, a clean build will be automatically executed.
[-][read_project_info_task] finished. in 4.6s
[-][generate_file_stat_task] finished. in 0.0s
[-][gradle_clean_build_task] finished. in 9.6s
[-][clean_all_cache_task] finished. in 0.0s
[-][install_apk_task] finished. in 13.9s
[-][build_base_resource_task] finished. in 0.4s
[-][generate_project_info_task] finished. in 0.0s
[DEBUG] --------------------------------------------------------
[DEBUG] Prepare tasks time: 0.3s
[DEBUG] Task engine running time: 28.1s
[DEBUG] Total time: 28.4s
[DEBUG] --------------------------------------------------------
新建了一个只有一个MainActiivty和一个Application的工程,不管有没有改代码,每次的执行结果基本都要28秒多,不用freeline的时候也是这么久,不知道是不是使用的姿势不对

@lomanyong
Copy link
Member

@zeng1990java 看日志提示猜测你的目标设备上装了多个依赖freeline的app,这个会导致基线对齐失败重新打全量包。估计目标设备上还安装了freeline sample这个app,可以卸载掉后重新试试看。

@zeng1990java
Copy link
Author

对,我把其他使用了freeline的Demo项目删除后就是可以了,非常感谢你的解答 @lomanyong

@charvenhe
Copy link
Member

@zeng1990java 方便的话在你们的项目试试,看看增量模式下,资源或代码修改耗时多少,跟你们原来相比如何

@zeng1990java
Copy link
Author

zeng1990java commented Aug 28, 2016

@charvenhe 集成了,小改动的话2秒以内。但是好像不支持打包的时候改包文件名称,需要注释掉如下代码

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            def outputDirPath = project.hasProperty('outputPath') ? outputPath : outputFile.parent
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName
                if(project.hasProperty('outputPath')){
                    // 输出apk名称为Merchant_v1.0_SoftwareUpdate_release.apk
                    fileName = "Merchant_v${defaultConfig.versionName}_${variant.productFlavors[0].name}_${variant.buildType.name}.apk"
                }else{
                    // 输出apk名称为Merchant_v1.0_2015-01-15_SoftwareUpdate_release.apk
                    fileName = "Merchant_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}_${variant.buildType.name}.apk"
                }

                output.outputFile = new File(outputDirPath, fileName)
            }
        }
    }

@charvenhe
Copy link
Member

charvenhe commented Aug 28, 2016

@zeng1990java ,apk path 你可以通过DSL指定

freeline {
...
apkPath "your apk path"
}

@zeng1990java
Copy link
Author

可以了,多谢 @charvenhe

@charvenhe
Copy link
Member

@zeng1990java 不客气,可以在你们项目多试试,资源增量也试试看看有没问题

@zeng1990java
Copy link
Author

@charvenhe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants