• Android SDK 新版
  • Android SDK 旧版

1、点击下载最新SDK(当前版本3.0.3),并解压fraudmetrix-xxx.zip文件。解压后文件目录为:

  • fm-core-xxx
  • libs
    • fm-sdk-xxx.jar
    • armeabi
  • 注:同盾Android SDK支持Android 2.2(API Level 8)及以上系统。
  • 同盾Android SDK默认只提供armeabi架构的so,如果您的应用需要支持其他的cpu架构,
    或者已经存在其他架构的第三方so,则需要将对应的架构也引入工程中,否则将可能引起设备指纹获取异常、crash等未知问题。

点击下载fraudmetrix-cpuabi-xxx.zip,该文件包含:

  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64
  • mips

2、导入设备指纹SDK。
     Eclipse环境下:
     

  • libs目录中的fm-sdk-xxx.jar拷贝到libs目录下;
  • armeabi文件夹拷贝到libs目录下(如果您需要支持其他cpu架构,请一并拷贝)
  • fm-core-xxx拷贝到本地工程assets目录下
  • 在Eclipse中右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add JARs...选择指向jar的路径,并且在Order and Export中勾选fm-sdk-xxx.jar,最后点击OK,即导入成功。(最新的ADT工具会自动导入libs目录下的jar包,故该步骤可以省略)

Android Studio/IDEA环境下:
     方式1:默认jni目录
     

  • libs目录中的fm-sdk-xxx.jar拷贝到本地工程/app/libs子目录下;
  • armeabi拷贝到/app/src/main/jniLibs/目录下(如果您需要支持其他cpu架构,请一并拷贝)
  • fm-core-xxx拷贝到本地工程/app/src/main/assets/目录下

方式2:定义jni目录
     

  • libs目录中的fm-sdk-xxx.jar拷贝到本地工程/app/libs子目录下;
  • armeabi文件夹拷贝到/app/libs目录下(如果您需要支持其他cpu架构,请一并拷贝)
  • 将目录中的fm-core-xxx拷贝到本地工程/app/src/main/assets/目录下
  • 修改module下的build.gradle,添加以下部分代码:
复制代码

 
 
 
 
 
1
  1. apply plugin: 'com.android.application'
2
3
  1. android {
4
  1. //******* 其他配置 ********//
5
  1. //配置SO文件
6
  1. sourceSets {
7
  1. main {
8
  1. jniLibs.srcDirs = ['libs']
9
  1. }
10
  1. }
11
  1. }
12
13
  1. dependencies {
14
  1. //导入sdk
15
  1. compile fileTree(include: ['*.jar'], dir: 'libs')
16
  1. testCompile 'junit:junit:4.12'
17
  1. compile 'com.android.support:appcompat-v7:23.2.0'
18
  1. }
 
 

3、配置AndroidManifest.xml文件
     manifest的配置主要包括添加权限,声明合作方标识(PARTNER_CODE)两部分,代码示例如下:

复制代码

 
 
 
 
 
1
  1. <manifest>
2
  1. <uses-sdk android:minSdkVersion="8"/>
3
  1. <!-- 必选权限 -->
4
  1. <uses-permission android:name="android.permission.INTERNET" />
5
  1. <uses-permission android:name="android.permission.BATTERY_STATS" />
6
  1. <uses-permission android:name="android.permission.BLUETOOTH" />
7
  1. <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
8
  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
9
  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
10
  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
11
  1. <!-- 可选权限,不声明此部分权限将放弃部分设备信息的采集,对数据分析及设备指纹的精准度有一定影响 -->
12
  1. <uses-permission android:name="android.permission.GET_TASKS" />
13
  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
14
  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
15
  1. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
16
  1. <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES"/>
17
  1. <application>
18
  1. <!-- 您的合作方标识 -->
19
  1. <meta-data android:name="PARTNER_CODE" android:value="xxx" />
20
  1. <!-- !!!注意!!! 如果您从同盾SDK 1.x 版本升级到 2.x,请将 1.x 中的FMUDID_service声明删除 !!!注意!!! -->
