LeanCloud android sdk安装指南

获取 SDK

获取 SDK 有多种方式,较为推荐的方式是通过包依赖管理工具下载最新版本。

包依赖管理工具安装

Gradle

Gradle 是 Google 官方推荐的构建 Android 程序的工具,使用 Android Studio 进行开发的时候,它会自动在新建的项目中包含一个自带的命令行工具 gradlew。我们推荐开发者使用这个自带的命令行工具,这是因为 Gradle 存在版本兼容的问题,很多开发者即使正确配置了 Gradle 脚本,但由于使用了最新版本或不兼容的 Gradle 版本而仍然无法成功加载依赖包。

Android Studio

使用 Android Studio 创建一个新的项目的时候,它的目录结构如下:

.
├── app                 // 应用源代码
    ├── ...
    ├── build.gradle    // 应用 Gradle 构建脚本
    ├── ...
├── build.gradle        // 项目 Gradle 构建脚本
├── YOUR-APP-NAME.iml   // YOUR-APP-NAME 为你的应用名称
├── gradle
└── settings.gradle
 
 

首先打开根目录下的 build.gradle 进行如下标准配置:


buildscript {
    repositories {
        jcenter()
        //这里是 LeanCloud 的包仓库
        maven {
            url "http://mvn.leancloud.cn/nexus/content/repositories/public"
        }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        //这里是 LeanCloud 的包仓库
        maven {
            url "http://mvn.leancloud.cn/nexus/content/repositories/public"
        }
    }
}
 
 

然后打开 app 目录下的 build.gradle 进行如下配置:

android {
    //为了解决部分第三方库重复打包了META-INF的问题
    packagingOptions{
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile ('com.android.support:support-v4:21.0.3')

    // LeanCloud 基础包
    compile ('cn.leancloud.android:avoscloud-sdk:v4.4.4')

    // 推送与实时聊天需要的包
    compile ('cn.leancloud.android:avoscloud-push:v4.4.4@aar'){transitive = true}

    // LeanCloud 统计包
    compile ('cn.leancloud.android:avoscloud-statistics:v4.4.4')

    // LeanCloud 用户反馈包
    compile ('cn.leancloud.android:avoscloud-feedback:v4.4.4@aar')

    // avoscloud-sns:LeanCloud 第三方登录包
    compile ('cn.leancloud.android:avoscloud-sns:v4.4.4@aar')
    compile ('cn.leancloud.android:qq-sdk:1.6.1-leancloud')
    // 目前新浪微博官方只提供 jar 包的集成方式
    // 请手动下载新浪微博 SDK 的 jar 包,将其放在 libs 目录下进行集成

    // LeanCloud 应用内搜索包
    compile ('cn.leancloud.android:avoscloud-search:v4.4.4@aar')
}
 
 

我们已经提供了官方的 maven 仓库,推荐大家使用。

Eclipse

Eclipse 用户首先 下载 SDK,然后按照 手动安装步骤 将 SDK 导入到项目里。

手动安装

下载 SDK

下载文件成功解压缩后会得到如下文件:

├── avoscloud-feedback-v4.4.4.zip     // LeanCloud 用户反馈模块
├── avoscloud-push-v4.4.4.jar         // LeanCloud 推送模块和实时聊天模块
├── avoscloud-sdk-v4.4.4.jar          // LeanCloud 基本存储模块
├── avoscloud-search-v4.4.4.zip       // LeanCloud 应用内搜索模块
├── avoscloud-sns-v4.4.4.zip          // LeanCloud SNS 模块
├── avoscloud-statistics-v4.4.4.jar   // LeanCloud 统计模块
├── fastjson-1.2.30.jar                         // LeanCloud 基本存储模块
├── Java-WebSocket-1.3.2-leancloud.jar          // LeanCloud 推送模块和实时聊天模块
├── protobuf-java-2.6.1.jar                     // LeanCloud 推送模块和实时聊天模块
├── okhttp-3.8.0.jar                            // LeanCloud 基本存储模块
├── okio-1.13.0.jar                             // LeanCloud 基本存储模块
├── qq.sdk.1.6.1.jar                            // LeanCloud SNS 模块
└── weibo.sdk.android.sso.3.0.1-leancloud.jar   // LeanCloud SNS 模块
 
 

根据上述包及其对应的功能模块,开发者可以根据需求自行导入对应的模块。

LeanCloud 基本存储模块
  • avoscloud-v4.4.4.jar
  • okhttp-3.8.0.jar
  • okio-1.13.0.jar
  • fastjson-1.2.30.jar
LeanCloud 推送模块和实时聊天模块
  • LeanCloud 基础存储模块
  • avospush-v4.4.4.jar
  • Java-WebSocket-1.3.2-leancloud.jar
  • protobuf-java-2.6.1.jar
LeanCloud 统计模块
  • LeanCloud 基础存储模块
  • avosstatistics-v4.4.4.jar
LeanCloud SNS 模块
  • LeanCloud 基础存储模块
  • weibo.sdk.android.sso.jar
  • qq.sdk.1.6.1.jar

我们提供的下载包里包含了必须的依赖库,自己下载官方库也可以,不过请确保版本一致。

注意:如果需要使用美国站点,并且 SDK 版本是 3.3 及以上,则不需要引入 SSL 证书。其他低版本的用户,需要下载 SSL 证书,将其拷贝到项目的 res/raw/ 之下。

Android Studio

首先本地已经下载好了项目需要的 SDK 包,然后按照以下步骤导入:

  1. 打开 File > Project Structure > Modules 对话框,点击 Dependencies
  2. 点击下方的 +(加号),选择要导入的 SDK 包(xxxx.jar),记得 Scope 选为 Compile
  3. 重复第 2 步,直到所有需要的包均已正确导入。

Eclipse 的导入与一般的 jar 导入无本质区别,因此不再赘述。

初始化

首先进入 控制台 > 设置 > 应用 Key 来获取 App ID 以及 App Key。

然后新建一个 Java Class ,名字叫做 MyLeanCloudApp,让它继承自 Application 类,实例代码如下:

public class MyLeanCloudApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化参数依次为 this, AppId, AppKey
        AVOSCloud.initialize(this,"ogoQ5q6C4KylIn3j2dkiqG2K-gzGzoHsz","yH9fAPae86F7WzgR8gWuPWbW");
    }
}
 
 

