xuexiangjys / XUpdateService

Use Spring Boot easy build, Gradle build, and provide update service for XUpdate.(使用Spring Boot简易搭建,Gradle构建,为XUpdate提供更新服务)
https://github.com/xuexiangjys/XUpdate/wiki
Apache License 2.0
219 stars 68 forks source link

个人整理的部署指南 #11

Open silentzone opened 4 years ago

silentzone commented 4 years ago

配置xupdate-services 工程和 xupdate-management UI界面

git clone git@github.com:xuexiangjys/XUpdateService.git

1 用intellij引入工程 ,大部分操作作者都说明的很清楚了,可以看文档。

2 修改数据库连接: db-mysql.properties

  修改启动端口等  application.yml

3 现在通过sql目录中 xupdate.sql 创建表,可以先在mysql 中创建xupdate的库。

3 更新依赖(我通过intellij自动引入的,不知道更新命令)

4 直接点run启动,这里没有找到springboot工程的ui,但是通过postman可以调用到接口,很顺利。

5 引入 https://github.com/xuexiangjys/xupdate-management vue管理界面工程

git clone 到本地,然后npm install  

npm run preview 预览工程,也可以将dist目录放入tomcat或者iis中,设置index.html为首页就可以看到管理界面,点击登陆可以直接连上你之前的 XUpdateService 上1111接口来访问了,关于用户密码可以再mysql中查看。

6.测试了一下 xupdate-services 界面尝试登陆和上传没什么问题,就可以部署到服务器上了。

7.打jar包,我跟作者不一样的是使用的是maven命令 :clean package

图片

这里需要注意的是 pom.xml中 org.apache.maven.plugins 中 exclude需要注释掉不然打出来的包运行会报 Cannot determine embedded database driver class for database type NONE,这个错误折腾了一天,尝试了作者的gradle打包也没有成功。后来也是请教了熟悉springboot的同事

下面就是修改之后的代码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <excludes>
            <!--<exclude>*.txt</exclude>-->
            <!--<exclude>*.xml</exclude>-->
            <!--<exclude>*.properties</exclude>-->
            <!--<exclude>*.yml</exclude>-->
        </excludes>
    </configuration>
</plugin>

8.上传至服务器 ,创建start.sh来启动

java -jar xupdate.jar > ./log.txt 

9 服务器上安装jdk 和 mysql 可以见这里的安装方法 https://www.cnblogs.com/toutou/p/9670395.html

ps .自己遇到额外的问题,react-native 突然又不能自动更新 bundle包,找了根据问题尝试了adb daemon 端口检查关闭重启,然并卵,后来通过启动debuger 日志看到  Metro Bundler 8081 连接不上, 解决设置 解决

集成 xupdate 到android 工程中

1.可以先下载作者的 https://github.com/xuexiangjys/XUpdate工程在As中打开,修改 mUpdateUrl 为之前服务器的地址。

2运行起来尝试一下下载,成功后在把 bulde.gradle 文件和你自己工程的对比合并一下,按照说明,配置自己的bulde.gradle

3 在启动类 MainApplication 中添加

@Override public void onCreate() { super.onCreate(); XUtil.init(this); XUtil.debug(true); initXHttp(); initOKHttpUtils(); initUpdate(); }

