小编Har*_*ish的帖子

如何使用ADB使用sendevent命令向设备发送触摸事件?

我正在尝试使用AndroidDebugBridge将触摸事件发送到设备,以便我可以为UI测试做一些基本的自动化.我已经在LINK中进行了讨论.我可以使用sendevent模拟模拟器上的触摸,但无法在设备上执行相同的操作.

就像上面的链接一样,模拟器似乎每次触摸发出6个事件(xcoord,ycoord,2个用于按下,2个用于发布)并且很容易将这些信息用于sendevents,但是设备的触摸屏的getevent似乎产生太多的事件.

有人设法将ADB的触摸发送到设备吗?你能分享一下解决方案吗?

automation android touchscreen adb

81
推荐指数
5
解决办法
13万
查看次数

Android Gradle任务在构建后复制文件

我试图将源文件中的几个文件复制到Gradle最终生成apk文件的目录中.构建似乎很好,但我似乎没有看到副本工作.我在我的模块build.gradle中添加了以下任务

task copySupportFiles(type: Copy){
    from 'src/main/support'
    into 'build/outputs/apk'
    include '**/.dat'
    include '**/.txt'
}

assembleDebug {}.doLast{
    tasks.copySupportFiles.execute()
}
Run Code Online (Sandbox Code Playgroud)

android build gradle

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

用于将命令定向到adb shell的shell/batch脚本

我正在尝试编写一个批处理(for win)和一个用于linux的shell脚本,以便在Android UI上自动执行键和触摸事件.在Windows批处理文件中,我正在为每个事件启动一个adb shell,例如

    :again

adb shell am start -a android.intent.action.MAIN -n com.q.me.fui.activity/.InitActivity

sleep 15

adb shell sendevent /dev/input/event0 3 0 281
adb shell sendevent /dev/input/event0 3 1 70
adb shell sendevent /dev/input/event0 1 330 1
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0
adb shell sendevent /dev/input/event0 0 0 0   
adb shell sendevent /dev/input/event0 1 330 1
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0
adb shell …
Run Code Online (Sandbox Code Playgroud)

shell android batch-file adb

10
推荐指数
4
解决办法
5万
查看次数

Android Studio中的Gradle任务排序问题

我正在使用Android Studio 2.2 Beta 3,我的测试项目使用CMake构建混合C++和Java应用程序.JNI接口由SWIG生成.这意味着我想在externalNativeBuild和JavaCompile gradle任务之前生成SWIG包装器; 即我的CMakeLists.txt指定SWIG生成的cpp包装器文件,我的java代码导入SWIG生成的java包装器文件.

为了确保SWIG运行并在任何任务之前生成必要的包装器文件,我在app/build.gradle文件中指定了以下内容

project.afterEvaluate {
    preBuild.dependsOn("runSwig")
}
Run Code Online (Sandbox Code Playgroud)

当我使用命令从命令行运行时

./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)

我没有遇到任何问题,正如预期的那样,我的任务"runSwig"在任何其他任务之前运行

:app:runSwig
:app:preBuild
:app:preDebugBuild
<blah blah more tasks>
:app:externalNativeBuildDebug
Run Code Online (Sandbox Code Playgroud)

但问题是当项目首次在Android Studio中打开时,看起来外部本机构建在runSwig之前被调用,我得到了错误

CMake Error at CMakeLists.txt:79 (add_library):
  Cannot find source file:

    ../../../wrap.cxx

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx

FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)

在我使用命令行OR进行汇编之前,错误不会消失,从我的CMakeLists.txt中删除wrap.cxx文件,并在swig成功运行至少一次后重新添加它.

c++ swig cmake android-gradle-plugin android-studio-2.2

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

Flutter:在 CustomPainter 对象上检测触摸进入、移动和退出的正确方法是什么

我是 Flutter 的初学者,我试图弄清楚当用户在自定义形状和/或多个堆叠的自定义形状上移动手指时,如何检测触摸进入、移动和退出。像下面这样

在此处输入图片说明

理想情况下,我希望在用户进入/退出每个自定义形状的像素边界时获得触摸事件,但我想让它至少与形状的 MBR 一起工作。下面是我拥有的代码。我究竟做错了什么?当触摸在形状内开始时,它似乎所做的就是打印移动。我也尝试过 GestureDetector,结果相似。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.deepOrange,
      ),
      home: MyHomePage(title: 'Flutter Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {
    return …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout

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

将符号上传到 Firebase Crashlytics 时出错

我使用 crashalytics 设置了一个 firebase 项目,我可以在仪表板上看到 Java 和 NDK 崩溃。我正在尝试按照https://firebase.google.com/docs/crashlytics/ndk-reports#upload_native_symbols上传符号。我还尝试关注https://medium.com/@aungkyawmyint_26195/setting-up-ndk-crashlytics-android-11ad775676f7等博客,但到目前为止尚未成功。

这是我的环境

Android Studio 3.5
Build #AI-191.8026.42.35.5791312, built on August 8, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.6

implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.1.0'
Run Code Online (Sandbox Code Playgroud)

当我跑步时

./gradlew crashlyticsUploadSymbolsDebug --stacktrace
Run Code Online (Sandbox Code Playgroud)

在我的 app/build.gradle 中如下

crashlytics {
    enableNdk true
    androidNdkOut 'build/intermediates/cmake/debug/obj'
    androidNdkLibsOut 'build/intermediates/cmake/release/obj'
    manifestPath 'src/main/AndroidManifest.xml'
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

> Task :app:externalNativeBuildDebug
Build native-lib_armeabi-v7a
ninja: no work to do.
Build native-lib_arm64-v8a
ninja: no work to do.
Build …
Run Code Online (Sandbox Code Playgroud)

android cmake android-ndk firebase crashlytics

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

使用本机代码构建Android库时出现问题

我正在尝试使用本机代码构建一个Android库项目.根据http://tools.android.com/tech-docs/new-build-system/gradle-experimental下的"已知限制"部分, 支持混合库项目.但我似乎没有看到本机文件生成在库aar文件的libs文件夹下.

这是我的项目设置的样子

  1. http://tools.android.com/tech-docs/new-build-system/gradle-experimental中的后续步骤,以获得ndk支持
  2. 添加了一个库模块,静态加载本机so文件并通过某些方法公开功能
  3. 添加了另一个使用本机模块的模块.设置模块依赖项以包括库项目.

当我运行这个应用程序时,我得到一个UnsatisfiedLinkError,我预计,因为我看到没有原生的文件在aar文件中生成.

这就是我的库build.gradle文件的样子

apply plugin: 'com.android.model.library'

model {
     android {
         compileSdkVersion = 23
         buildToolsVersion = "23.0.1"
     }
     android.ndk {
         moduleName = "native"
         cppFlags = ['-std=c++11']
         stl = "gnustl_shared"
     }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的app模块的build.gradle的样子

apply plugin: 'com.android.model.application'
model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.1"
    }
}
dependencies {
    compile project(':mylibrary')
}
Run Code Online (Sandbox Code Playgroud)

android android-ndk android-library android-studio android-gradle-plugin

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

ndk-gdb无法找到gdb.setup

我正在尝试使用ndk-gdb来调试我的原生android项目.当我运行命令ndk-gdb时,我收到错误

 Could not find gdb.setup under ./libs/
Run Code Online (Sandbox Code Playgroud)

说明

c++ debugging android android-ndk ndk-gdb

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