Android 关于使用阿里Freeline遇到的问题

关于freeline:Freeline - Android平台上的秒级编译方案

freeline github地址:https://github.com/alibaba/freeline

使用freeline之后,从30分钟变到了30秒,谢谢阿里的技术。

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);
    }
}

4.能够正常编译,但是打开应用程序崩

在主Module的build.gradle中配置freeline :

freeline {
    applicationProxy false
}

另外,检查手机是否设置了代理,如果设置了,需要去掉。
在Application类中加入:

public class YourApplication extends Application {

    public onCreate() {
         super.onCreate();
         FreelineCore.init(this);
    }
}

5.install apk to device failed

排查方法:

  • 换成系统5.0以上的设备
  • 删除手机上的应用程序,进行一次全量编译(python freeline.py -f)
  • clean项目(gradlew clean),进行全量编译(python freeline.py -f)

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"
                                >

注意事项

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

猜你喜欢

转载自blog.csdn.net/wangjiang_qianmo/article/details/53510332
今日推荐