gpt4 book ai didi

AndroidAnnotations 没有生成,空 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:52 25 4
gpt4 key购买 nike

我正在尝试在 Android Studio 中使用 AndroidAnnotations 创建一个项目。当我构建并运行该项目时,一切似乎都可以正常编译,但除了该应用程序的空白 Activity 外,我什么也得不到。此外,AndroidAnnotations 似乎没有生成任何内容。

我添加了 androidannotations-api-2.7.1.jar 作为我项目的依赖项,并启用了注释处理,处理器路径是 androidannotations-2.7.1.jar 的路径,它位于与 androidannotations-api-2.7.1.jar 不同的文件夹中。我已经检查了与模块内容根目录相关的存储生成源,并为源尝试了许多不同的目录——从 generatedgen/aa,再到(当前)build/source/aa 以匹配生成的文件似乎是在 Android Studio 中创建的位置。没有任何效果。我已将 list 中的 Activity 名称更改为 Activity_,并将配置设置为在项目运行时启动它。

我仅有的其他依赖项是 android-support-v4 和 ActionBarSherlock。我已经尝试禁用这两个,但没有结果。我最初计划将 Roboguice 与 AndroidAnnotations 结合使用,但暂时禁用了它以尝试专注于此问题。

我也在使用或尝试使用 Gradle。这是目前我的 build.gradle:

buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}

apply plugin: 'android'

dependencies {
compile files('libs/android-support-v4.jar')
compile files('libs/actionbarsherlock-4.3.1.jar')
compile files('libs/androidannotations-api-2.7.1.jar')
}

android {
compileSdkVersion 17
buildToolsVersion "17.0.0"

defaultConfig {
minSdkVersion 7
targetSdkVersion 17
}
}

但是,我还没有真正弄清楚 Gradle 是如何工作的,所以我主要只是像普通项目一样手动添加依赖项,然后将编译行放入 Gradle 中,这样项目才能正确编译。我知道这可能不是正确的使用方法。

我的activity和它的布局是相当标准的,我只是从官方指南中复制它们以开始使用AndroidAnnotations。

更新:所以我回到 Maven 来测试构建,我注意到了一些奇怪的事情。似乎即使我如何在 Maven 中设置它,也没有生成任何东西。但是,通过 Maven 构建,我可以在不将 list 中的 Activity 名称更改为 Activity_ 的情况下运行项目,并且项目将正确编译和运行。这很奇怪,似乎它可能会进一步混淆问题,或者如果它也表明 Gradle 存在某些问题,则可以简化问题。

最佳答案

这类似于robotoaster的响应,但它在0.4.1中有效,它将生成的java源文件放在一个新目录中(与其他生成的源文件夹一致),这允许Android Studio看到源并停止提示.它还适用于更多注释处理器。只需将注释处理器添加到“apt”配置即可。

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.1'
}
}
apply plugin: 'android'

repositories {
mavenCentral()
}

ext.daggerVersion = '1.0.0';
ext.androidAnnotationsVersion = '2.7.1';

configurations {
apt
}

dependencies {
apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}"
compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}"
apt "com.squareup.dagger:dagger-compiler:${daggerVersion}"
compile "com.squareup.dagger:dagger:${daggerVersion}"
}

android {
compileSdkVersion 17
buildToolsVersion "17.0.0"

defaultConfig {
minSdkVersion 10
targetSdkVersion 17
}
}

android.applicationVariants.all { variant ->
aptOutput = file("${project.buildDir}/source/apt_generated/${variant.dirName}")
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
]
}
}

更新:这仍然可以编译,但是使用 Android Studio 0.1.1 你不能再用 UI 编辑你的项目结构,所以你不能告诉 AS 查看新的源文件夹。我想将该文件夹添加到 sourceSet,但变体似乎实际上没有自己的 sourceSet,所以我不确定将它放在哪里

更新 2:您可以让 Android Studio 0.1.1 识别 apt 生成的源文件,方法是在项目浏览器中右键单击 build/source/apt_generated/debug 并选择 将目录标记为->源根目录

更新 3:从 gradle 插件 0.5.5 开始,android.applicationVariants.each 不再工作。请改用 android.applicationVariants.all。请参阅 android.com 处的变更日志:访问变体容器不会强制创建任务。这意味着 android.[application|Library|Test]Variants 在评估阶段将为空。要使用它,请使用 .all 而不是 .each

关于AndroidAnnotations 没有生成,空 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com