2019-03-14 20:06:14 qq_37344885 阅读数 74
								unity导出到android日志

一、新建一个android项目
打开android studio 创建一个普通的项目 我设置的项目名(MyArTest)
二、将unity导包成android 项目 (自行google baidu) 此处我导出的项目是ArTest
需要注意的是 android studio创建的项目和unity导出的项目的包名是一致的
三、移动必要的文件
在这里插入图片描述
将unity 导出项目中的libs 下的文件 和 main下的assets 、jniLibs文件复制到MyArTest项目对应文件夹下,如下图所示
在这里插入图片描述

四、项目下的 bulid.gradle文件配置

allprojects {
    repositories {
        google()
        jcenter()
        
        //需要添加的代码
        flatDir {
            dirs 'libs'
        }
        
    }
}

五、App 下的build.gradle文件配置

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.chl.ar"
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        
        //添加ndk的支持
        ndk {
            abiFilters 'armeabi-v7a', 'x86'
        }
    }

    //需要添加的部分
    lintOptions {
        abortOnError false
    }
   //需要添加的部分
    aaptOptions {
        noCompress '.unity3d', '.ress', '.resource', '.obb','vuforia/vuforiamars_images.dat','vuforia/vuforiamars_images.xml','vuforia/vuforiamars_modeltarget.dat','vuforia/vuforiamars_modeltarget.xml','vuforia/vuforiamars_object_ot.dat','vuforia/vuforiamars_object_ot.xml','vuforia/vuforiamars_vumark.dat','vuforia/vuforiamars_vumark.xml'
    }
...
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ...
    //添加的包
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'VuforiaWrapper', ext:'aar')

}
    
}

2019-03-19 16:25:53 CUIHUANRUI 阅读数 1159

adb pull /data/anr/

adb shell dumpsys dropbox --print >>crashlog_$(date +%Y%m%d%H%M).txt

2018-03-05 11:01:26 qq_20956737 阅读数 4640

大项目中出现anr几乎是必然事件,这里我就不再去赘述怎么分析anr日志了。但是作为分析anr重要依据的必然离不开dropbox日志。

    问题来了,dropbox文件目录路径一般是/data/system/dropbox/,开发时我们当然能直接把日志拉出来。但是,外面用的正式版的机器我们是没有读取这个目录的权限的,即使你拥有系统权限也不行。所以想着怎么在程序中直接把dropbox日志直接输出来。

    后来找到android了一个跟dropbox日志紧密联系的类:DropboxManager.

    DropboxManager中文介绍可以参考这篇博客:DropboxManager介绍

第一步:获取DropboxManager

    api英文原文是:You can obtain an instance of this class by calling {@link android.content.Context#getSystemService} with {@link android.content.Context#DROPBOX_SERVICE}.代码:

DropboxManager dropboxManager = (DropboxManager ) mContext.getSystemService(Context.DROPBOX_SERVICE);

第二步:获取dropbox信息

    DropboxManager中有一个类Entry,该Entry在api中的定义是:A single entry retrieved from the drop box. 通过这个Entry我们就可以获取到dropbox的日志信息(嘿嘿,开心)。

    其实说明白点就是:每个Entry对应的就是一个tag的系统日志(上面推荐博客中介绍到的tag,如crash,anr,strict_mode等等)。既然重点都在这个Entry上,那我们来理一理它。首先看他的参数。

其中我们要用到的就是前面三个:mTag对应的就是我们上说的系统日志的tag;mTimeMillis对应的是Entry创建的时间,这个我们后面会用到,必要参数;mData中包含的就是我们要的数据了。

    那么我们怎么获取Entry呢?不急,DropboxManager中给你提供了方法:getNextEntry(String tag, long msec)。其中tag上面说的很详细了,传null代表所有tag;msec代表系统这个时间点后创建的Entry。所以这个方法获取到的就是指定tag、指定时间点后创建的第一个Entry。

    好了,Entry我们已经获取到了,接下来说说怎么从Entry获取我们需要的日志信息。Entry类中有一个方法是String getText(int maxBytes),直接返回的就是String,深得我心啊。就是说你直接就可以获取到对应entry中的日志信息了。具体是怎么实现的我就不说了,去看api,很简单。

    接下来你只需要对这个String进行操作就行了,可以写到本地文件中,也可以打印到普通日志中。看你喜欢。下面贴一下我的完整代码:

import android.content.Context;

import android.os.DropBoxManager;

import android.os.Environment;

import android.util.Log;

import java.io.IOException;

public class DropboxOutputManager {

private static final StringTAG ="DropboxPrintManager";

private static final int MAX_BYTES =8192 *100;

// DropBoxManager 是 Android 在 Froyo(API level 8) 引入的用来持续化存储系统数据的机制,

// 主要用于记录 Android 运行过程中, 内核, 系统进程, 用户进程等出现严重问题时的 log,

// 可以认为这是一个可持续存储的系统级别的 logcat.

 private DropBoxManagerdropBoxManager;

/**

   * [dropbox文件生成路径]

   */

private StringoutputPath = Environment.getExternalStorageDirectory().getPath() +"/log/dropbox.log";

private static DropboxOutputManagersInstance;

private DropboxOutputManager() {

    //通过用参数 DROPBOX_SERVICE 调用 getSystemService(String) 来获得这个服务

     dropBoxManager = (DropBoxManager) mContext.getSystemService(Context.DROPBOX_SERVICE);

}

public static DropboxOutputManagergetInstance() {

    if (sInstance ==null) {

        synchronized (DropboxOutputManager.class) {

            if (sInstance ==null) {

                sInstance =new DropboxOutputManager();

            }

         }

    }

    return sInstance;

}

/**

   * 打印日志信息

   */

public boolean printDropboxLog()throws IOException {

    // 我们要输出所有的dropbox信息,所以时间点从0开始

    long time =0;

    String text ="";

     DropBoxManager.Entry entry;

     while ((entry = getEntry(time)) !=null) {

            //这里给它加个标签

            text = entry.getTag() +"  " + entry.getText(MAX_BYTES) +"\r\n";

            time = entry.getTimeMillis();

            //直接打印出来,当然你可以在这里把text写到文件中去

            Log.d("whh", text);

            // 这里一定要记得关闭

            if (entry !=null) {

                entry.close();

            }

    }

    return true;

}

/**

   * 获取指定时间点后的第一个entry,不指定tag

   */

private DropBoxManager.EntrygetEntry(long time) {

    // 需要在AndroidManifest中增加android.permission.READ_LOGS权限

     DropBoxManager.Entry entry =dropBoxManager.getNextEntry(null, time);

      return entry;

 }

}



2015-09-10 21:24:40 figo0423 阅读数 6610

查看是否有日志

C:\Users\test>adb shell ls /data/anr/

traces.txt
导出到电脑的d:/mytraces.txt

C:\Users\test>adb pull /data/anr/traces.txt  d:/mytraces.txt

导出后就可以打开d:/mytraces.txt 这个文件了,建议用editplus打开,记事本打开会乱

没有更多推荐了,返回首页