flutter ios打包_使用 Travis CI 为 Flutter 项目打包 Android/iOS 应用

Travis CI 构建

Building Flutter APKs and IPAs on Travis 这篇文章详细介绍了如何在 Travis CI 上为 Flutter 项目打包 Android/iOS 应用,不过实际构建时存在几个问题,原文中的 .travis.yml 配置如下:

matrix:include:- os: linuxlanguage: androidlicenses:- 'android-sdk-preview-license-.+'- 'android-sdk-license-.+'- 'google-gdk-license-.+'android:components:- tools- platform-tools- build-tools-25.0.3- android-25- sys-img-armeabi-v7a-google_apis-25- extra-android-m2repository- extra-google-m2repository- extra-google-android-supportjdk: oraclejdk8sudo: falseaddons:apt:# Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18sources:- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong versionpackages:- libstdc++6- fonts-droidbefore_script:- wget http://services.gradle.org/distributions/gradle-3.5-bin.zip- unzip -qq gradle-3.5-bin.zip- export GRADLE_HOME=$PWD/gradle-3.5- export PATH=$GRADLE_HOME/bin:$PATH- git clone https://github.com/flutter/flutter.git -b alpha --depth 1script:- ./flutter/bin/flutter -v build apk- os: osxlanguage: genericosx_image: xcode8.3before_script:- pip install six- brew update- brew install --HEAD libimobiledevice- brew install ideviceinstaller- brew install ios-deploy- git clone https://github.com/flutter/flutter.git -b alpha --depth 1script:- ./flutter/bin/flutter -v build ios --no-codesigncache:directories:- $HOME/.pub-cache

Android

wget - 403 Forbidden

这个错误发生在执行 wget http://services.gradle.org/distributions/gradle-3.5-bin.zip 的时候,把 gradle 的下载路径替换成 https 即可。

Remote branch alpha not found in upstream origin

这个错误发生在下载 Flutter 代码的阶段,原文中的配置会下载 Flutteralpha 分支代码,但是目前 Flutter 的仓库已经没有 alpha 分支,切换到 stable 分支即可,即:git clone https://github.com/flutter/flutter.git -b stable --depth 1

Failed to install the following Android SDK packages as some licences have not been accepted

详细错误信息如下:

[        ] > Failed to install the following Android SDK packages as somelicences have not been accepted.[        ]      build-tools;28.0.3 Android SDK Build-Tools 28.0.3[        ]      platforms;android-29 Android SDK Platform 29[        ]   To build this project, accept the SDK license agreements andinstall the missing components using the Android Studio SDK Manager.

这个错误是由于没有同意 Android SDK 的许可证协议,在 before_script 中加入如下配置即可:

yes | sdkmanager "platforms;android-29"
yes | sdkmanager "build-tools;28.0.3"

iOS

pip: command not found

这个错误在执行 pip install six 时遇到,经过实际验证构建 iOS 应用时并不需要此行配置,所以删掉即可。

Xcode 11.0 or greater is required to develop for iOS

原文中的配置使用的是 Xcode 8.3,最后打包时会提示此错误,将 osx_image 设置为 xcode11 即可。

最后完整可用的 .travis.yml 配置如下:

matrix:include:- os: linuxlanguage: androidlicenses:- 'android-sdk-preview-license-.+'- 'android-sdk-license-.+'- 'google-gdk-license-.+'android:components:- tools- platform-tools- build-tools-25.0.3- android-25- sys-img-armeabi-v7a-google_apis-25- extra-android-m2repository- extra-google-m2repository- extra-google-android-supportjdk: oraclejdk8sudo: falseaddons:apt:# Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18sources:- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong versionpackages:- libstdc++6- fonts-droidbefore_script:- wget https://services.gradle.org/distributions/gradle-3.5-bin.zip- unzip -qq gradle-3.5-bin.zip- export GRADLE_HOME=$PWD/gradle-3.5- export PATH=$GRADLE_HOME/bin:$PATH- git clone https://github.com/flutter/flutter.git -b stable --depth 1- yes | sdkmanager "platforms;android-29"- yes | sdkmanager "build-tools;28.0.3"script:- ./flutter/bin/flutter -v build apk- os: osxlanguage: genericosx_image: xcode11before_script:- brew update- brew install --HEAD libimobiledevice- brew install ideviceinstaller- brew install ios-deploy- git clone https://github.com/flutter/flutter.git -b stable --depth 1script:- ./flutter/bin/flutter -v build ios --no-codesigncache:directories:- $HOME/.pub-cache