21
  1. <!-- !!!注意!!! 否则会在某些特殊情况下导致应用崩溃,如果没有该service声明,请忽略此注释 !!!注意!!! -->
22
  1. </application>
23
  1. </manifest>
 
 
  • 将 <meta-data android:name="PARTNER_CODE" android:value="partner_code " />中 partner_code替换为同盾运营所给的合作方标识。

4、初始化SDK

    • 1. 在应用启动的时候(比如在启动应用的activityonCreate方法中,或者在自定义的applicationonCreate方法中,越早调用越好)调用以下方法:
    • 复制代码

       
       
       
       
       
      1
      1. FMAgent.init(context, FMAgent.ENV_SANDBOX);
       
       
    • FMAgent.ENV_SANDBOX表示测试环境,FMAgent.ENV_PRODUCTION表示生产环境
  • 2. 初始化成功会在logcat中打印以下log:
  •  
     
     
     
     
    1
    1. TD_JAVA: tongdun sdk load success
    2
    1. TD_JAVA: tongdun sdk init success
     
     

5、获取设备指纹黑盒数据,并提交到业务服务器
     在业务关键请求,如客户登录请求的onClick中,获取设备的信息,并发送到应用服务端。示例代码如下:

复制代码

 
 
 
 
 
1
  1. loginBtn.setOnClickListener(new View.OnClickListener() {
2
  1. @Override
3
  1. public void onClick(View v) {
4
  1. //调用接口获取blackBox字段,请确保在onCreate时已经进行init,切勿在onEvent的时候才init
5
  1. String blackBox = FMAgent.onEvent(MainActivity.this);
6
  1. //将blackBox的值随业务请求发送到你的服务端, 服务端在调用同盾风险决策服务时需要用到这个参数;
7
  1. }
8
  1. });
 
 

6、混淆打包
     如果开发者需要使用proguard进行混淆打包,请在proguard配置文件添加如下代码:

复制代码

 
 
 
 
 
1
  1. #TONGDUN
2
  1. -dontwarn android.os.**
3
  1. -dontwarn com.android.internal.**
4
  1. -keep class cn.tongdun.android.**{*;}
 
 

7、FAQ

    • Q: 为什么事件中心显示SDK未成功初始化?
    • A: 请在FMAgent.init()前调用 FMAgent.openLog()过滤TD_JAVA。并排查是否有以下情况:
      • so文件导入失败:第一条显示 Couldn't load so:...。1.混用上面两种方式导入so;2.没有导入对应架构的so。
      • fm-core-xxx文件未导入assets文件夹:第一行显示 get fm-core-xxx failed:...。需要注意在Android Studio 项目中assets文件夹在/app/src/main/assets路径。
      • 如果确认没有以上情况请联系运营同学。
    • Q: 为什么获取的 black_box字段比较长?
    • A: 正常情况下black_box长度为200-250字节,但是由于网络情况较差或者函数 FMAgent.init()和 FMAgent.onEvent()调用间隔时间较短时,black_box会附带一些设备信息长度将增大到1500-3000字节。
    • Q: 为什么事件中心部分信息为空?
    • A: 可能由于从SDK初始化到获取设备数据间隔时间过短,造成设备信息获取失败。切勿初始化之后立即获取设备信息。
    • Q: 为什么调用FMAgent.onEvent()会有卡顿?
    • A: SDK初始化获取数据需要一定的时间,如果初始化后直接调用 FMAgent.onEvent()会造成卡顿感。切勿初始化之后立即获取设备信息。
  • Q: 为何部分事件的真实IP是空的?
  • A: 当SDK上传设备信息失败(超时或者网络被屏蔽)时,将自动转为离线模式,此种情况下同盾无法获取真实IP。
  • Tips: 1.so库要加全,不然碰巧使用的机器要崩溃 2.跟后台约定好使用的是什么环境,直接跳过测试环境也是可以的

