# Android端编译打包处理

### 环境安装

请使用最新版本的`Android Studio`进行导入编译，编译的Android SDK版本是 26 \[**Android O**] 。 `Android Studio`下载地址<https://developer.android.google.cn/studio/>

![](http://img.muliba.net/post/20190107140605.png)

安装Android Studio完成后，打开设置里面的SDK Manager工具。

![](http://img.muliba.net/post/20190107141121.png)

选择Android 8.0 ，安装SDK。

![](http://img.muliba.net/post/20190106112546.png)

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

![](http://img.muliba.net/post/20190106112529.png)

### 导入项目

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

![](http://img.muliba.net/post/20190107142220.png)

等它加载完成后可能会弹出这样一个窗口，让你更新gradle版本，这个不需要更新，点击 `Donot remind me again for this project`

![](http://img.muliba.net/post/20190107142755.png)

### 项目基本信息修改

#### 项目名称

项目名称就是Android手机桌面上显示的名称，这个名称修改是在strings资源文件中：

具体位置：`./app/src/main/res/values/strings.xml`

![](http://img.muliba.net/post/20190107143459.png)

#### 项目桌面LOGO

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

|                                                                                                 |                                                    |
| :---------------------------------------------------------------------------------------------: | :------------------------------------------------: |
| ![http://img.muliba.net/post/20190105171759.png](http://img.muliba.net/post/20190105171759.png) | ![](http://img.muliba.net/post/20190105171908.png) |

#### 唯一应用ID

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

![](http://img.muliba.net/post/20190107144344.png)

#### 可配置的应用内图标

App内看到的一些O2OA相关的logo图标，可以不编译打包进App，我们服务端可以进行动态配置。用管理员进入我们O2OA的服务端，找到系统设置->移动办公配置->样式配置，就可以修改图标了：

![](http://img.muliba.net/post/20190105172349.png)

###

### 第三方SDK注册配置

找到项目根目录下的 `local.properties` 文件，里面有一些第三方SDK的key需要配置。

```
# 下面是第三方SDK 需要的key

# 极光推送
JPUSH_APPKEY_DEBUG=极光推送AppKey
#蒲公英
PGY_APP_ID_DEBUG=蒲公英AppId
#百度语音
BAIDU_SPEECH_APPID=百度语音AppId
BAIDU_SPEECH_SECRET=百度语音Secret
BAIDU_SPEECH_APPKEY=百度语音Appkey
#百度地图
BAIDU_MAP_APPKEY=百度地图Appkey
#腾讯bugly
BUGLY_APPID=腾讯Bugly AppId
```

这些key具体的注册获取，下面有大致说明。

#### 百度语音识别和语音合成

百度语音的官方地址：<http://yuyin.baidu.com/> 。 点击右上角控制台登录后，`创建应用` 。

![](http://img.muliba.net/post/20190107152003.png)

注册完成后，查看应用详情，就能看到百度语音相关的AppId、AppKey、SecretKey。把这3个字段内容拷贝到local.properties文件中对应的地方。

![](http://img.muliba.net/post/20190107152530.png)

#### 百度地图

百度地图官方地址：<http://lbsyun.baidu.com/> 登录，进入控制台，创建应用。

![](http://img.muliba.net/post/20190107153754.png)

如图这里有一个必填项SHA1，这个SHA1需要用到Android 打包的签名文件。所以先要有一个签名文件。

**生成签名文件**

签名文件可以用Android Studio 生成。先找到Android Studio菜单 Build -> Generate Signed Bundle or APK 。

![](http://img.muliba.net/post/20190107154817.png)

然后勾选APK ，下一步。 ![](http://img.muliba.net/post/20190107155010.png)

然后点击新建按钮，创建一个新的签名文件。 ![](http://img.muliba.net/post/20190107155053.png)

下面就是签名文件生成的表单，填写完成后点击OK 就生成了。 ![](http://img.muliba.net/post/20190107155231.png)

**获取百度地图需要的SHA1**

使用keytool生成SHA1

* 运行进入控制台（以Window开发环境为例）

![and\_key6.png](http://mapopen-pub-androidsdk.bj.bcebos.com/map/images/and_key6.png)

![and\_key7.png](http://mapopen-pub-androidsdk.bj.bcebos.com/map/images/and_key7.png)

* 定位到`.android`文件夹下，输入`cd .android`&#x20;

![and\_key8.png](http://mapopen-pub-androidsdk.bj.bcebos.com/map/images/and_key8.png)

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

![ and\_key9.png](http://mapopen-pub-androidsdk.cdn.bcebos.com/map/images/and_key9.png)

![and\_key10.png](http://mapopen-pub-androidsdk.cdn.bcebos.com/map/images/and_key10.png)

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

![](http://img.muliba.net/post/20190107160741.png)

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

#### 极光

极光官方网站：<https://www.jiguang.cn> 注册登录后，先创建应用。 ![](http://img.muliba.net/post/20190107165307.png)

应用创建后应用信息里面有一个AppKey，把值拷贝后粘贴到`local.properties` 文件中的极光推送AppKey对应的地方 `JPUSH_APPKEY` 。

还是在极光应用管理界面点击左边的 `推送设置` 菜单，把你的应用ID填写进Android那栏： ![](http://img.muliba.net/post/20190107165445.png)

#### 蒲公英

如果需要使用应用内更新App的功能，就要使用蒲公英。蒲公英的官方网址：<https://www.pgyer.com>

> 发布应用 -> 上传打包好的apk文件（如何打包apk文件，请看本文下面一章内容） -> 填写说明 -> 发布 -> 应用管理 -> 应用概述 -> App Key

把这个App Key的值拷贝到我们的项目的`local.properties`文件中的蒲公英配置对应的字段内：`PGY_APP_ID`

![](http://img.muliba.net/post/20190108101245.png)

![](http://img.muliba.net/post/20190108101302.png)

![](http://img.muliba.net/post/20190108101315.png)

![](http://img.muliba.net/post/20190108101330.png)

###

### 直连版本配置

如果你不希望连接到我们O2云，通过修改配置编译打包，生成的Android应用，就会直接连接到你们自己的O2OA服务器。目前这个直连版本是不能接收到通知消息的。 修改方式如下： 在app目录下的build.gradle文件中，找到 android -> buildTypes ，把`InnerServer` 改成 `true` 。这里应用有两个 一个debug下的 一个是release下的

```groovy
buildConfigField "Boolean", "InnerServer", "true"
```

![](http://img.muliba.net/post/20190107162547.png)

然后找到app->assets 目录下找到server.json文件，把里面的centerHost 、 centerPort、httpProtocol改成你们自己的O2OA中心服务器地址信息。

![](http://img.muliba.net/post/20190107162607.png)

###

### 打包Android apk

打包还是通过Android Studio工具。上面提到的生成签名文件的时候一样，找到菜单 Build -> Generate Signed Bundle or APK 。

![](http://img.muliba.net/post/20190107154817.png)

然后勾选APK ，下一步。 ![](http://img.muliba.net/post/20190107155010.png)

这次不用新建了因为刚才已经创建好签名文件了，选择你刚才生成的签名文件，输入密码，然后继续。 ![](http://img.muliba.net/post/20190107163404.png)

这里的签名版本V1和V2都勾选。点击 `Finish` 就开始打包了。 打包完成后，APK文件在 `./app/O2PLATFORM/release/O2PLATFORM-4.8.0.apk`

### app下载地址配置

我们O2OA平台登陆页扫码登录的二维码，有两个功能：

第一个是通过app扫码登录

第二个是如果手机还没有安装我们的app，通过其他app，如微信，扫码就会跳转到app的下载安装地址

![登录页](http://img.muliba.net/post/20190819134437.png)

![登录页2](http://img.muliba.net/post/20190819134447.png)

app的下载安装地址可以配置，打开o2server/config/collect.json ，如果没有这个文件就到o2server/configSample目录下复制一个过去。

```javascript

  {
  ...
  "appUrl": "http://www.pgyer.com/ZhiHe_android" ##app下载地址
  ...
 }
  

```

### 官方网站:

官方网站 : <http://www.o2oa.net>

下载地址 : [http://www.o2oa.net](http://www.o2oa.net/download.html)

oschina项目主页 : <https://www.oschina.net/p/o2oa>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://o2oa.gitbook.io/course/yuan-ma-de-bian-yi-ji-guan-li/yi-dong-duan-yuan-ma-jie-shao/android-duan-bian-yi-da-bao-chu-li.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