完整的代码可参考 flutter-travis-build-demo。

Codemagic

最后推荐 Codemagic 这个服务,提供云端打包 Flutter 应用的功能,省去了 Travis CI 配置的步骤,免费用户每月有500分钟的额度来执行构建。

参考:

  • Building Flutter APKs and IPAs on Travis
  • Failed to install the following Android SDK packages as some licences have not been accepted in jitpack

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机学硕专业课可以自学吗,考研专业课怎么考?高效复习法三条就够!

原标题:考研专业课怎么考?高效复习法三条就够!充足的睡眠可以使你一天精力旺盛,状态在线。好的方法可以使学习更加有效,今天从考研专业课怎么考出发,总结三条高效复习法,帮助大家有效进行考研备…

python queue查询空_【Python】多线程爬虫案例

爬取博客园文章列表爬取博客园文章列表,假设页面的URL是https://www.cnblogs.com/loaderman 要求:使用requests获取页面信息,用XPath / re 做数据提取 获取每个博客里的标题,描述,链接地址,日期等保存到 js…

美国计算机科学联赛获奖,【竞赛获奖】西安高新一中国际班学子在2018-2019美国计算机科学联赛 (ACSL)积分赛中创造历史!...

西安高新一中国际班学子在2018-2019美国计算机科学联赛(ACSL)积分赛中创造历史2018-2019美国计算机科学联赛 (ACSL)积分赛喜讯传来!此次竞赛共有来自全国109所重点中学和国际学校的近500同学参赛。在此次竞赛中,中国赛区共有17名同学获得个人最高分奖&am…

5单个编译总会编译全部_JDBC【5】 JDBC预编译和拼接Sql对比

在jdbc中,有三种方式执行sql,分别是使用Statement(sql拼接),PreparedStatement(预编译),还有一种CallableStatement(存储过程),在这里我就不介绍CallableStatement了,我们来看看Statement与PreparedStateme…

web html介绍笔记,WEB 之 HTML 系列笔记

WEB简介及浏览器内核网页主要由文字、图像和超链接等元素构成。当然,除了这些元素,网页中还可以包含音频、视频以及Flash等。浏览器的内核负责读取网页内容, 整理讯息, 计算网页的显示方式并显示页面。浏览器内核备注IETridentIE、猎豹安全、360极速浏览…

计算机怎样旋转桌面,win7电脑怎么设置翻转屏幕

在深度win7之中使用投影仪或者是一些外置视频输出设备的时候,用户可能会有翻转屏幕的需求。那么大家知道win7电脑怎么设置翻转屏幕吗?今天学习啦小编与大家分享下win7电脑设置翻转屏幕的具体操作步骤,有需要的朋友不妨了解下。win7电脑设置翻转屏幕方法…

从入门到精通 pdf_【推荐】铅笔素描从入门到精通pdf|素描基础教程电子书下载!...

铅笔素描从入门到精通pdf|素描基础教程电子书下载!铅笔素描从入门到精通pdf|素描基础教程电子书下载!铅笔素描从入门到精通pdf|素描基础教程电子书下载!如果你的基础太薄弱,不建议自己瞎摸索,你可以关注一下公众号&…

计算机科学和软件工程区别,计算机科学和软件工程的区别

澳洲热门 IT 计算机专业,许多学校对于专业也有不同的细分以及课程安排。今天就来单独解析下 computer science 计算机科学或 Software Engineering 软件工程,两个专业的区别 ?Computer Science 侧重于计算机的基础,包括算法,计算…

参数估计_状态估计的基本概念(1)参数估计问题

(1)参数估计问题定义如果一个系统的参数随时间而改变,那么称它为“时变的参数”;如果系统的参数不随时间而改变,那么称它为“时不变的参数”。对参数 (时不变)的估计问题定义如下:其…

