颜色选择器定义如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true">
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/gray" />
</shape>
</item>
<item android:state_focused="true">
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#66666666" />
</shape>
</item>
<item>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/translucent_icon_background" />
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
在 Android Studio 中,“item”被标记为红色,表示出现错误,如下图所示:

根据测试,该应用程序运行良好。我之所以这么问,是因为我担心由于该错误,在某些设备上可能会出现问题。有人能解释一下这个错误吗?更具体地说,它可以被忽略吗?
以下代码在所有 Android 设备 Android 7.0 上几乎 100% 运行良好:
DatagramSocket clientSocket = new DatagramSocket();
clientSocket.setSoTimeout(4000);
clientSocket.setReuseAddress(true);
clientSocket.setBroadcast(true);
...
DatagramPacket dpSend = new DatagramPacket(baSendData, baSendData.length, InetAddress.getByName("239.255.255.250"), 3702);
clientSocket.send(dpSend);
Run Code Online (Sandbox Code Playgroud)
在 Android 7.0 上,仅在 Android 7.0 上,clientSocket.send(dpSend) 偶尔会生成以下错误。我想强调“偶尔”。大多数时候它工作得很好。
我想知道是否有人可以提供对 Android 7.0 的任何见解,以阐明为什么异常仅发生在 Android 7.0 上。
sockets multicast datagram multicastsocket android-7.0-nougat
Android应用程序具有以下代码:
public class FooActivity extends AppCompatActivity{
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
}
}
Run Code Online (Sandbox Code Playgroud)
单击3点溢出菜单按钮时,菜单会正常显示,并调用此MenuOpened(int featureId,菜单菜单),但菜单为空.这是正常的吗?
为了帮助重现该问题,需要执行以下步骤在Visual Studio 2015中创建.NETStandard1.6 PCL:
发生以下错误:
>C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets(140,5): error : Your project is not referencing the ".NETPlatform,Version=v5.0" framework. Add a reference to ".NETPlatform,Version=v5.0" in the "frameworks" section of your project.json, and then re-run NuGet restore.
Run Code Online (Sandbox Code Playgroud)
以下是project.json:
{
"supports": {},
"dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.6": {}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一个关于如何在"框架"部分中添加对".NETPlatform,Version = v5.0"的引用的提示吗?我尝试了以下方法:
"donet5.4":{}
"donet5.0":{}
两者都不起作用.
假设:
Dictionary<Guid, MyClass> dict;
Run Code Online (Sandbox Code Playgroud)
两者之间有什么区别吗?
dict.Keys.Contains(key)
Run Code Online (Sandbox Code Playgroud)
dict.ContainsKey(key)
Run Code Online (Sandbox Code Playgroud)
我认为没有区别,但我现在不确定.
AAR库已使用com.google.guava.
如果应用在其build.gradle中包含以下内容:
api 'com.google.guava:guava:27.0-android'
Run Code Online (Sandbox Code Playgroud)
构建应用程序会生成以下错误:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Program type already present: com.google.common.util.concurrent.internal.InternalFutures
Run Code Online (Sandbox Code Playgroud)
如果我不包含"api'com.google.guava:guava:27.0-android'",则可以构建应用程序,但是当它到达使用Guava方法时,它会出现java.lang.NoClassDefFoundError的运行时错误: Iterables.find
以下命令曾经完美地工作:
C:\tools\apache-cxf-3.3.1\bin\wsdl2java -client -d generated foo.wsdl
Run Code Online (Sandbox Code Playgroud)
它不再适用于最新版本的 JDK - 12。我已经下载了最新版本的 Apache CXF,但仍然遇到相同的错误:
-Djava.endorsed.dirs=C:\tools\apache-cxf-3.3.1\bin\..\lib\endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
谁能提供有关如何解决此问题的提示?
我今天早些时候将Android Studio升级到3.4,并且第一次使用默认的收缩器R8。我将proguard-project.txt图书馆项目的内容复制到proguard-rules.pro。proguard-project.txt完美地为这个项目工作,生成了供其他应用程序项目使用的aar文件。
文件proguard-rules.pro似乎并没有被使用。该项目的内容如下build.gradle:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.Release
}
debug {
signingConfig signingConfigs.Debug
}
}
Run Code Online (Sandbox Code Playgroud)
proguard-rules.pro 具有以下内容:
# Preserve all public classes, and their public and protected fields and methods.
-keep public class * {
public protected *;
}
Run Code Online (Sandbox Code Playgroud)
谁能提供解决此问题的技巧?
Android Studio 最近默认开始使用R8代替ProGuard。
来自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)
通常,我确切知道net.foo.anroid.Foo.wb与哪个文件相对应,并且行号(例如453、213 ...)是ProGuard源文件中的实际行号。
但是,对于R8,找出哪一行的唯一方法是在mapping.txt中查找它们。
这确实是一个很大的麻烦。如果没有很好的方法从堆栈跟踪中快速找到源代码,仅出于这个原因,我将返回ProGuard。
有没有办法防止R8更改行号?