小编Hon*_*ong的帖子

“-keepattributes SourceFile,LineNumberTable”对于新的Android 代码压缩器R8 意味着什么?

自动生成的 proguard-rules.pro 具有以下内容:

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
Run Code Online (Sandbox Code Playgroud)

多年来,我一直对此进行评论,直到 Android Studio 3.4默认使用R8而不是 ProGuard ,它才能完美运行。

让我们使用以下示例:

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
    at net.foo.anroid.Foo.wb.d(SourceFile:453)
    at net.foo.anroid.Foo.wb.a(SourceFile:213)
    at net.foo.anroid.Foo.wb.n(SourceFile:103)
    at net.foo.anroid.Foo.qa.run(Unknown Source:2)
    at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)

当使用 ProGuard 时,行号(例如 453、213...)曾经是 Java 代码源文件中的实际行号,但它们不再是 R8。即使使用官方推荐的反混淆工具ReTrace也无法恢复原始行号。

“-keepattributes SourceFile,LineNumberTable”究竟是做什么的?

android-studio android-proguard android-studio-3.4

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

如何为Visual Studio intellisense评论类的属性?

我知道使用///来评论函数是正确的方法,它也适用于属性,如下面的代码所示

/// <summary>
/// This is for demo
/// </summary>
public class Foo
{
    /// <summary>
    /// Description A (working for intellisense)
    /// </summary>
    public int iA { get; set; }

    /// Description B (not working for intellisense)
    public int iB { get; set; }

    public int iC { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想知道是否有更简单的方法来注释intellisense的类属性而不是最小3行的///.

c# intellisense visual-studio

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

为什么必须经常重启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
查看次数

PresentationTimeUs对MediaCodec有什么用?

queueInputBuffer(int index,int offset,int size,long presentationTimeUs,int flags)中 presentationTime的官方定义 如下:

此缓冲区的显示时间戳(以微秒为单位).这通常是应该呈现(呈现)此缓冲区的媒体时间.

为什么解码器需要这个,如果它是应用程序何时呈现解码图像?我已经为presentationTimeUs尝试了一些任意数字,它们似乎对解码没有任何影响.例如,如果我将presentationTimeUs的原始值加倍,则视频的解码方式与原始视频的解码速度完全相同.

谁能对此有所了解?

android mediacodec

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

错误:"重复条目:android/support/v7/appcompat/R $ anim.class"

构建应用程序会生成以下错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v7/appcompat/R$anim.class
Run Code Online (Sandbox Code Playgroud)

我多次清理和建造项目无济于事.它的gradle构建中包含以下内容:

compile 'com.android.support:appcompat-v7:23.3.0'
Run Code Online (Sandbox Code Playgroud)

它还通过其aar文件使用库.该库项目在其gradle构建中也具有上述内容.

有人可以提供如何解决这个问题的提示吗?

android android-build android-library android-support-library android-gradle-plugin

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

是否可以从 DocumentFile 获取常规文件?

对于Android,以下代码返回一个Uri,可用于创建与目录对应的DocumentFile。

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_CUSTOM_FOLDER);
Run Code Online (Sandbox Code Playgroud)

由于库的许多方法都需要一个参数为 java.io.File,我想知道是否可以从 DocumentFile 中获取 java.io.File。

例如,返回的文档树 Uri treeUri 如下:

treeUri.getPath():/tree/primary:DCIM/deeper/evendeeper
treeUri.toString(): content://com.android.externalstorage.documents/tree/primary%3ADCIM%2Fdeeper%2Fevendeeper
Run Code Online (Sandbox Code Playgroud)

以下是ADM中显示的目录: 在此处输入图片说明

android android-file storage-access-framework documentfile

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

Android崩溃与android.app.LoadedApk.makeApplication有关(LoadedApk.java:563)

使用以下堆栈跟踪,应用程序会发生很多崩溃

java.lang.RuntimeException: 
  at android.app.LoadedApk.makeApplication(LoadedApk.java:563)
  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4530)
  at android.app.ActivityThread.access$1500(ActivityThread.java:151)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:135)
  at android.app.ActivityThread.main(ActivityThread.java:5258)
  at java.lang.reflect.Method.invoke(Native Method:0)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:940)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:735)
Caused by: java.lang.IllegalStateException: 
  at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:409)
  at android.app.LoadedApk.makeApplication(LoadedApk.java:555)
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪没有任何应用程序代码的跟踪.考虑到庞大的用户群,它相对较少(每天每10K有效设备大约1个).我无法从上述信息中找出任何线索.任何人都可以对此有所了解,以帮助防止这次崩溃?

编辑(2017-06-14):Google Play控制台的以下屏幕截图显示前6个崩溃群集的堆栈跟踪中没有应用代码: 在此输入图像描述