郑州财税金融职业学院的计算机考试,郑州财税金融职业学院考试流程

考试是教学过程中的一个重要环节,为了考试工作的顺利进行,考试的考务管理、流程及组织工作至关重要。课程考核方式由学期末教务处发布新学期教学工作安排,确定教学计划及下学期课程考核方式。一、命题1.命题工作由院系部主任负责组织。凡建立…

python井字棋游戏人机对战_用Python做一个井字棋小游戏

井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜。今天就用Python编写一个井字棋小游戏,与电脑对战。程序执行画面如下图所示:程序提供了两种人工智能选择,一个是强人工智能另一个是…

计算机管理内默认共享,关于Windows的默认共享介绍

C:\Documents and Settings\Administrator>net share ?此命令的语法是:NET SHAREsharenamesharenamedrive:path [/GRANT:user,[READ | CHANGE | FULL]][/USERS:number | /UNLIMITED][/REMARK:"text"][/CACHE:Manual | Documents| Programs | BranchCache | None]…

中绘制折线_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图

今天咱们还是接着上次的话题,继续和大家聊聊关于Python绘图相关的东东哦,上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法,今天呢,咱们再聊点的新的东东哦,还是和大家继续深耕Pyth…

计算机病毒的危害主要体现于对计算机系统的信息破坏和,2014年中央电大专科信息技术应用理论题.doc...

一村一《信息技术应用》复习资料(注:仅提供理论题30分,操作题请大家按照下发的自测光盘综合练习多做多练,考试范围难度差不多)第1套一、单选题1.某单位的人事档案管理程序属于(应用软件)2.微机的核心部件是(微处理器 )3.内存储器根据工作方式的不同可以分…

seo vue 动态路由_VUE项目SEO问题的解决

1. SEOSEO(搜索引擎优化):搜索引擎优化的中文翻译。使用搜索引擎的规则来提高网站的自然排名相关的搜索引擎。当一个网络爬虫抓取网页的内容,它需要分析的内容页面。要点如下:阅读内容的关键字和描述元标签。抓取和分析基于语义html标记的内容。的影响一个网站,作为一个整体使用…

计算机电缆对绞节距,DJYPVP阻燃计算机电缆32/0.2芯数直径

电缆敷设在既有正压力作用又有拉力作用的场合(如水中、垂直竖井或落差较大的土壤中),应选用具有内钢丝铠装的结构型。外护套外护套是保护电线电缆的绝缘层防止环境因素侵蚀的结构部分。外护套的主要作用是提高电线电缆的机械强度、防化学腐蚀、防潮、防水浸人、阻止…

php 监听端口数据客户端ip_PHP做端口监听示例代码

1,PHP端口监听之服务器端复制代码 代码示例:// Server// 设置错误处理error_reporting(E_ALL);// 设置运行时间set_time_limit(0);// 起用缓冲ob_implicit_flush();$ip "127.0.0.1"; // IP地址$port 1000; // 端口号$socket socket_create(AF_INET, SO…

软件测试条件组合覆盖三角形,软件测试三角形问题(覆盖测试)

软件测试三角形问题(覆盖测试) (9页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分成绩辽宁工程技术大学上机实验报吿课程名称软件测试与评估实验题目基于覆盖测试技术院系软件学院专业软件工…

flog和flag_FLAG:写作,英语和持续学习

新年计划一:日更千字只差一个月就可以完成日更100字的任务了。日更百字对我来说已经不再是一种负担和任务,而是每天碎碎念的日记,解压的方式。但是我知道这些碎碎念的日记本质上是没有用的。既没有信息增量,也没有变现价值&#x…

设备dp信号测试软件,DP信号完整性测试,信号质量测试

DP信号完整性测试,信号质量测试在视频和音频内容通过DP link发送并显示在显示屏上之前,在DPsource和sink(可能还有分支装置)之间已经进行了大量通信。DP主数据Link中的多媒体内容传输与数据link的类似程度高于DVI或HDMI。另外连接之前的握手也比纯插件要…