小编Hon*_*ong的帖子

为什么必须经常重启Android Debug Bridge(adb)?

这就是每天发生的事情大约六次:

Android模拟器(例如CPU/API:Intel Atom(x86),目标:API级别15)可以正常运行一段时间,然后Eclipse在安装应用程序时显示以下错误

[2013-07-01 15:15:47 - Myapp] Failed to install myapp.apk on device 'emulator-5554': Connection refused: connect
[2013-07-01 15:15:47 - Myapp] java.net.ConnectException: Connection refused: connect
[2013-07-01 15:15:47 - Myapp] Launch canceled!
Run Code Online (Sandbox Code Playgroud)

有时关闭并重新启动模拟器将解决此问题.但是,大多数情况下,启动模拟器会生成以下内容:

[2013-07-01 15:16:43 - Emulator] HAX is working and emulator runs in fast virt mode
[2013-07-01 15:16:43 - Emulator] emulator: warning: opening audio input failed
Run Code Online (Sandbox Code Playgroud)

发生这种情况时,模拟器将显示,但它将无法工作(即无法安装应用程序).重置adb(DDMS>设备>重置adb)将不起作用.我必须去Windows任务管理器杀死adb.exe.Adb.exe将在不到20秒的时间内自动重启,一切都会好的.

我每天多次这样做有点不舒服,所以我正在寻找一种避免adb腐败的方法.

计算机操作系统:Windows 8 Pro

CPU:Intel i5

Eclipse:构建ID:20121004-1855

在2013-07-26添加: 我选择IronBlossom的回答作为答案,即使它没有具体回答这个问题,但它解决了必须经常重启ADB的问题.实际上,它解决了多个问题,包括一个非常重要的问题 - 无法在快速模式下同时运行英特尔的Android模拟器和Windows模拟器.有一个技巧可以并排运行Genymotion仿真器和Windows Phone仿真器.

android adb android-emulator

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

如何防止MediaCodec.dequeueInputBuffer产生的java.lang.IllegalStateException

以下代码偶尔会生成 java.lang.IllegalStateException:

 int iInputBufIndex = _mcDecoder.dequeueInputBuffer(TIMEOUT_USEC);
Run Code Online (Sandbox Code Playgroud)

其中 _mcDecoder 是 MediaCodec 的一个实例。解码后的流是 H.264 视频。该代码在大多数情况下运行良好。有没有办法主动检查MediaCodec的状态来避免这个异常?

堆栈跟踪:

java.lang.IllegalStateException
    at android.media.MediaCodec.dequeueInputBuffer(Native Method)
at net.mydomain.android.MYNAMESPACE.MYCLASS.MyMethod0(Unknown Source)
at net.mydomain.android.MYNAMESPACE.MYCLASS.ProcessH264(Unknown Source)
at net.mydomain.android.MYNAMESPACE.MYCLASS.MyMethod1(Unknown Source)
at net.mydomain.android.MYNAMESPACE.MYCLASS.MyMethod2(Unknown Source)
at net.mydomain.android.MYNAMESPACE.MYCLASS.MyMethod3(Unknown Source)
at net.mydomain.android.MYNAMESPACE.MYCLASS.access$5(Unknown Source)
at net.mydomain.android.MYNAMESPACE.MYCLASS$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)
Run Code Online (Sandbox Code Playgroud)

android android-mediacodec

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

如何在Android Studio中生成apks后运行Gradle任务?

以下任务(在应用程序模块的build.gradle中)似乎始终在生成apk之前运行:

android.applicationVariants.all { variant ->
    if (variant.buildType.name == 'release') {
            def releaseBuildTask = tasks.create(name: "debug") {
            println("....................  test   ..............................")
        }
        releaseBuildTask.mustRunAfter variant.assemble
    }
}
Run Code Online (Sandbox Code Playgroud)

在生成apks之后,是否有人可以提供有关如何运行任务的提示?

gradle android-studio android-gradle-plugin

5
推荐指数
3
解决办法
5845
查看次数

Android 工具栏菜单项可以设置焦点吗?

