注意:由于系统限制问题,Docker暂时只能构建Android app。
特别提示
文档已经说了手动构建教程:传送门,有些没基础的可能会有点困难,或者想偷懒,这里就提供一个快速构建方法,不需要自己搭建环境即可打包。
且由于墙的关系,尽量使用国外的服务器进行打包操作,VPS
和独立服务器均可,直接在转码服务器上打包也可以,只限制CentOS 7
、Debian
、Ubuntu
系统。
配置app步骤
1、修改APP名称
修改android/app/src/main/AndroidManifest
文件,大致如下:
#找到中间位置,即android:label一行,此处为app名称,自行修改
<application
...
android:label="flutter学习视频"
...
<activity
2、修改APP图标和其他图片
准备一个app
的图标,png
格式,命名icon.png
,覆盖到app
源码目录assets
文件夹即可。
还有app展示图
和app logo
修改,可前往该文档查看修改教程:横屏app点击查看,竖屏app点击查看。
接下来横屏app
,且只有横屏app
需要配置替换一个图片,即图集界面强制广告图片,路径assets/benad.jpg
,尺寸建议800x1164
。
3、修改APP其它信息
修改android/app/build.gradle
文件,大致如下:
#修改applicationId,为唯一的应用ID,一旦设置,后期就不能改了,更新app的时候,依然用这个ID
applicationId "com.moemv.flutter"
4、给app配置图片cdn加速
这里使用的cdn
会给你把app
所有封面,截图等全部转换成体积非常小,每张图大概10kb
左右的webp
,可以使app
图片加载极快,体验非常好。
首选,需要一个网络不错的vps
服务器,配置不是很需求,主要是网络好点,然后搭建图片cdn
加速,搭建教程:点击查看。
编辑lib/core/utils/helper.dart
文件,大致如下:
#横屏和竖屏app配置有区别,注意区分,且不要乱删东西,不然封面,截图都不会显示了
#竖屏app配置,image.efvcms.com为图片cdn域名,iqi360bytheway为图片cdn的apikey
String cdnUrl = 'https://image.efvcms.com/api?apikey=iqi360bytheway&url=' +
#横屏app配置,且有2个地方,iqi360bytheway为图片cdn的apikey
String cdnUrl =
'$cdn/api?apikey=iqi360bytheway&url=' + url + '&force=true';
String cdnUrl = '$cdn$url?apikey=iqi360bytheway&force=true';
5、配置app的基础信息
注意:对接期间,必须给EFV高级版域名和分离CMS域名添加ssl证书,开启https访问,不然app获取不了数据。
编辑lib/core/values/strings.dart
文件,大致如下:
#该参数为EFV高级版所绑定的域名地址,且必须使用ssl证书并开启https
const host = 'https://app.leimulamu.com';
#该参数为app检测的版本号,
const version = 230601;
#<仅竖屏app需配置>app标题
const title = "雷姆拉姆";
#该参数为EFV高级版所绑定的域名地址,不需要http://,只写域名,该选项仅横屏海报app存在
const emailRoot = 'app.leimulamu.com';
#<仅横屏app需配置>app的上传域名配置,即改成EFV高级版所绑定的域名地址
const uploadUrl = 'https://app.leimulamu.com/api2/uploads';
#<仅横屏app需配置>图片cdn域名配置,可搭建多个图片cdn加速,并设置多个,用户可在个人中心进行图片线路切换
const cdnUrls = [
'https://cdn1.efvcms.com',
'https://cdn2.efvcms.com',
'https://cdn3.efvcms.com'
];
图片cdn域名按照默认的格式,一行一个,自行删减,且都需要放在英文单引号中间,末尾需要用英文逗号结尾,最后一个域名可不用英文逗号,其它都要;如果只有一个图片cdn域名,可参考以下配置:
const cdnUrls = [
'https://cdn.efvcms.com'
];
注意这里的版本号是app
更新的配置,更新具体可参考:点击查看
6、配置app的api域名
该api
接口会从EFV
高级版读取全部信息,并缓存下来,然后会被app
读取,且并发和运行效率极高,可使app
读取越快,体验更好。
提示:如果你的服务器有限,api系统可以和图片cdn加速共用一个服务器。
首选,需要一个网络不错的vps
服务器,配置不是很需求,主要是网络好点,然后搭建api
系统,搭建教程:点击查看。
再编辑竖屏lib/app/data/provider/dio_provider.dart
或横屏lib/app/data/provider/api_dio.dart
文件,大致如下:
#该参数为app的api接口绑定的域名,且必须使用ssl证书并开启https
const baseUrl = 'https://m3u8.zhuanma.co/api/';
#该参数为EFV高级版的apikey,可在EFV高级版的转码设置获取
const apiKey = 'domybestth';
7、给app签名
提示:首次打包需要签名,更新打包的时候,直接用该签名的文件即可。
日后为了方便给用户更新app
,我们需要给app
签名,先使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#CentOS 7系统
yum install java-11-openjdk -y
#Debian、Ubuntu系统
apt update -y
apt install default-jre -y
然后使用命令签名:
keytool -genkey -v -keystore /root/upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
输入签名的密匙及其它相关信息,使用拼音就行了,最后问你是否正确的时候,你输入 是,再输入密匙确认即可。
提示:请保管好upload-keystore.jks文件,不然会影响以后的app更新操作。
最后会在我们的根目录/root
文件夹生成一个密匙文件upload-keystore.jks
。
接下来我们解压app
源码包,再将密匙文件upload-keystore.jks
存放到app
源码根目录。
然后编辑根目录android
文件夹中key.properties
文件,修改内容:
storePassword=efvcms
keyPassword=efvcms
keyAlias=upload
storeFile=/efvapp/upload-keystore.jks
efvcms
均为签名密匙,/efvapp/upload-keystore.jks
为密匙路径,即key.properties
文件在app
源码根目录的路径,别乱放就行。
8、给app配置google统计
先前往google
统计官网:点击进入,然后创建项目,名称随便填。
进去后,就可以看到添加应用提示,根据操作系统选择,比如我点击安卓图标,Android 软件包名称
为上面设置的applicationId
参数,如: com.moemv.flutter
,其它可选,自己看着办。
然后注册后,下载google-services.json
文件,丢到app
源码包的android/app
文件夹即可。
构建打包app
1、安装Docker
首先使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#CentOS 7、Debian、Ubuntu系统
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
2、开始构建
提示:在配置绝对没问题情况下,有时候会因为网络啥的问题而打包失败,可以重新运行打包命令;且有时候因为插件要升级导致打包失败的,可以联系我们
首先将修改好的app
源码上传到服务器,比如我app
源码路径为/opt/efvapp
,则在SSH
使用命令:
#竖屏app使用该命令
docker run -v /opt/efvapp:/efvapp moerats/efvapp:3.1
#横屏app使用该命令
docker run -v /opt/efvapp:/efvapp moerats/efvapp:3.3.3
注意-v
前面的/opt/efvapp
为源码路径,自行修改,其它不要动,该命令第一次运行时间比较长,等待即可,直到打包完成。
如果后面有修改app
参数的,可以重新执行上面的命令进行重新构建,第二次及以后的打包时间会大大缩短。
最后apk
文件在build/app/outputs/flutter-apk
文件夹,顺着源码找就行,共有3
个版本,都是针对不同的移动CPU
架构,一般可以直接用arm64-v8a
即可,具体架构说明:点击查看
然后接下来,需要相关设置就可以用,横屏海报app设置教程,竖屏海报app设置教程。