Android 集成 NDK

1.1安装SDK或NDK



Testin崩溃分析 SDK支持Android2.2以上系统,安装前先下载SDK下载NDK


Demo请参考:https://github.com/testinlab/TestinAndriodDemo


1.2 手动安装SDK


将下载包中的jar文件放到本地工程libs子目录下;

在Eclipse中右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs...选择指向jar的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)


1.3 手动安装NDK


如果需要崩溃分析NDK捕获C/C++的错误,除了将下载包中的jar文件放到本地工程libs子目录下,还需要添加.so文件(libNativeCrash.so),即添加armeabi或者armeabi-v7a或者x86架构。


注意:

如果使用Eclipse导入NDK jar报错:contains native libraries that will not run on the device。解决方法如下:

(1)Windows环境  window->preference->Android->build->“Force error when external jars contain native libraries”,去掉勾选即可;

(2)Mac环境  Eclipse->preference->Android->build->“Force error when external jars contain native libraries”,去掉勾选即可。


1.4 配置Manifest


在Manifest中添加以下权限:


INTERNET:允许应用使用网络上报数据

ACCESS_NETWORK_STATE:允许获取网络状态

ACCESS_WIFI_STATE:获取网卡信息

READ_PHONE_STATE:读取设备ID作为设备标识

READ_LOGS:获取系统日志

GET_TASKS:获取任务堆栈

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="3"
   android:versionName="1.0"
   package="com.testin.demo"
   xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
 
<application android:icon="@drawable/icon"
       android:label="@string/app_name" android:name=".DemoApp">
       <activity android:label="@string/app_name" android:name=".MainActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN"/>
               <category android:name="android.intent.category.LAUNCHER"/>
           </intent-filter>
       </activity>
      <!-- 设置AppKey -->
       <meta-data android:name="TESTIN_APPKEY" android:value="Your_AppKey"/>
       <!-- 设置渠道信息 -->
       <meta-data android:name="TESTIN_CHANNEL" android:value="Channel_ID"/>
   </application>
</manifest>


如果想获得更丰富的位置相关服务,请在manifest文件中添加权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


如您想了解更多关于权限信息,请查看官方文档Android Manifest documentation


1.5 初始化SDK


在Application的Activity中,添加

Import com.testin.agent.TestinAgent;

在Application的Activity中的onCreate()方法中,添加

TestinAgent.init(this,"279c8c7a996a03f452e6804a1f23a5e5","your channel ID");

chanel id:应用所发布的渠道名称,自定义字符穿,如应用宝可以写yingyongbao, 也可以为空

如果需要使用manifest.xml中的配置appkey和渠道号或需要自定义配置的 初始方法,请查看:

http://crash.testin.cn/support/2#初始化SDK


更多用户配置的初始化方法:

TestinAgentConfig config = new TestinAgentConfig.Builder(context)
       .withAppKey(key)            // Appkey of your appliation, required
       .withAppChannel(cnl)        // Channel of your application
       .withUserInfo(userInfo)     // User infomation like login account of user
       .withDebugModel(true)       // Output the crash log in local if you open debug mode
       .withErrorActivity(true)    // Output the activity info in crash or error log
       .withCollectNDKCrash(true)  // Collect NDK crash or not if you use our NDK
       .withOpenCrash(true)        // Monitor crash if true
       .withReportOnlyWifi(true)   // Report data only on wifi mode
       .withReportOnBack(true)     // allow to report data when application in background
       .build();
TestinAgent.init(config);