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. django 验证码实现

    django验证码的使用: 验证码的作用:用于人机识别. 验证码 ###验证码: def code_str(request): from PIL import Image from PIL impor ...

  2. Linux中近期使用高频命令小结

    配置定时任务命令crontab : 用来增加系统的定时任务,可以指定用户,时间,以及相关指令: 查看端口是否相通,扫描端口nc: nc -v ip地址 端口号: 转换格式命令dos2unix: 用来将 ...

  3. Android 阻隔返回键

    //阻隔 返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.K ...

  4. elasticsearch template

    # curl -XPUT localhost:9200/_template/template_1 -d '{"template" : "te*","s ...

  5. VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)

    步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...

  6. Django_Form验证(二),ajax验证

    还是一个简单的html提交页面,ajax提交就不需要form表单了: <p><input id="a" type="text" name=&q ...

  7. cdnbest独立主控用户如何开通日志分析

    1.cdn独立主控用户开通日志分析,先用授权的帐号在官网平台登陆,然后购买日志套餐 2.在自已的主控平台还要做两步操作: 1.增加个日志套餐,内容随便,因为设置是无效的,只是需要一个套餐 2. 给用户 ...

  8. np.cumsum()函数和正则表达式的含义

  9. C#之SByte

    int8 C#中,byte为无符号8位整数,而Sbyte为有符号8位整数,对应java中的byte类型. 方法一将 byte 转为 sbyte.原理很简单,就是当 byte 小于 128 时其值保持不 ...

  10. 微软Office Online服务安装部署(三)

    现在开始配置两台服务器,两台服务器的IP: Server: 10.1.3.89 Client:  10.1.3.92 1.在Client中,.打开网络属性,找到ipv4的配置,将dns 改成域控制器的 ...