android.view.WindowManagerGlobal.findViewLocked中的java.lang.IllegalArgumentException

android.view.WindowManagerGlobal.findViewLocked中的java.lang.IllegalArgumentException

android.view.WindowManagerGlobal.findViewLocked中的java.lang.IllegalArgumentException

在tgkill

在tgkill

android.app.LoadedApk.initializeJavaContextClassLoader中的java.lang.IllegalStateException

android

6
推荐指数
0
解决办法
867
查看次数

Android ANR:“主”(tid = 1)线程处于挂起状态。这可能是由于垃圾收集

我想知道应用程序是否可以采取任何措施来避免以下Android ANR(通过Goolge Play Console):

“主”(tid = 1)线程处于挂起状态。这可能是由于垃圾收集造成的。

"main" tid=1 Suspended Thread suspended
"main" prio=5 tid=1 SUSPENDED
  | group="main" sCount=1 dsCount=0 obj=0x41ca59a0 self=0x41a46010
  | sysTid=11845 nice=0 sched=0/0 cgrp=apps handle=1074713820
  | state=S schedstat=( 0 0 0 ) utm=64 stm=22 core=1
  at android.widget.LinearLayout.measureHorizontal (LinearLayout.java)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:590)
  at android.view.View.measure (View.java:15520)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:4825)
  at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1404)
  at android.widget.LinearLayout.measureVertical (LinearLayout.java:695)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:588)
  at android.view.View.measure (View.java:15520)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:4825)
  at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1404)
  at android.widget.LinearLayout.measureHorizontal (LinearLayout.java:1052)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:590)
  at android.view.View.measure (View.java:15520)
  at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:681) …
Run Code Online (Sandbox Code Playgroud)

android android-anr-dialog

6
推荐指数
0
解决办法
783
查看次数

在 Android 11 上从“/apex/com.android.runtime/lib64/bionic/libc.so”中止崩溃

我知道 Android 10 也有类似的问题。我在 Android 11 上偶尔看到中止崩溃。这些崩溃的回溯并非 100% 相同,但非常相似。有人能解释一下可能的原因吗?

例如,以下是两个回溯:

从三星设备:

backtrace:
  #00  pc 000000000004f064  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164)
  #00  pc 000000000053b008  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2340)
  #00  pc 000000000001394c  /system/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+76)
  #00  pc 0000000000006d10  /system/lib64/liblog.so (__android_log_assert+336)
  #00  pc 0000000000041b24  /system/lib64/libmedia_jni.so (android::JMediaCodec::configure(android::sp<android::AMessage> const&, android::sp<android::IGraphicBufferProducer> const&, android::sp<android::ICrypto> const&, android::sp<android::hardware::cas::native::V1_0::IDescrambler> const&, int)+488)
  #00  pc 0000000000045668  /system/lib64/libmedia_jni.so (android_media_MediaCodec_native_configure(_JNIEnv*, _jobject*, _jobjectArray*, _jobjectArray*, _jobject*, _jobject*, _jobject*, int)+588)
  #00  pc 0000000000253200  /system/framework/arm64/boot-framework.oat (art_jni_trampoline+272)
  #00  pc 000000000067a3d0  /system/framework/arm64/boot-framework.oat (android.media.MediaCodec.configure+1472)
  #00  pc 000000000067b034  /system/framework/arm64/boot-framework.oat (android.media.MediaCodec.configure+68)
  #00  pc …
Run Code Online (Sandbox Code Playgroud)

android

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

如何使用 Android Studio Arctic Fox 将 Android 库 aar 作为模块导入?

我曾经能够将库 aar 文件作为模块导入,并且它们一直运行良好。我不知道如何使用最新版本的 Android Studio Arctic Fox 来做到这一点。有人可以提供一些建议吗?

我可以按照官方说明通过在 build.gradle 中添加以下内容来添加 aar 作为依赖项:

implementation files('libs/myLibrary-release.aar')
Run Code Online (Sandbox Code Playgroud)

不幸的是,这将需要依赖应用程序(即在其 build.gradle 中使用上述行来使用库的应用程序)了解 myLibrary 使用哪些外部库并添加所有依赖项。例如,如果 myLibrary 有 30 个依赖项,例如“implementation 'joda-time:joda-time:2.10.5'”,则每个依赖应用程序都必须具有这 30 个依赖项。如果 myLibrary 更新了新的依赖项,则所有依赖应用程序也需要添加它。最糟糕的是,应用程序可以在没有这些依赖项的情况下正常构建和启动,但在需要缺少依赖项时会在运行时崩溃

android-library android-studio android-studio-arctic-fox

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