是否可以使工具栏的菜单项可聚焦?我问这个是因为我想使用键盘(例如方向键)来选择工具栏的按钮。溢出菜单打开后,溢出菜单上的项目即可获得焦点,因此可以使用键盘进行选择。

在这方面,Toolbar似乎比Actionbar差,Actionbar可以通过键盘的菜单按钮打开溢出菜单。菜单按钮不会打开工具栏的溢出菜单。

菜单项似乎不支持 focusable 属性。

以下代码没有帮助:

toolbar.focusableViewAvailable(toolbar)
Run Code Online (Sandbox Code Playgroud)

android-toolbar

5
推荐指数
0
解决办法
1013
查看次数

有没有一种直接的方法可以从文件 Uri 中获取父目录的 Uri?

假设一个 Uri 可以是以下之一:

  • 来自存储访问框架的 DocumentFile(即 DocumentFile.getUri())的 Uri。
  • 来自常规文件的 Uri(即 Uri.fromFile(File))

在这两种情况下,它都指目录下的文件。

有没有一种直接的方法来获取其父目录的 Uri 而不尝试两者中的每一个来查看哪个有效?

[编辑]:以下是 SAF 的示例:

乌里:

content://com.android.externalstorage.documents/tree/0000-0000%3Atest/document/0000-0000%3Atest%2Ffoo%2FMovies%2FRR%20parking%20lot%20a%202018_02_22_075101.mp4
Run Code Online (Sandbox Code Playgroud)

获取路径():

/tree/0000-0000:test/document/0000-0000:test/foo/Movies/RR 停车场 a 2018_02_22_075101.mp4

getPathSegments():

0 = "tree"
1 = "0000-0000:test" 
2 = "document"
3 = "0000-0000:test/foo/Movies/RR parking lot a 2018_02_22_075101.mp4"
Run Code Online (Sandbox Code Playgroud)

父文件夹应该是 test/foo/Movies。

以下是常规文件的示例:

乌里:

file:///storage/emulated/0/foo/Movies/RR%20parking%20lot%20a%202018_02_22_081351.mp4

获取路径():

/storage/emulated/0/foo/Movies/RR 停车场 a 2018_02_22_081351.mp4

getPathSegments():

0 = "storage"
1 = "emulated"
2 = "0"
3 = "foo"
4 = "Movies"
5 = "RR parking lot a 2018_02_22_081351.mp4"
Run Code Online (Sandbox Code Playgroud)

android-file storage-access-framework android-storage

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

MediaCodec.release() 导致崩溃:_ZNK7android7RefBase9decStrongEPKv 中的信号 11 (SIGSEGV)、代码 1 (SEGV_MAPERR)

一个应用程序相当稳定。其偶尔崩溃的绝大多数是由以下代码中的 MediaCodec.release() 引起的:

mediaCodec.stop()
mediaCodec.release();
Run Code Online (Sandbox Code Playgroud)

或者

mediaCodec.reset()
mediaCodec.release();
Run Code Online (Sandbox Code Playgroud)

无法捕获异常。谁能提供一些关于如何找到补救措施的提示?以下是 Google Play 报告的一些崩溃示例:

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
_ZNK7android7RefBase9decStrongEPKv

Motorola Moto G(4) Plus (athene_f), Android 7.0
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> net.mydomain.foo <<<

backtrace:
  #00  pc 000000000000bd98  /system/lib/libutils.so (_ZNK7android7RefBase9decStrongEPKv+11)
  #01  pc 00000000000c0acf  /system/lib/libstagefright.so (_ZN7android10MediaCodecD1Ev+250)
  #02  pc 00000000000c0cc7  /system/lib/libstagefright.so (_ZN7android10MediaCodecD0Ev+2)
  #03  pc 000000000000bdc7  /system/lib/libutils.so (_ZNK7android7RefBase9decStrongEPKv+58)
  #04  pc 000000000001fec7  /system/lib/libmedia_jni.so (_ZN7android11JMediaCodec7releaseEv+22)
  #05  pc 00000000000233eb  /system/lib/libmedia_jni.so
  #06 …
Run Code Online (Sandbox Code Playgroud)

android-mediacodec

5
推荐指数
0
解决办法
697
查看次数

