标签: android-annotations

Gradle configuration.apt定义

我开始在Android Studio上使用Gradle,当我在项目中添加AndroidAnnotations支持时,我在google上发现必须在gradle.build文件中添加以下内容:

configurations {
    apt
}
Run Code Online (Sandbox Code Playgroud)

--

dependencies {
    apt 'com.googlecode.androidannotations:androidannotations:2.7.1'
    compile 'com.googlecode.androidannotations:androidannotations-api:2.7.1'
}
Run Code Online (Sandbox Code Playgroud)

--

android.applicationVariants.all { variant ->
    aptOutput = file("${project.projectDir}/gen")
    println "****************************"
    println "variant: ${variant.name}"
    println "manifest:  ${variant.processResources.manifestFile}"
    println "aptOutput:  ${aptOutput}"
    println "****************************"

    variant.javaCompile.doFirst {
        println "*** compile doFirst ${variant.name}"
        aptOutput.mkdirs()
        variant.javaCompile.options.compilerArgs += [
                '-processorpath', configurations.apt.getAsPath(),
                '-AandroidManifestFile=' + variant.processResources.manifestFile,
                '-s', aptOutput
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我在网络上找不到的第一件事就是apt的意思。我浏览了gradle文档(我找了apt一词),没有找到任何东西。

另一个疑问是,由于我已经在“首选项”菜单上添加了注释库,为什么我需要编写最后一个脚本来编写生成的文件?

非常感谢你。

java android gradle android-annotations

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

Gradle with java 8 for retrolambda - Android无法找到注释TargetApi

我试图让retrolambda通过与gradle这个Android编译工作.对java 8的更改导致了android注释的一些问题.

我从这些帖子中尝试了几乎所有内容:(在阅读所有这些链接之前更新3)
http://code.google.com/p/android/issues/detail?id=55764
https://bitbucket.org/hvisser/ android-apt
AndroidAnnotations Nothing Generated,Empty Activity
Android studio + Gradle + Android Annotations
如何使用Google Android Gradle Plugin编译AndroidAnnotations?

但我一直得到这些错误:

Gradle:错误:包android.annotation不存在

Gradle:错误:找不到符号类TargetApi

那些gradle警告:

Gradle ::支持处理器'com.googlecode.androidannotations.AndroidAnnotationProcessor'支持的源版本'RELEASE_6'小于-source'1.8'

Gradle ::任何处理器都无法识别以下选项:'[androidManifestFile]'


这是我的build.gradle文件,使用/sf/answers/1176155151/(链接3最热门的解决方案):

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
        classpath 'com.google.guava:guava:14.0.1'
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
        classpath 'me.tatarka:gradle-retrolambda:1.1.1'
    }
}

repositories {
    mavenCentral()
    maven { url 'http://download.crashlytics.com/maven' }
}

apply plugin: 'android'
apply plugin: 'crashlytics'
apply plugin: 'retrolambda'

ext.daggerVersion = '1.0.0'
ext.androidAnnotationsVersion = …
Run Code Online (Sandbox Code Playgroud)

android gradle java-8 android-annotations android-gradle-plugin

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

使用AndroidAnnotations时@Background和屏幕旋转,如何确保收到回调?

使用@Background注释时,我们开始一个新线程.如果我们在这个线程正在执行旋转屏幕的位置时,我们是否会丢失该线程的回调或者如何处理?使用Loaders,它在屏幕后面排序,因此我们不必担心在使用异步任务时经常出现的问题.

但@Background注释如何解决这个问题呢?

android annotations android-annotations

4
推荐指数
1
解决办法
2414
查看次数

如何正确配置IntelliJ IDEA以处理Android注释?

如何正确配置IntelliJ IDEA以处理注释?

使用maven目标processor:process工作正常,但如何在不使用IntelliJ IDEA中的maven目标的情况下处理(使用它的注释处理首选项)?

在IntelliJ的首选项/注释处理器下,我有以下设置:" Enable annotation processing"选中,选项" Obtain processors from project classpath"

我将" Annotation Processors"部分留空,因为我应该通过类路径自动找到它.在处理过的模块下,我选择我的Android模块,然后选择' target/generated-sources/apt'作为' Generated Sources Directory Name'.

在我的项目结构中,我设置了模块依赖项" Maven: com.googlecode.androidannotations:androidannotations:2.6"和" Maven: com.googlecode.androidannotations:androidannotations:api:2.6",以便我在类路径中拥有处理器.

但是构建项目不会处理注释,而是会收到警告' Annotation processing without compilation requested but no processors were found.'

如果我尝试手动将注释处理器设置为' com.googlecode.androidannotations.AndroidAnnotationProcessor'并选择' /path/to/libs/androidannotations-2.6-api.jar'作为处理器的路径,那么com.googlecode.androidannotations.AndroidAnnotationProcessor在尝试构建项目时,我会收到错误" 未找到注释处理器" .

这是我在截图中的配置:http://imageshack.us/photo/my-images/841/intellijaa.png/

在此输入图像描述

android intellij-idea android-annotations

4
推荐指数
1
解决办法
5544
查看次数

使用AndroidAnnotations的ClassNotFoundException

我试图使用AndroidAnnotaions,但ClassNotFoundException在我的项目中收到错误.

出于测试目的,我创建了一个新项目,Activity我仍然得到错误.我的文件:

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rodrigora.testannotations"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.rodrigora.testannotations.MainActivity_"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

package com.rodrigora.testannotations;

import android.app.Activity;
import android.view.Menu;

import com.googlecode.androidannotations.annotations.EActivity;

@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu); …
Run Code Online (Sandbox Code Playgroud)

