server端安装及配置

apache2 + Mysql5.7 + php7 + redis

参见:http://docs.cobub.com/pages/viewpage.action?pageId=884864

可能需要额外安装:

apt-get install php-mysqlnd
apt-get install php-mbstring

安装完成后创建新的App并获取其app key。

其它注意点

  • 安装razor之前需要先配置sql_mode,set @@SET sql_mode='',否则会有时间格式问题和only_full_groupby的异常(存储过程报错)。

  • 可选配置redis,配置后将enable实时分析功能。

| If you want to use Redis to improve the performance. Config redis to 1
| 0 = Disable Redis
| 1 = Enable Redis
|
*/
$config['redis'] = 1;

sdk编译及使用

gtihub:https://github.com/cobub/razor

其中sdk文件夹下包含了android和ios的sdk。例如将android sdk导入到Android Studio,可能需要修改gradle的版本号(4.2)。打包成class.jar文件。

android app埋点

新建android程序,将上述class.jar文件添加到工程中(参见http://blog.csdn.net/zhw1551706847/article/details/77709142 中的方法三)

对新版的android需要申请各种用户权限,直接在manifest.xml文件中配置将不起作用。

实例代码如下:

package com.example.razor.razor;

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View; import com.wbtech.ums.UmsAgent; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); verifyStoragePermissions(this); setContentView(R.layout.activity_main); UmsAgent.init(this, "http://192.168.32.120/razor/web/index.php?/ums", "eda4111e55727445fe2801712abcbe4a");
UmsAgent.setDebugEnabled(true);
UmsAgent.update(this); UmsAgent.updateOnlineConfig(this); UmsAgent.postTags(this, "test tags");
UmsAgent.setDefaultReportPolicy(this, UmsAgent.SendPolicy.POST_NOW); String errorinfo = "PasswordErrorException: \n\t错误信息 at com.wbtech.test_sample.CobubSampleActivity";
UmsAgent.onError(this, "PasswordErrorException", errorinfo);
System.out.println(errorinfo); UmsAgent.onEvent(this, "gywm_GD");
UmsAgent.onEvent(this, "wdyy_YH");
UmsAgent.onEvent(this, "jrzs_GD");
UmsAgent.onEvent(this, "lxwm_GD");
UmsAgent.onEvent(this, "DLYSJ_YH"); View butt = findViewById(R.id.button_error);
butt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UmsAgent.onEvent(MainActivity.this, "eventid");
}
});
} private static String[] PERMISSIONS_ = {
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.GET_TASKS,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_LOGS,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
}; public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE); if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_,
1
);
}
} @Override
protected void onResume() {
super.onResume();
UmsAgent.onResume(this);
} @Override
protected void onPause() { super.onPause();
UmsAgent.onPause(this);
} @Override
protected void onDestroy() { super.onDestroy();
}
}

踩过的坑

  • mysql5.7需要在安装之前配置sql_mode,否则安装会出错,执行定时任务存储过程也会出错;
  • 埋点的app上传数据不成功,sdk中init函数调用后应当能够在clientdata中看到数据,如果没有看到,则有异常。

    以上示例代码在运行后应该在服务端看到的日志如下,如果都是返回200则正常。(可以结合access.log和android端的logcat定位异常)
192.168.32.50 - - [19/Mar/2018:13:24:44 +0800] "POST /razor/web/index.php?/ums/usinglog HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:44 +0800] "POST /razor/web/index.php?/ums/clientdata HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:44 +0800] "POST /razor/web/index.php?/ums/appupdate HTTP/1.1" 200 325 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:44 +0800] "POST /razor/web/index.php?/ums/pushpolicyquery HTTP/1.1" 200 426 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:44 +0800] "POST /razor/web/index.php?/ums/tag HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:44 +0800] "POST /razor/web/index.php?/ums/errorlog HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:45 +0800] "POST /razor/web/index.php?/ums/eventlog HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:45 +0800] "POST /razor/web/index.php?/ums/eventlog HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:45 +0800] "POST /razor/web/index.php?/ums/eventlog HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:45 +0800] "POST /razor/web/index.php?/ums/eventlog HTTP/1.1" 200 225 "-" "-"
192.168.32.50 - - [19/Mar/2018:13:24:45 +0800] "POST /razor/web/index.php?/ums/eventlog HTTP/1.1" 200 225 "-" "-"
  • 一些bug比较难定位,可以从application/logs/log-xxxx-xx-xx.php入手

cobub razor 安装及使用的更多相关文章

  1. Cobub Razor

    Cobub Razor - 开源移动应用统计分析平台

  2. Android高手速成--第二部分 工具库

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

  3. Android开源项目分类汇总

    目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

  4. android 很多牛叉布局github地址(转)

    原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...

  5. GitHub上史上最全的Android开源项目分类汇总 (转)

    GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

  6. 【Android】Android开源项目分类汇总

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  7. Github上的andoird开源组件整理

    http://blog.csdn.net/findsafety/article/details/50623627 第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListVie ...

  8. Android开源项目汇总【转】

    主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView ...

  9. GitHub上史上最全的Android开源项目分类汇总

    今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...

随机推荐

  1. Linux 查看各文件夹大小命令du -h --max-depth=1

    du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-de ...

  2. zookeeper 集群部署

    参考: https://www.cnblogs.com/linuxprobe/p/5851699.html

  3. DRF框架简介(第一天)

    1.drf框架全称 djangorestframework 1.如何安装drf框架: pip3 install djangorestframework #drf框架其实就是一个app称之为drf #d ...

  4. Eclipse 中Git的使用及如何解决冲突

    1. 如何导入已有Git项目 1.1 File——>import… 出现以下界面 1.2 找到Git,然后双击‘Project from Git.或者点击next 1.3 双击Clone URI ...

  5. 1.MySQL基础

    1.创建一个数据库: create database db_test; 2.创建一个表: MySQL [mysql]> use db_test; Database changed MySQL [ ...

  6. 微信小程序--预览previewImage(长按保存图片)

    最近开发小程序,想实现二维码图片长按保存,发现无法保存,只能让图片先预览,再保存.注意:只有太阳码才有长按保存和识别功能,普通二维码只有长按保存功能. <image class='banner' ...

  7. 洛谷P1169 棋盘制作(悬线法)

    题目链接:https://www.luogu.org/problemnew/show/P1169 #include<bits/stdc++.h> #define fi first #def ...

  8. SpringJDBC :jdbcTemplate在连接是出现 org/springframeworkbc/core/JdbcTemplate : Unsupported major.minor version 52.0 异常解决

    原因是这个在jdk9版本才能使用,需更新jdk版本. 更新jdk9之后在idear的配置: 第一步:File---->Project Structure---->Project 第二步: ...

  9. MongoDB:索引操作

    首先插入十万个数据 ;i;i++){ var rand = parseInt(i*Math.random()); db.person_test.insert({"name":&qu ...

  10. Spring获取bean工具类,可用于在线程里面获取bean

    Spring获取bean工具类,可用于在线程里面获取bean import java.util.Locale; import org.springframework.beans.BeansExcept ...