如何从源码编译 O2OA (翱途) 开发平台移动办公 APP?

2024-02-18 02:30

本文主要是介绍如何从源码编译 O2OA (翱途) 开发平台移动办公 APP?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

O2OA 是真正全代码开源的应用开发平台,开发者可以直接使用从 github 或者 gitee 上 clone 的源码编译成安卓客户端,代码可以修改,安全可靠,无限制。本文主要介绍如何从 gitee 上下载源码并且完成安卓客户端编译打包工作。

一、准备源码编译环境

1、Android SDK 下载与安装

O2OA 平台 Android 客户端,最低支持 Android 版本 5.0 Android L,编程语言主要使用 Kotlin。请使用最新版本的Android Studio进行导入编译,编译的 Android SDK 版本是 31 。

Android Studio下载地址 https://developer.android.google.cn/studio/。

安装 Android Studio 完成后,打开设置里面的 SDK Manager 工具,如下图所示界面:

选择 Android 12.0 (S) ,安装 SDK,如下图所示:

然后选择 SDK Tools 选项卡,勾选右下角的 Show Package Details,然后选择 Android SDK Build-Tools 下面的 30.0.3 版本进行安装。

2、Clone 移动 APP 源代码

Gitee -> o2oa-android: 开源OA企业信息化平台O2OA Android端源码

Github -> https://github.com/o2oa/o2oa-android

clone 源码过程,在这里就不赘述了,大家请自行百度。

二、将项目源代码导入到 Android Studio

打开Android Studio 点击Open an existing Android Studio project

等它加载完成后可能会弹出这样一个窗口,提示更新 Gradle 版本,可以不更新 Gradle,点击 Donot remind me again for this project

三、修改项目基本信息

1、项目名称

项目名称就是 Android 手机桌面上显示的名称,这个名称修改是在 strings 资源文件中,具体位置:./app/src/main/res/values/strings.xml

2、修改项目桌面 LOGO

还有就是项目的 LOGO,这个 LOGO 是在 Android 手机桌面上显示那个图标,这个需要替换图片: 图片位置: ./app/src/main/res 这个资源目录下有 4 个 mipmap 文件夹,把 4 个文件夹中的logo.pnglogo_round.png都替换了。

3、指定唯一应用 ID

Android 应用都有一个唯一的应用 ID applicationId 。这个 id 代表这个 Android App 所以不能重复,一般都用公司域名组成的一串字符串,如: com.baidu.app.xxx 。 修改的文件是在./app/build.gradle 文件中,android -> defaultConfig -> applicationId 。

4、配置应用内相关图标

移动办公 App 内看到的一些 O2OA 相关的 Logo 图标,可以不编译打包进 App,我们可以通过服务端进行动态配置。

使用管理员身份进入 O2OA 服务端,找到系统设置 -> 移动办公配置 -> 样式配置,就可以修改图标了:

四、第三方 SDK 的注册与配置

在项目根目录下的 gradle.properties 文件中,有一些第三方 SDK 的 KEY 需要配置。

极光推送

JPUSH_APPKEY_DEBUG=极光推送AppKey

百度地图

BAIDU_MAP_APPKEY=百度地图Appkey

1、如何获取百度地图的 APPKey

百度地图官方地址:http://lbsyun.baidu.com/

登录百度地图,进入控制台,开始创建应用,如下图所示:

这里有一个必填项发布版 SHA1,这个 SHA1 需要用到 Android 打包的签名文件。所以先要有一个签名文件。

生成签名文件

签名文件可以用 Android Studio 生成。

先找到 Android Studio 菜单 Build -> Generate Signed Bundle or APK 。

然后勾选 APK ,下一步:

然后点击新建按钮,创建一个新的签名文件:

下面就是签名文件生成的表单,填写完成后点击 OK 就生成了:

获取百度地图需要的 SHA1

使用 keytool 生成 SHA1

  • 运行进入命令控制台(以 Window 开发环境为例)

  • 进入.android目录,输入cd .android

  • 继续在控制台输入命令:
