这就是每天发生的事情大约六次:
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仿真器.
以下代码偶尔会生成 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) 以下任务(在应用程序模块的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之后,是否有人可以提供有关如何运行任务的提示?
是否可以使工具栏的菜单项可聚焦?我问这个是因为我想使用键盘(例如方向键)来选择工具栏的按钮。溢出菜单打开后,溢出菜单上的项目即可获得焦点,因此可以使用键盘进行选择。
在这方面,Toolbar似乎比Actionbar差,Actionbar可以通过键盘的菜单按钮打开溢出菜单。菜单按钮不会打开工具栏的溢出菜单。
菜单项似乎不支持 focusable 属性。
以下代码没有帮助:
toolbar.focusableViewAvailable(toolbar)
Run Code Online (Sandbox Code Playgroud) 假设一个 Uri 可以是以下之一:
在这两种情况下,它都指目录下的文件。
有没有一种直接的方法来获取其父目录的 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) 一个应用程序相当稳定。其偶尔崩溃的绝大多数是由以下代码中的 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) 我想让我原来复杂的问题变得简单得多。
我在存储库中有以下文件:
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 的文件历史记录从旧存储库复制到新存储库?
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
我刚刚将 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
还有一个类似的问题。我的代码不同,但原因可能是相同的。我认为我的代码更简单,可能有助于找到罪魁祸首。首先,偶尔发生的崩溃(即代码大部分时间都工作正常):
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)