小编kvh*_*kvh的帖子

如何象征UIKit等iOS系统框架?

我正在iOS上使用UncaughtExceptionHandler:

我注册一个处理程序:

NSSetUncaughtExceptionHandler(&myHandler);
Run Code Online (Sandbox Code Playgroud)

我收到App Crash的回调,

void myHandler(NSException * exception)
{
    //i can get stack symbols from
    //exception.callStackSymbols;
}
Run Code Online (Sandbox Code Playgroud)

以下是我得到的堆栈:

6   UIKit   0x000000018a6622c8  <redacted> + 612 
7   UIKit   0x000000018a678b88  <redacted> + 592 
8   UIKit   0x000000018a678814  <redacted> + 700 
9   UIKit   0x000000018a671d50  <redacted> + 684 
10  UIKit   0x000000018a644f74  <redacted> + 264 
Run Code Online (Sandbox Code Playgroud)

我想象征'编辑'部分.

我尝试了什么:

系统框架和它的dsyms文件:

/Users/my_user/Library/Developer/Xcode/iOS\ DeviceSupport/8.4.1\ \(12H321\)/symbols/system/Library/Frameworks/UIKit.framework/UIKit
Run Code Online (Sandbox Code Playgroud)

使用xcrun atos工具来表示此行:

6   UIKit   0x000000018a6622c8  <redacted> + 612

xcrun atos -arch arm64 -o /Users/my_user/Library/Developer/Xcode/iOS\ DeviceSupport/8.4.1\ \(12H321\)/symbols/system/Library/Frameworks/UIKit.framework/UIKit -l 0x18a662064 0x000000018a6622c8
Run Code Online (Sandbox Code Playgroud)

我无法从此命令中找到正确的输出.

我错过了什么?

我的问题是:

如何象征UIKit等系统框架?

symbolicatecrash ios

9
推荐指数
0
解决办法
323
查看次数

Android测试浮动视图

我向WindowManager添加了一个浮动视图,并使其可以在屏幕上移动,我可以在单击此视图时执行单击事件,一切正常.

但是,我不知道如何在espresso或UIAutomator中访问此视图.

将视图添加到WindowManager

final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.MATCH_PARENT,
                    WindowManager.LayoutParams.MATCH_PARENT,
                    type,
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                            | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                            | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                    PixelFormat.TRANSLUCENT
            );

            ImageView floatingView = new ImageView(mContext);
            floatingView.setContentDescription("bugtags_fab_des_normal");
            mWindowManager.addView(floatingView, layoutParams);
Run Code Online (Sandbox Code Playgroud)

浮动视图

rect中的白蓝色图标是我正在谈论的浮动视图.

浮视图

浮动视图响应单击事件,并执行一些任务,现在我想在AndroidJunit测试中执行此操作.

  • 浓咖啡

我使用onView方法尝试Espresso,但测试用例:

onView(withContentDescription("bugtags_fab_des_normal")).perform(click());
Run Code Online (Sandbox Code Playgroud)

得到:

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with content description: is "bugtags_fab_des_normal"
Run Code Online (Sandbox Code Playgroud)
  • UIAutomator

我尝试UIAutomator Viewer,但我在视图层次结构中找不到floatingView.

怎么样

如何在espresso或uiautomator中访问此视图并执行单击操作?

附录

测试用例

@Test
public void testInvoke() {
    onView(withContentDescription("bugtags_fab_des_normal")).perform(click());
}
Run Code Online (Sandbox Code Playgroud)

输出日志

输出日志要点

Bugtags.com

实际上,我使用的是一个名为bugtags.com的sdk ,它是一个简单的app bug报告和崩溃分析工具.

android android-testing android-espresso android-uiautomator

5
推荐指数
1
解决办法
1046
查看次数

Android Studio gradle sync,尝试错误地下载jar而不是aar

我正在使用Android Studio 1.4预览版3,gradle插件1.3。嗨,我将aar包上传到bintray jcenter:

https://bintray.com/kevinho/maven/opencore-amr-android/view

我设置了这样的存储库:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其用作依赖项时,

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.hikvh:opencore-amr-android:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:配置项目':app'时发生问题。找不到opencore-amr-android.jar(com.hikvh:opencore-amr-android:1.0.0)。在以下位置搜索:https : //jcenter.bintray.com/com/hikvh/opencore-amr-android/1.0.0/opencore-amr-android-1.0.0.jar

我的问题是:为什么gradle默认会尝试加载jar而不是aar文件?以及如何解决这个问题?

android gradle maven android-studio

3
推荐指数
2
解决办法
2145
查看次数

ASM Java替换方法调用指令

背景

我想在一些耗时的方法上做一些工具,比如 org/json/JSONObject.toString()使用ASM Java框架.

原始调用方法

public class JSONUsage {
    public void callToString() {
        JSONObject jsonObject = new JSONObject();
        String a = jsonObject.toString();//original call
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

仪表后

public class JSONUsage {
    public void callToString() {
        JSONObject jsonObject = new JSONObject();
        // **important!**
        //pass the instance as an param, replace the call to a static method
        String a = JSONReplacement.jsonToString(jsonObject);
        System.out.println(a);
    }
}

public class JSONReplacement {

    public static String jsonToString(JSONObject jsonObject) {
        //do the time caculation
        long before …
Run Code Online (Sandbox Code Playgroud)

java bytecode-manipulation java-bytecode-asm

3
推荐指数
1
解决办法
2511
查看次数

如何在Spring Boot-1.4.1-RELEASE中创建init-sql

我正在开发一个spring boot应用程序:

使用依赖项:

    dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.4.1.RELEASE")
    compile('org.springframework.boot:spring-boot-starter-data-jpa:1.4.1.RELEASE')
    compile('mysql:mysql-connector-java:5.1.39')
}
Run Code Online (Sandbox Code Playgroud)

我想在init上运行sql:

SET NAMES 'utf8mb4'
Run Code Online (Sandbox Code Playgroud)

支持表情符号读/写

我在application.properties上进行了这些配置

spring.datasource.tomcat.init-sql=SET NAMES 'utf8mb4'
spring.datasource.init-sql=SET NAMES 'utf8mb4'
spring.datasource.connection-init-sql=SET NAMES 'utf8mb4'
Run Code Online (Sandbox Code Playgroud)

但我无法使它工作,并且在应用程序启动时没有这个日志.

spring-data spring-data-jpa spring-boot

1
推荐指数
1
解决办法
3517
查看次数