keytool -list -v -keystore 这里写上面生成的那个签名文件的全路径
  • 输入密码获取。 提示输入签名文件密码。输入密码后回车,此时可在控制台显示的信息中获取 SHA1 值,如下图所示:

把这里显示的 SHA1 的值拷贝到刚才百度地图应用创建页面表单中 ,创建地图应用成功后,到应用列表页面拷贝应用的 AK 就是 AppKey 的值。

然后把这个值填入gradle.properties文件中对应的百度地图 Appkey 的位置。

2、如何获取极光推送的 APPKey

极光官方网站:https://www.jiguang.cn

注册登录后,先创建应用。应用创建后,进入应用设置,应用信息里面有 AppKey、Master Secret。

把 AppKey 的值拷贝后粘贴到gradle.properties 文件中的极光推送 AppKey 对应的地方 JPUSH_APPKEY,Master Secret 在 O2OA 的服务端配置文件中需要配置。

五、如何修改 APP 直连私有化部署的 O2OA 服务器

很多项目中,由于关于安全与网络环境的限制,用户不希望 APP 经过 O2 云的绑定来连接服务器,希望 APP 可以直接在内网环境中直接连接 O2OA 服务器。

此种情况下,开发者需要通过修改相关配置后编译打包,重新编译好的 APP 就会直接连接到自己部署的 O2OA 服务器,不需要通过 O2 云进行服务器绑定的过程,这种实现我们也称之为直连版本 APP 打包。

直连版本的消息推送配置请参考文档:《O2OA 移动端 APP 直连版本如何开启消息推送》。

修改方式说明

build.gradle 修改

在 app 目录下的 build.gradle 文件中,找到 android -> buildTypes ,把InnerServer 改成 true 。debug 与 release 节点下的 buildConfigField 设置都需要修改,如下图所示:

buildConfigField "Boolean", "InnerServer", "true"

server.json 修改

在 app->assets 目录下找到 server.json 文件,把里面的 centerHost 、 centerPort、httpProtocol 改成私有化部署的 O2OA 中心服务器地址的相关信息,如下图所示:

如何设置为不自动更新 App

通用版本的 APP 源码中设置了自动更新兰德网络发布的 APP,更新之后,用户将使用通用版本的 APP。在单独打包 APP 分发给用户使用之后,通常需要 APP 不进行自动更新,不弹出更新提示。此时我们需要在源代码中的 LaunchActivity.kt 文件中注释 checkAppUpdate (),然后写入 launch () , 如下图所示:

六、打包 Android apk

安卓 APP 打包还是通过 Android Studio,找到菜单 Build -> Generate Signed Bundle or APK ,如下图所示界面:

然后勾选 APK ,下一步:

这次不用新建了因为刚才已经创建好签名文件了,选择你刚才生成的签名文件,输入密码,然后继续:

签名版本 V1 和 V2 都勾选。

点击 Finish 就开始打包了。

打包完成后,APK 文件在 ./app/O2PLATFORM/release/O2PLATFORM-x.x.x.apk

七、如何设置 App 下载地址

O2OA 平台默认的登陆页右上角可以扫码二维码。这个二维码除了有让用户使用 App 扫码完成 PC 端的系统登录的能力之外,如果用户的移动设备还没有安装过 O2OA 的移动办公 App,用户扫描二维码之后,会自动跳转到 APP 下载址,由系统引导用户完成 APP 的安装操作。

App 的下载安装地址可以在服务端进行配置。

配置文件路径:o2server/config/collect.json

如果服务器上没有 config 目录,开发者可以直接创建一个新的目录;

如果服务器上没有 o2server/config/collect.json 这个文件,开发者可以从 o2server/configSample 目录下的配置文件样例中复制一个 collect.json 文件到 o2server/config 目录中。

只有 {o2server/config 中的配置文件才会生效。

collect.json 文件修改内容:

"appUrl": "https://sample.o2oa.net/app/download.html" ##app下载地址

以上是关于如何从源码编译移动办公 APP 的说明,希望对您有帮助。

这篇关于如何从源码编译 O2OA (翱途) 开发平台移动办公 APP?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719761

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.