同盾安卓 Android应用 集成步骤:的更多相关文章

  1. 极光推送android sdk集成步骤

    推送,用极光,大家都说好,哈哈. 进入正题: 1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持.(基本上现在都已经支持了,循例说一下)  , ...

  2. IOS JPush 集成步骤(极光远程推送解决方案,支持android和iOS两个平台)

    ●  什么是JPush ●  一套远程推送解决方案,支持android和iOS两个平台 ●  它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量.开发复杂 度 ●  更多的信息,可 ...

  3. Android App集成支付宝

    原地址:http://blog.csdn.net/wenbingoon/article/details/7933078 手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统 ...

  4. Android 系统移植与驱动开发--第二章搭建Android环境核心步骤及心得

    第二章 搭建Android 开发环境 虽然在这一章中讲的是Android底层开发环境,但是相应伴随的还有Android NDK程序来测试Linux驱动,HAL程序库.底层开发不仅需要交叉编译环境,还要 ...

  5. Android中集成第三方库的方法和问题

    Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...

  6. Android持续集成之Jenkins 部署

    Android持续集成之Jenkins 部署 [TOC] 0x00安装 准备工作如下: Tomcat8.5下载地址 Jenkins下载链接 1 将下载的jenkins.war包放至tomcat下的we ...

  7. Android Studio集成Genymotion

    Android Studio集成Genymotion比在Eclipse中集成简单多了.主要以下几个步骤: 1.官网先下载Genymotion:http://www.genymotion.com/,下载 ...

  8. 【OpenCV for Android】Android Studio集成OpenCV

    准备工作 1.下载安装Android Studio(过程略). 2.下载Android OpenCV:https://opencv.org/releases.html,找到Android pack点击 ...

  9. Python 开发安卓Android及IOS应用库Kivy安装尝试

    Python 开发安卓Android及IOS应用库Kivy安装尝试: 先来看看这货可以用来制作什么应用: Create a package for Windows Create a package f ...

随机推荐

  1. Bootstrap 模态框(也可以说的弹出层)

    最近在尝试使用bootstrap的模态框 使用模态框主要要引入一下几个js和css: bootstrap.css jquery.1.9.1.js(这个可以灵活选择) bootstrap.js html ...

  2. 总结windows多线程同步互斥

    windows多线程同步互斥--总结 我的windows多线程系列文章: windows多线程--原子操作 windows多线程同步--事件 windows多线程同步--互斥量 windows多线程同 ...

  3. 《剑指Offer》面试题-二维数组中的查找

    题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...

  4. 实践中总结——理解haslayout和BFC

    1.HASLAYOUT 首先,haslayout翻译成中文就是:有布局. 所谓布局,指的是一个元素可以对本身和里边的元素进行尺寸计算和定位.这里只是谈IE6/7,据说微软之所以不是对所有元素默认有布局 ...

  5. [Usaco2007 Jan]Telephone Lines架设电话线[二分答案+最短路思想]

    Description Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N ...

  6. [置顶] Weblogic节点管理

    配置节点管理之后能方便管理,可以在控制台启动停止被管服务器,一般配置步骤:创建受管服务器,创建machine,屏蔽SSL主机名验证,修改nodemanager.properties,启动nodeman ...

  7. Dotfuscator注册码和XenoCode注册码

    .net加密工具注册码:Dotfuscator注册码如下:     Your   serial   number   is   14705     Your   Confirmation   Numb ...

  8. 【C基础】const用法

    1.const 和 define 异同 同:const 和 define都是修饰常量 异:const修饰的常量只是编译器的一种优化,它是可以通过内存地址修改const修饰的常量:而define修饰的常 ...

  9. jQuery 2.0.3 源码分析Sizzle引擎解析原理

    jQuery 2.0.3 源码分析Sizzle引擎 - 解析原理 声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 先来回答博友的提问: 如何解析 div > p + ...

  10. JS获取ckeditor4.x里的值

    项目中有这样一个需求,使用ckeditor可以上传图片,需要在前端验证一下不可上传多于5张图片. 以下是查看源代码所看到的ckeditor里的值 <p>AAAAA</p> &l ...