什么区别RequiresApi和TargetApi?
kotlin中的样本:
@RequiresApi(api = Build.VERSION_CODES.M)
@TargetApi(Build.VERSION_CODES.M)
class FingerprintHandlerM() : FingerprintManager.AuthenticationCallback()
Run Code Online (Sandbox Code Playgroud)
注意:FingerprintManager.AuthenticationCallback需要apiM
注2:如果我不使用TargetApi lint失败并出错 class requires api level 23...
我正在评估Android应用程序的依赖注入(DI)框架.最有力的竞争者是:Dagger(有Butter Knife)和Android Annotations.据我所知,Dagger和ButterKnife来自同一个源头,他们相互补充.这是我正在寻找的关键矩阵:
android dependency-injection android-annotations dagger butterknife
我有一个枚举:
public enum AppEnums {
SERVICE_ERROR,
CONNECTION_ERROR;
}
Run Code Online (Sandbox Code Playgroud)
我想在Android Annotation的intDef中使用它:
@IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}
Run Code Online (Sandbox Code Playgroud)
错误显示:
找到不兼容的类型,必填:'long'
我能用这种不相容的方法做些什么?
我不想手动处理AppEnum参数的值,Enum通常会自动创建值.AppEnums.CONNECTION_ERROR.ordinal()返回enum参数的int值,但这里不起作用.
java enums android android-annotations android-support-library
我java.io.EOFException在Android上使用Spring REST模板时收到了.
stacktrace原因如下:
Caused by: java.io.EOFException
at libcore.io.Streams.readAsciiLine(Streams.java:203)
at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:560)
at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:813)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
at org.springframework.http.client.SimpleClientHttpResponse.getRawStatusCode(SimpleClientHttpResponse.java:49)
at org.springframework.http.client.SimpleClientHttpResponse.getStatusCode(SimpleClientHttpResponse.java:55)
at org.springframework.http.client.BufferingClientHttpResponseWrapper.getStatusCode(BufferingClientHttpResponseWrapper.java:47)
at com.company.util.LoggingClientHttpRequestInterceptor.intercept(LoggingClientHttpRequestInterceptor.java:33)
at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:81)
at com.company.api.interceptor.AuthTokenInterceptor.intercept(AuthTokenInterceptor.java:51)
at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:81)
at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:67)
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46)
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:63)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:475)
... 14 more
Run Code Online (Sandbox Code Playgroud)
另一个类似的堆栈跟踪:
org.springframework.web.client.ResourceAccessException: I/O error: null; nested exception is java.io.EOFException
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:490)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:438)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:414)
at com.company.api.ApiClient_.logLoginAttempt(ApiClient_.java:299)
at com.company.security.CompanyAuthenticationService$2.onCreateCall(CompanyAuthenticationService.java:206)
at com.company.api.SafeApiCall.doInBackground(SafeApiCall.java:49)
at com.company.api.SafeApiCall.doInBackground(SafeApiCall.java:22)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856) …Run Code Online (Sandbox Code Playgroud) 所以我想尝试新的Android Studio并导入我的eclipse项目(我生成了一个gradle构建文件).工作得很好.
唯一似乎不起作用的库是AndroidAnnotations.我在File> Settings> Compiler> Annotation Processing下选择了androidannotations-2.7.jar文件.
作为生产源目录,我选择了"gen".但是不会生成像MainActivity_这样的生成文件.我错了什么?
我无法配置我的IDE(Intellij IDEA 12)来使用AndroidAnnotations(http://androidannotations.org/)以前的配置截图与jetbrains刚发布的新ide不同.有人可以给我一步一步的配置.
我已经看过几个关于在Android Studio中使用AndroidAnnotations框架编译Android应用程序的讨论和博客,特别是这个,但没有一个帮助我开始.
我正在使用Android Studio 0.8.9,我指向下载的Gradle 2.1二进制文件.我正在使用Ubuntu 14.04.
gradle编译过程说我在给定位置缺少AndroidManifest.xml的副本(请参阅下面的输出)虽然我在使用文件浏览器导航到此文件夹时找到了它.
另请注意,为了删除警告,我更换了
variant.processResources.manifestFile
Run Code Online (Sandbox Code Playgroud)
通过
variant.outputs.processResources.manifestFile
Run Code Online (Sandbox Code Playgroud)
在gradle脚本中.
这是我的gradle构建脚本:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.13.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.3'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
configurations {
apt
}
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile files('libs/androidsvg-1.2.1.jar')
compile 'com.android.support:appcompat-v7:20.0.0'
compile 'org.androidannotations:androidannotations-api:3.0'
apt 'org.androidannotations:androidannotations:3.0'
}
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 20
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个类来发现网络上的服务.我曾尝试使用Android的NSD,它确实发现服务很好,但它只支持16级及以上的API级别,而且我似乎无法检索服务信息中的txtRecord字段(由于某种原因它返回null).原来这是一个已知问题......
所以现在我正在尝试使用jmDNS,它似乎根本找不到服务.这是我的班级(我正在使用AndroidAnnotations框架)MDnsHelper:
@EBean
public class MDnsHelper implements ServiceListener {
public static final String SERVICE_TYPE = "_http._tcp.local";
Activity activity;
private JmDNS jmdns;
private MulticastLock multicastLock;
WifiManager wm;
InetAddress bindingAddress;
boolean isDiscovering;
public void init(Activity activity) {
this.activity = activity;
isDiscovering = false;
wm = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
multicastLock = wm.createMulticastLock(activity.getPackageName());
multicastLock.setReferenceCounted(false);
}
@Background
public void startDiscovery() {
if (isDiscovering)
return;
System.out.println("starting...");
multicastLock.acquire();
try {
System.out.println("creating jmdns");
jmdns = JmDNS.create();
System.out.println("jmdns created");
} catch (IOException e) {
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) " AndroidAnnotations "可靠吗?我已经搜索了它,但找不到很多文章(评论或教程).
我一直在考虑在我的项目中使用这个库,该项目已经有很多用户.在采用它之前,我需要一个良好的声誉.所以我的担心主要是,
提前致谢.
这个项目在更新到ADT22之前创造了奇迹.我已经失去了一天,因为我不知道我必须下载构建工具,而且我担心因为这个原因我将失去另一个.
当我尝试构建两天前工作的相同代码时,我遇到了这个异常:
com.cidaut.blueparking fatal error : Unable to instantiate activity \
ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \
java.lang.ClassNotFoundException: \
Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
/data/app/com.cidaut.blueparking-1.apk
java.lang.RuntimeException: Unable to instantiate activity \
ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \
java.lang.ClassNotFoundException: \
Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
/data/app/com.cidaut.blueparking-1.apk
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: \
Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \ …Run Code Online (Sandbox Code Playgroud) android classnotfoundexception eclipse-adt android-annotations
android ×10
android-nsd ×1
butterknife ×1
dagger ×1
eclipse-adt ×1
enums ×1
eof ×1
gradle ×1
java ×1
jmdns ×1
kotlin ×1
mdns ×1
spring ×1