android android-annotations

4
推荐指数
1
解决办法
3707
查看次数

android实现方法到不同的api级别

我在谷歌开发者的一个Android视频中看到,他们实现了两种方法,并通过注释定义了应该根据api级别调用哪种方法.

不幸的是,我再也找不到视频了(我记不起哪个视频了),所以我在StackOverflow上搜索了这个问题,发现了这个:针对不同API级别的不同Java方法

在他使用注释@apilevel的问题中,我找不到那个注释.

基本上,我想要做的是:

@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private int getDisplayWidth(Display display){
    Point size = new Point();
    display.getSize(size);
    return size.x;
}

@TargetApi(Build.VERSION_CODES.FROYO)
private int getDisplayWidth(Display display){
    return display.getWidth();
}
Run Code Online (Sandbox Code Playgroud)

但是ADT给了我重复的方法错误.

java android android-annotations

4
推荐指数
1
解决办法
2536
查看次数

Android Studio找不到javax.annotation.processing.AbstractProcessor

我想学习Annotation,并创建一个演示项目.但是当我创建一个扩展AbstractProcessor的类时,Android Studio找不到这个类.我该如何添加它.

android android-annotations java-annotations

4
推荐指数
1
解决办法
2357
查看次数

Android:NullPointerException尽管@NonNull

我正在使用注释来确保参数不为null,假设这会导致编译器检查.

public @Nullable ApplicationAccount accountForKey(@NonNull String key) {

    return accounts.get(key);
}
Run Code Online (Sandbox Code Playgroud)

但是,通过运行此代码,我在此行上得到了NullPointerException

java.util.concurrent.ConcurrentHashMap.get (ConcurrentHashMap.java:883)
Run Code Online (Sandbox Code Playgroud)

那么注释有什么意义呢?

如果我像这样写额外的支票,那就更加模糊了

return key!=null?accounts.get(key):null;
Run Code Online (Sandbox Code Playgroud)

Android Studio警告我,检查没用!

更新:完整调用堆栈:

Caused by java.lang.NullPointerException
       at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:883)
       at co.getcontrol.services.MerchantCenter.accountForKey(MerchantCenter.java:72)
       at co.getcontrol.model.customers.CustomersAggregator.loadCustomerDetails(CustomersAggregator.java:91)
       at co.getcontrol.model.customers.CustomerDetailsPresenter.callData(CustomerDetailsPresenter.java:39)
       at co.getcontrol.reskin.ui.customers.CustomerDetailsViewFragment.onCreateView(CustomerDetailsViewFragment.java:152)
       at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
       at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
       at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
       at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)
       at co.getcontrol.ui.ControlActivity.onStart(ControlActivity.java:13)
       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174)
       at android.app.Activity.performStart(Activity.java:5353)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2352)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441)
       at android.app.ActivityThread.access$900(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
       at android.os.Handler.dispatchMessage(Handler.java:110)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:5345)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
       at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception non-nullable android-annotations

4
推荐指数
1
解决办法
1988
查看次数

AndroidAnnotations 和 Dagger 2

我正在阅读有关依赖注入的内容,发现 2 个引起我注意的库,AndroidAnnotations 和 Dagger 2。我看到的是 AA 有很多功能,包括 DI,但大多数开发人员都使用 Dagger 2 进行 DI。

我想知道 DI 与 AA 和 DI 与 Dagger 2 有什么区别?如果我使用 AA 就意味着我不需要 Dagger 2?

我找不到太多关于 DI 与 AA 以及与其他库的比较的信息。

任何信息都会有很大帮助。

android dependency-injection android-annotations dagger-2

4
推荐指数
1
解决办法
983
查看次数

如何在 Kotlin 中使用 AndroidAnnotation @SharedPref

我正在尝试@SharefPref在 kotlin 中使用AndroidAnnotations,但出现以下错误

org.androidannotations.annotations.sharedpreferences.Pref can only be used on an element that extends org.androidannotations.api.sharedpreferences.SharedPreferencesHelper
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

//Interface
@SharedPref(SharedPref.Scope.APPLICATION_DEFAULT)
open interface MyPreferences {
    @DefaultInt(-1)
    fun someIntValue():Int
}

//Fragment
@Pref
lateinit open var sharedPref:CongressPreferences_

//usage within fragment
val get: Int = sharedPref.selectedEventId().get()
Run Code Online (Sandbox Code Playgroud)

android kotlin android-annotations kotlin-android-extensions

4
推荐指数
1
解决办法
789
查看次数