将上述代码中的 App ID 以及 App Key 替换成从控制台复制粘贴的对应的数据即可。

然后打开 AndroidManifest.xml 文件来配置 SDK 所需要的手机的访问权限以及声明刚才我们创建的 MyLeanCloudApp类:

<!-- 基础模块(必须加入以下声明)START -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 基础模块 END -->

<application
  ...
  android:name=".MyLeanCloudApp" >

  <!-- 实时通信模块、推送(均需要加入以下声明) START -->
  <!-- 实时通信模块、推送都要使用 PushService -->
  <service android:name="com.avos.avoscloud.PushService"/>
  <receiver android:name="com.avos.avoscloud.AVBroadcastReceiver">
    <intent-filter>
      <action android:name="android.intent.action.BOOT_COMPLETED"/>
      <action android:name="android.intent.action.USER_PRESENT"/>
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
  </receiver>
  <!-- 实时通信模块、推送 END -->

  <!-- 反馈组件(需要加入以下声明)START -->
  <activity
     android:name="com.avos.avoscloud.feedback.ThreadActivity" >
  </activity>
  <!-- 反馈组件 END -->
</application>
 
 

开启调试日志

在应用开发阶段,你可以选择开启 SDK 的调试日志(debug log)来方便追踪问题。调试日志开启后,SDK 会把网络请求、错误消息等信息输出到 IDE 的日志窗口,或是浏览器 Console 或是 LeanCloud 控制台的 云引擎日志 中。

// 放在 SDK 初始化语句 AVOSCloud.initialize() 后面,只需要调用一次即可
AVOSCloud.setDebugLogEnabled(true);
 
 

在应用发布之前,请关闭调试日志,以免暴露敏感数据。

启用指定节点

SDK 的初始化方法默认使用中国大陆节点,如需切换到 其他可用节点,请参考如下用法:

public class MyLeanCloudApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // 启用北美节点, 需要在 initialize 之前调用
        AVOSCloud.useAVCloudUS();

        // 初始化参数依次为 this, AppId, AppKey
        AVOSCloud.initialize(this,"ogoQ5q6C4KylIn3j2dkiqG2K-gzGzoHsz","yH9fAPae86F7WzgR8gWuPWbW");
    }
}
 
 

全球节点

  • 中国大陆节点 leancloud.cn(SDK 初始化方法默认使用该节点)
  • 北美节点 us.leancloud.cn(服务北美市场)

各个节点彼此独立,开发者账号无法跨节点来创建应用或调用 API。

验证

首先,确认本地网络环境是可以访问 LeanCloud 服务器的,可以执行以下命令行:

ping api.leancloud.cn
 
 

如果当前网路正常将会得到如下响应:

PING api-ucloud.leancloud.cn (123.59.41.31): 56 data bytes
64 bytes from 123.59.41.31: icmp_seq=0 ttl=51 time=9.032 ms
64 bytes from 123.59.41.31: icmp_seq=1 ttl=51 time=7.290 ms
64 bytes from 123.59.41.31: icmp_seq=2 ttl=51 time=8.131 ms
64 bytes from 123.59.41.31: icmp_seq=3 ttl=51 time=9.689 ms
64 bytes from 123.59.41.31: icmp_seq=4 ttl=51 time=6.559 ms
64 bytes from 123.59.41.31: icmp_seq=5 ttl=51 time=8.665 ms
64 bytes from 123.59.41.31: icmp_seq=6 ttl=51 time=8.041 ms
64 bytes from 123.59.41.31: icmp_seq=7 ttl=51 time=8.203 ms
64 bytes from 123.59.41.31: icmp_seq=8 ttl=51 time=6.288 ms
64 bytes from 123.59.41.31: icmp_seq=9 ttl=51 time=7.938 ms

--- api-ucloud.leancloud.cn ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.288/7.984/9.689/0.997 ms
 
 

然后在项目中编写如下测试代码:

在 MainActivity.java 中的 onCreate 方法添加如下代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ...
        // 测试 SDK 是否正常工作的代码
        AVObject testObject = new AVObject("TestObject");
        testObject.put("words","Hello World!");
        testObject.saveInBackground(new SaveCallback() {
            @Override
            public void done(AVException e) {
                if(e == null){
                    Log.d("saved","success!");
                }
            }
        });

        ...

    }
 
 

然后,点击 Run 运行调试,真机和虚拟机均可。

然后打开 控制台 > 存储 > 数据 > TestObject,如果看到如下内容,说明 SDK 已经正确地执行了上述代码,安装完毕。

testobject_saved

如果控制台没有发现对应的数据,请参考 问题排查

问题排查

401 Unauthorized

如果 SDK 抛出 401 异常或者查看本地网络访问日志存在:

{
  "code": 401,
  "error": "Unauthorized."
}
 
 

则可认定为 App ID 或者 App Key 输入有误,或者是不匹配,很多开发者同时注册了多个应用,导致拷贝粘贴的时候,用 A 应用的 App ID 匹配 B 应用的 App Key,这样就会出现服务端鉴权失败的错误。

客户端无法访问网络

客户端尤其是手机端,应用在访问网络的时候需要申请一定的权限。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值