如何将单个文件的历史记录从旧的 Git 存储库复制到新的存储库?

我想让我原来复杂的问题变得简单得多。

我在存储库中有以下文件:

E:\\a\b\FooOld\foo.java
Run Code Online (Sandbox Code Playgroud)

几周前,我使用新的存储库将该文件复制到另一个目录:

E:\\c\d\FooNew\foo.java
Run Code Online (Sandbox Code Playgroud)

有没有办法将 foo.java 的文件历史记录从旧存储库复制到新存储库?

git

5
推荐指数
2
解决办法
1521
查看次数

如何避免数据绑定的“警告:[强制转换]冗余转换为字符串”

Android Studio 会生成大量警告,如下所示:

fooBindingImpl.java:106: 警告: [cast] 冗余转换为 String fooActivityOfUserName.set((((java.lang.String) (callbackArg_0)));

FooActivity.java 具有以下内容:

public final ObservableField<String> ofUserName = new ObservableField<>("");
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下方法:

public final ObservableField<String> ofUserName = new ObservableField<String>("");
Run Code Online (Sandbox Code Playgroud)

其布局如下:

<EditText
    android:id="@+id/etUserName"
    style="@style/EditText"
    android:hint="@string/user_name"
    android:inputType="textPersonName"
    android:nextFocusDown="@+id/editTextPassword"
    android:text="@={newActivity.ofUserName}" />
Run Code Online (Sandbox Code Playgroud)

有没有办法避免警告?

android-studio android-databinding android-studio-3.5 android-studio-3.5.3

5
推荐指数
0
解决办法
133
查看次数

“找不到 com.android.tools.build:gradle:7.2.0。” 与花栗鼠

我刚刚将 Android Studio 更新为 Chipmunk,并且 gradle 文件同步不再起作用。同步有以下错误:

Could not find com.android.tools.build:gradle:7.2.0.
Searched in the following locations:
  - https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.2.0/gradle-7.2.0.pom
  - https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/7.2.0/gradle-7.2.0.pom
Required by:
    project :
Add google Maven repository and sync project
Open File
Run Code Online (Sandbox Code Playgroud)

我单击“添加 google Maven 存储库和同步项目”,但什么也没发生。我在 build.gradle 中有以下内容:

buildscript {
    ext.kotlin_version = '1.3.72'
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.0'


        classpath("com.google.android.gms:oss-licenses-plugin:0.10.5")

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能提供有关如何解决此问题的提示?

Android Studio Chipmunk | 2021.2.1 …
Run Code Online (Sandbox Code Playgroud)

android-studio android-gradle-plugin android-studio-chipmunk

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

尝试在空对象引用上调用虚拟方法“void android.view.View.dispatchCancelPendingInputEvents()”

还有一个类似的问题。我的代码不同,但原因可能是相同的。我认为我的代码更简单,可能有助于找到罪魁祸首。首先,偶尔发生的崩溃(即代码大部分时间都工作正常):

Class: java.lang.NullPointerException
 Stack trace: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.dispatchCancelPendingInputEvents()' on a null object reference
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:4499)
        at android.view.View.cancelPendingInputEvents(View.java:18456)
        at android.app.Activity.cancelInputsAndStartExitTransition(Activity.java:4657)
        at android.app.Activity.startActivityForResult(Activity.java:4636)
        at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:753)
        at androidx.core.app.ActivityCompat$Api16Impl.b(ActivityCompat.java:0)
        at androidx.core.app.ActivityCompat.k(ActivityCompat.java:0)
        at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:258)
        at androidx.activity.result.ActivityResultRegistry$2.launch(ActivityResultRegistry.java:175)
        at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
Run Code Online (Sandbox Code Playgroud)

偶尔导致崩溃的代码:

Intent intent = new Intent(this, FooActivity.class);
intent.putExtra("mode", "manage");  
intent.putExtra("pro", true);
launcherFooActivity.launch(intent);
Run Code Online (Sandbox Code Playgroud)

以下是launcherFooActivity:

   final ActivityResultLauncher<Intent> launcherFooActivity = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            result …
Run Code Online (Sandbox Code Playgroud)

android-activity

5
推荐指数
0
解决办法
674
查看次数