最友好的文档: https://www.freelinebuild.com/docs/zh_cn/###
- 主 app 模块的 gradle:
apply plugin: 'com.antfortune.freeline'
android {
...
freeline {
// hack true //已经废弃
// productFlavor 'online' // 如果有多个,则选择一个设置,否则gradle 会报错提示
// applicationProxy false //application代理,默认开启 若app启动就闪退,class not found等错误可通过此设置改变
// 具体配置参考:https://github.com/alibaba/freeline/wiki/Freeline-DSL-References
}
}
- Project 的 gradle:
dependencies {
...
classpath 'com.antfortune.freeline:gradle:0.8.5'//版本按照官网去更新最新的
}
- Application 中,初始化 Freeline:
@Override
public void onCreate() {
super.onCreate();
FreelineCore.init(this);
}
* Python 2.7 (当前只支持此版本)
* Freeline plugin (studio 中搜索安装即可)
- 下载Freeline相关工具 在终端 Terminal 中输入:
- windows:
gradlew initFreeline -Pmirror
- mac/linux:
./gradlew initFreeline -Pmirror
稍等片刻,就会在项目中多出Freeline相关的目录
- 确定FreelineCore.init(this);加入到Application类中,且在onCreate()下的第一行,不要根据是否在主进程做特殊处理,否则可能导致FreelineService无法正常启动;[Freeline 0.7.0+开始,默认开启了Application替换,这条可以不用检查]
- 确定FreelineService以及freeline相关组件是否正常merge到最终的minifest中,最终的manifest路径在${module}/build/intermediates/manifests中;
- 确定python freeline.py -v与定义在build.gradle中的freeline的版本是否一致;
- 确定是否刚刚执行了清空app数据的操作,freeline缓存数据在/data/data路径,清空app数据也会导致连接不上的问题(执行freeline命令时,通常会有句明显的日志反复出现:server result is -1);
- 确定是否开启了网络代理导致127.0.0.1被重定向?
- 一定要先使用freeline来打全量包,再来进行增量,否则也会出现这个问题。即,freeline的全量编译与android-studio自带的RUN会存在冲突。
原因: 因为python系统使用的默认编码为ascii编码,但是代码运行中的操作的字符不属于ascii范围
解决: 在 android_tools.py 中 添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
原因: app里的缓存在重新安装的时候没有更新
解决: 通常卸载后再安装可以解决