private void initUpdate() { / XUpdate.newBuild(this).updateParser(new XUpdateServiceParser());/ XUpdate.get() .debug(true) // .isWifiOnly(true) //默认设置只在wifi下检查版本更新 // .isGet(false) //默认设置使用get请求检查版本 .isAutoMode(false) //默认设置非自动模式,可根据具体使用配置 .param("versionCode", UpdateUtils.getVersionCode(this)) //设置默认公共请求参数 UpdateUtils.getVersionCode(this) .param("appKey",getPackageName()) //.param("appKey", getPackageName()) .setOnUpdateFailureListener(new OnUpdateFailureListener() { //设置版本更新出错的监听 @Override public void onFailure(UpdateError error) { if (error.getCode() != CHECK_NO_NEW_VERSION) { //对不同错误进行处理 // ToastUtils.toast(error.toString()); Log.d("mainAplication",error.toString()); } } }) .supportSilentInstall(true) //设置是否支持静默安装,默认是true .setIUpdateHttpService(new OKHttpUpdateHttpService()) //这个必须设置!实现网络请求功能。 .init(this); //这个必须初始化

} private void initXHttp() { XHttpSDK.init(this); //初始化网络请求框架,必须首先执行 XHttpSDK.debug("XHttp"); //需要调试的时候执行 XHttp.getInstance().setTimeout(20000); } private void initOKHttpUtils() { OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(20000L, TimeUnit.MILLISECONDS) .readTimeout(20000L, TimeUnit.MILLISECONDS) .build(); OkHttpUtils.initClient(okHttpClient); }

4 会有很多报错,和找不到类,所以我又去把作者的xupdate-lib类加载了进来

implementation project(':xupdate-lib')
  1. 然后实现 OKHttpUpdateHttpService XHttpUpdateHttpService 这些wiki当中说的。

集成这些模块的时候,我遇到两个问题,一个是 点击更新总是提示版本已经是最新,首先通过日志分析看不出啥问题,后来断点发现这里是工程默认调用的下载数据解析类对比不了版本号,修改为

XUpdate.newBuild(getCurrentActivity())
 .updateParser(new XUpdateServiceParser())

还有一些问题就再运行时,有一些Android组件库可能不兼容导致的运行时报错 ,需要用androidx替换 android.support.v4 相关的xml标签,可以根据具体错误百度一下。 最后上一张更新成功的图,有问题可以再github @我,祝大家都成功上线。

图片

ps 遇到的额外问题,作者的xupdate 工程导入到低版本 as中启动不了,提示当前gradle版本太低了,修改了版本号还是不行,后来估计是daemon的问题。升级了as 再启动工程OK了

CollinsWalker commented 4 years ago

请问那个安装那个Vue.js版本的是进入目录后执行npm install吗?

silentzone commented 4 years ago

是的 进入到目录执行

CollinsWalker commented 4 years ago

是的 进入到目录执行

你好老哥,能否给个联系方式,我这边一直装不上vue.js版本的,求指点

CollinsWalker commented 4 years ago

太难了,求老哥指点搭建啊

CollinsWalker commented 4 years ago

配置xupdate-services 工程和 xupdate-management UI界面

git clone git@github.com:xuexiangjys/XUpdateService.git

1 用intellij引入工程 ,大部分操作作者都说明的很清楚了,可以看文档。

2 修改数据库连接: db-mysql.properties

  修改启动端口等  application.yml

3 现在通过sql目录中 xupdate.sql 创建表,可以先在mysql 中创建xupdate的库。

3 更新依赖(我通过intellij自动引入的,不知道更新命令)

4 直接点run启动,这里没有找到springboot工程的ui,但是通过postman可以调用到接口,很顺利。

5 引入 https://github.com/xuexiangjys/xupdate-management vue管理界面工程

git clone 到本地,然后npm install  

npm run preview 预览工程,也可以将dist目录放入tomcat或者iis中,设置index.html为首页就可以看到管理界面,点击登陆可以直接连上你之前的 XUpdateService 上1111接口来访问了,关于用户密码可以再mysql中查看。

6.测试了一下 xupdate-services 界面尝试登陆和上传没什么问题,就可以部署到服务器上了。

7.打jar包,我跟作者不一样的是使用的是maven命令 :clean package

图片

这里需要注意的是 pom.xml中 org.apache.maven.plugins 中 exclude需要注释掉不然打出来的包运行会报 Cannot determine embedded database driver class for database type NONE,这个错误折腾了一天,尝试了作者的gradle打包也没有成功。后来也是请教了熟悉springboot的同事

下面就是修改之后的代码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <excludes>
            <!--<exclude>*.txt</exclude>-->
            <!--<exclude>*.xml</exclude>-->
            <!--<exclude>*.properties</exclude>-->
            <!--<exclude>*.yml</exclude>-->
        </excludes>
    </configuration>
</plugin>

8.上传至服务器 ,创建start.sh来启动

java -jar xupdate.jar > ./log.txt 

9 服务器上安装jdk 和 mysql 可以见这里的安装方法 https://www.cnblogs.com/toutou/p/9670395.html

ps .自己遇到额外的问题,react-native 突然又不能自动更新 bundle包,找了根据问题尝试了adb daemon 端口检查关闭重启,然并卵,后来通过启动debuger 日志看到  Metro Bundler 8081 连接不上, 解决设置 解决

集成 xupdate 到android 工程中

1.可以先下载作者的 https://github.com/xuexiangjys/XUpdate工程在As中打开,修改 mUpdateUrl 为之前服务器的地址。

2运行起来尝试一下下载,成功后在把 bulde.gradle 文件和你自己工程的对比合并一下,按照说明,配置自己的bulde.gradle

3 在启动类 MainApplication 中添加

@override public void onCreate() { super.onCreate(); XUtil.init(this); XUtil.debug(true); initXHttp(); initOKHttpUtils(); initUpdate(); } private void initUpdate() { / XUpdate.newBuild(this).updateParser(new XUpdateServiceParser());/ XUpdate.get() .debug(true) // .isWifiOnly(true) //默认设置只在wifi下检查版本更新 // .isGet(false) //默认设置使用get请求检查版本 .isAutoMode(false) //默认设置非自动模式,可根据具体使用配置 .param("versionCode", UpdateUtils.getVersionCode(this)) //设置默认公共请求参数 UpdateUtils.getVersionCode(this) .param("appKey",getPackageName()) //.param("appKey", getPackageName()) .setOnUpdateFailureListener(new OnUpdateFailureListener() { //设置版本更新出错的监听 @override public void onFailure(UpdateError error) { if (error.getCode() != CHECK_NO_NEW_VERSION) { //对不同错误进行处理 // ToastUtils.toast(error.toString()); Log.d("mainAplication",error.toString()); } } }) .supportSilentInstall(true) //设置是否支持静默安装,默认是true .setIUpdateHttpService(new OKHttpUpdateHttpService()) //这个必须设置!实现网络请求功能。 .init(this); //这个必须初始化

} private void initXHttp() { XHttpSDK.init(this); //初始化网络请求框架,必须首先执行 XHttpSDK.debug("XHttp"); //需要调试的时候执行 XHttp.getInstance().setTimeout(20000); } private void initOKHttpUtils() { OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(20000L, TimeUnit.MILLISECONDS) .readTimeout(20000L, TimeUnit.MILLISECONDS) .build(); OkHttpUtils.initClient(okHttpClient); }

4 会有很多报错,和找不到类,所以我又去把作者的xupdate-lib类加载了进来

implementation project(':xupdate-lib')
  1. 然后实现 OKHttpUpdateHttpService XHttpUpdateHttpService 这些wiki当中说的。

集成这些模块的时候,我遇到两个问题,一个是 点击更新总是提示版本已经是最新,首先通过日志分析看不出啥问题,后来断点发现这里是工程默认调用的下载数据解析类对比不了版本号,修改为

XUpdate.newBuild(getCurrentActivity())
 .updateParser(new XUpdateServiceParser())

还有一些问题就再运行时,有一些Android组件库可能不兼容导致的运行时报错 ,需要用androidx替换 android.support.v4 相关的xml标签,可以根据具体错误百度一下。 最后上一张更新成功的图,有问题可以再github @我,祝大家都成功上线。

图片

ps 遇到的额外问题,作者的xupdate 工程导入到低版本 as中启动不了,提示当前gradle版本太低了,修改了版本号还是不行,后来估计是daemon的问题。升级了as 再启动工程OK了

请老哥指点搭建Vue.js,秋梨膏

silentzone commented 4 years ago

是的 进入到目录执行

你好老哥,能否给个联系方式,我这边一直装不上vue.js版本的,求指点

VUE js 部署应该是很简单的,你装不上报啥错误,截图贴出来。 你node 环境搭建好了没有,如果你不做修改的话直接用作者dist目录里面现成的文件访问也可以的.

trdmm commented 4 years ago

maven工程打开,打jar包还是不行,打出来一个65k的jar包和一个压缩包。 警告:xxx is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.

Dark-One commented 4 years ago

配置xupdate-services 工程和 xupdate-management UI界面

git clone git@github.com:xuexiangjys/XUpdateService.git

1 用intellij引入工程 ,大部分操作作者都说明的很清楚了,可以看文档。

2 修改数据库连接: db-mysql.properties

  修改启动端口等  application.yml

3 现在通过sql目录中 xupdate.sql 创建表,可以先在mysql 中创建xupdate的库。

3 更新依赖(我通过intellij自动引入的,不知道更新命令)

4 直接点run启动,这里没有找到springboot工程的ui,但是通过postman可以调用到接口,很顺利。

5 引入 https://github.com/xuexiangjys/xupdate-management vue管理界面工程

git clone 到本地,然后npm install  

npm run preview 预览工程,也可以将dist目录放入tomcat或者iis中,设置index.html为首页就可以看到管理界面,点击登陆可以直接连上你之前的 XUpdateService 上1111接口来访问了,关于用户密码可以再mysql中查看。

6.测试了一下 xupdate-services 界面尝试登陆和上传没什么问题,就可以部署到服务器上了。

7.打jar包,我跟作者不一样的是使用的是maven命令 :clean package

图片

这里需要注意的是 pom.xml中 org.apache.maven.plugins 中 exclude需要注释掉不然打出来的包运行会报 Cannot determine embedded database driver class for database type NONE,这个错误折腾了一天,尝试了作者的gradle打包也没有成功。后来也是请教了熟悉springboot的同事

下面就是修改之后的代码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <excludes>
            <!--<exclude>*.txt</exclude>-->
            <!--<exclude>*.xml</exclude>-->
            <!--<exclude>*.properties</exclude>-->
            <!--<exclude>*.yml</exclude>-->
        </excludes>
    </configuration>
</plugin>

8.上传至服务器 ,创建start.sh来启动

java -jar xupdate.jar > ./log.txt 

9 服务器上安装jdk 和 mysql 可以见这里的安装方法 https://www.cnblogs.com/toutou/p/9670395.html

ps .自己遇到额外的问题,react-native 突然又不能自动更新 bundle包,找了根据问题尝试了adb daemon 端口检查关闭重启,然并卵,后来通过启动debuger 日志看到  Metro Bundler 8081 连接不上, 解决设置 解决

集成 xupdate 到android 工程中

1.可以先下载作者的 https://github.com/xuexiangjys/XUpdate工程在As中打开,修改 mUpdateUrl 为之前服务器的地址。

2运行起来尝试一下下载,成功后在把 bulde.gradle 文件和你自己工程的对比合并一下,按照说明,配置自己的bulde.gradle

3 在启动类 MainApplication 中添加

@override public void onCreate() { super.onCreate(); XUtil.init(this); XUtil.debug(true); initXHttp(); initOKHttpUtils(); initUpdate(); } private void initUpdate() { / XUpdate.newBuild(this).updateParser(new XUpdateServiceParser());/ XUpdate.get() .debug(true) // .isWifiOnly(true) //默认设置只在wifi下检查版本更新 // .isGet(false) //默认设置使用get请求检查版本 .isAutoMode(false) //默认设置非自动模式,可根据具体使用配置 .param("versionCode", UpdateUtils.getVersionCode(this)) //设置默认公共请求参数 UpdateUtils.getVersionCode(this) .param("appKey",getPackageName()) //.param("appKey", getPackageName()) .setOnUpdateFailureListener(new OnUpdateFailureListener() { //设置版本更新出错的监听 @override public void onFailure(UpdateError error) { if (error.getCode() != CHECK_NO_NEW_VERSION) { //对不同错误进行处理 // ToastUtils.toast(error.toString()); Log.d("mainAplication",error.toString()); } } }) .supportSilentInstall(true) //设置是否支持静默安装,默认是true .setIUpdateHttpService(new OKHttpUpdateHttpService()) //这个必须设置!实现网络请求功能。 .init(this); //这个必须初始化

} private void initXHttp() { XHttpSDK.init(this); //初始化网络请求框架,必须首先执行 XHttpSDK.debug("XHttp"); //需要调试的时候执行 XHttp.getInstance().setTimeout(20000); } private void initOKHttpUtils() { OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(20000L, TimeUnit.MILLISECONDS) .readTimeout(20000L, TimeUnit.MILLISECONDS) .build(); OkHttpUtils.initClient(okHttpClient); }

4 会有很多报错,和找不到类,所以我又去把作者的xupdate-lib类加载了进来

implementation project(':xupdate-lib')
  1. 然后实现 OKHttpUpdateHttpService XHttpUpdateHttpService 这些wiki当中说的。

集成这些模块的时候,我遇到两个问题,一个是 点击更新总是提示版本已经是最新,首先通过日志分析看不出啥问题,后来断点发现这里是工程默认调用的下载数据解析类对比不了版本号,修改为

XUpdate.newBuild(getCurrentActivity())
 .updateParser(new XUpdateServiceParser())

还有一些问题就再运行时,有一些Android组件库可能不兼容导致的运行时报错 ,需要用androidx替换 android.support.v4 相关的xml标签,可以根据具体错误百度一下。 最后上一张更新成功的图,有问题可以再github @我,祝大家都成功上线。

图片

ps 遇到的额外问题,作者的xupdate 工程导入到低版本 as中启动不了,提示当前gradle版本太低了,修改了版本号还是不行,后来估计是daemon的问题。升级了as 再启动工程OK了

第五步npm run preview 之后访问的不是后台服务吧,我看访问的是vue前端工程自己mock的服务,找半天没看到在哪能改成自己的启动的后台1111上

silentzone commented 4 years ago

xupdate-management 工程 根目录 .env.production 里面可以修改 ,不过要运行 npm run build:prod 打产品包

zhubinsheng commented 2 years ago

Screenshot from 2022-03-09 12-08-03 在docker里跑起来了