(4.6.11.10)FreeLine集成方法

来源:互联网 发布:new3ds内录软件 编辑:程序博客网 时间:2024/06/14 10:16

为什么使用freeline—-随时可以切换常规全量编译和增量编译
全量编译:重新构建整个app,时间上和默认的as编译是一样的
增量编译:使用freeline的编译方式,时间很快

Freeline支持的增量编译场景

这里写图片描述

一、 确认python环境,如果没有请自行安装

建议2.7+版本
可以通过 cmd下的 python查看当前python版本号

二、集成Freeline

项目的build.gradle中添加

dependencies {          classpath 'com.antfortune.freeline:gradle:0.8.3'        }

app的build.gradle中添加

apply plugin: 'com.antfortune.freeline'android {    freeline {        hack true        productFlavor 'dev'   //多渠道打包时加入此项        applicationProxy false    }}

Applincation的 onCreate()中添加

 FreelineCore.init(this);

三、初始化 freeline环境

  1. 打开命令行,cd进入到项目的根目录
  2. 运行 gradlew initFreeline -Pmirror,会从国内镜像开始初始化freeline环境,期间可能持续几分钟,最终会提示完成

四、安装插件

File->Settings->plugins->搜索Freeline即可,安装后重启,会多两个地方
这里写图片描述
这里写图片描述

五、使用

第一次使用freeline的时候,clean下项目,同时清除下原有的安装包

  • 原有的as自带编译正常还能使用

  • 可以点击freeline的小按钮,就是进行freeline的增量编译方式了(其实就是“python freeline.py ”命令的快捷键)

  • 在freeline命令窗口

    • python freeline.py -f 强制进行全量编译并安装apk
    • python freeline.py 编译并安装apk

注意事项:
1. 第一次编译与没有使用freeline之前的编译时间是一样的,耐心等待就是了。第一次使用全量编译(python freeline.py -f),但在全量编译前最好clean一下(gradlew clean),以后的编译使用python freeline.py就行了。
2. 如果设备上安装的不是使用freeline编译打包的程序,请先卸载,否则会无法安装。ps:后续使用freeline编译打包安装完,可能不会自动打开应用程序。
3. 不支持删除res/values资源,否则可能导致 aapt 编译出错。
4. 不支持Kotlin/Groovy/Scala语言

六、常见问题

1.Python版本问题

目前支持python2.0版本,不支持3.0版本。python2.7.2下载地
址:https://www.python.org/downloads/。

2.productFlavors问题

在主Module的build.gradle中配置productFlavors,例如:

  productFlavors {        appstore {            applicationId 'your package name'        }    }    freeline {        hack true        productFlavor 'appstore'        applicationProxy false    }

3.could not find class……问题

在Application类中的onCreate()方法中添加FreelineCore.init(this)方法。

public class YourApplication extends Application {    public onCreate() {         super.onCreate();         FreelineCore.init(this);    }}

5.install apk to device failed

换成系统5.0以上的设备

6.连接不到设备

官方github上的解答:
-[问题排查] Freeline “try to connect device/ connect_device_task failed.” #152

排查方法如下(建议配合使用Python freeline.py -d):1.确定FreelineCore.init(this);加入到Application类中,且在onCreate()下的第一行,不要根据是否在主进程做特殊处理,否则可能导致FreelineService无法正常启动;[Freeline 0.7.0+开始,默认开启了Application替换,这条可以不用检查]2.确定FreelineService以及freeline相关组件是否正常merge到最终的minifest中,最终的manifest路径在${module}/build/intermediates/manifests中;3.确定python freeline.py -v与定义在build.gradle中的freeline的版本是否一致;4.确定是否刚刚执行了清空app数据的操作,freeline缓存数据在/data/data路径,清空app数据也会导致连接不上的问题(执行freeline命令时,通常会有句明显的日志反复出现:server result is -1);5.确定是否开启了网络代理导致127.0.0.1被重定向?* 6.一定要先使用freeline来打全量包,再来进行增量,否则也会出现这个问题。即,freeline的全量编译与Android-studio自带的RUN会存在冲突。*当上述问题都无法解决时,有个终极的解决方案就是重启试试…不少人通过重启顺利解决连接不上的问题。。。后续会通过自动化的方式,尽量避免手工排查上述问题。有遇见相关的问题可以具体描述一下,在issue中进行回复,可以帮忙排查。

连接不到设备,重点排查第5,6步骤。另外还需在AndroidManifest文件中添加:

<application        android:debuggable="true"                                >
0 0