错误:包com.android.annotations不存在

时间:2016-11-02 12:56:04

标签: android android-studio gradle android-gradle android-support-library

我有以下课程

import { Component, EventEmitter,NgModule } from '@angular/core';
import { MyService } from './myService';

    @Component({
    //...
    })
    export class TargetComponent implements OnInit {
        constructor( 
            private myService: MyService
        ) {
           this.myService.resultIdFound.subscribe((result: any) => {
                 console.log(result)
            });

        }    
        //....    
    }

这是我的build.gradle文件(省略了一些部分)

import com.android.annotations.NonNullByDefault;

@NonNullByDefault
public final class Log {
    ...
}

在Android Studio中,没有针对我的课程提出警告

enter image description here

然而,当我尝试构建并运行我的应用程序时,我从gradle

中收到此错误
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '24.0.1'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 2
        versionName "0.2"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

}

dependencies {    
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:support-annotations:25.0.0'
    compile 'com.android.support:design:25.0.0'
}

14 个答案:

答案 0 :(得分:4)

在迁移到androidx时,我遇到了类似的问题。

如果通过将下面两行添加到gradle.properties中不能解决问题

android.useAndroidX=true
android.enableJetifier=true

然后尝试

  1. 在Android Studio 3.2及更高版本中,您可以通过从菜单栏(developer.android.com)中选择重构>迁移到AndroidX ,将现有项目迁移到AndroidX。

如果您仍然遇到迁移问题,请手动尝试替换引起问题的库。

例如

如果您对android.support.annotation.NonNull有疑问,请按照以下类映射表中的说明将其更改为androidx.annotation.NonNull

Class Mappings

Maven Artifact Mappings

答案 1 :(得分:3)

要自动修复React Native的所有android至androidx问题,(前提条件npx)

在位于ProjectFolder / android / gradle.properties的gradle.properties文件中,将以下两个标志添加为true

android.useAndroidX=true
android.enableJetifier=true

执行

npm install --save-dev jetifier
npx jetify
npx react-native run-android

在package.json中,将以下内容添加到脚本中

  "postinstall" : "npx jetify"

更多信息,https://github.com/mikehardy/jetifier

答案 2 :(得分:2)

注释来自support's library中打包的android.support.annotation

作为另一个选项,您可以使用@NonNull注释,表示参数,字段或方法返回值永远不能为空。
它是从import android.support.annotation.NonNull;

导入的

答案 3 :(得分:2)

您可以找到support-annotations android.support.annotation库的官方javadoc {/ 3}}。

  

错误:(3,31)错误:包com.android.annotations不存在

正如您所看到的,所有课程都在同一个包 com.android.annotations 而不是NonNullByDefault

  

错误:(7,2)错误:找不到符号类NonNullByDefault

该套餐中的课程 import java.util.Scanner; public class Sort { public static void Sort(int[] a, int n) { int i, importArray = a[0], denominator = 1, arrayLength = a.length; System.out.println("\nUnsorted Array"); for (i = 0; i < arrayLength; i++) { if (i + 1 != arrayLength) { System.out.print(a[i] + ":"); } else { System.out.print(a[i]); } } int[] sorter = new int[n]; for (i = 1; i < arrayLength; i++) { if (a[i] > importArray) { importArray = a[i]; while (importArray / denominator > 0) { int[] bucket = new int[n]; for (i = 0; i < arrayLength; i++) { bucket[(a[i] / denominator) % 10]++; } for (i = 1; i < n; i++) { bucket[i] += bucket[i - 1]; } for (i = arrayLength - 1; i >= 0; i--) { sorter[--bucket[(a[i] / denominator) % 10]] = a[i]; } for (i = 0; i < arrayLength; i++) { a[i] = sorter[i]; } denominator *= 10; } } } } public static void main(String[] args) { Scanner userInput = new Scanner(System.in); System.out.println("Radix Array Sorting"); int n, i; System.out.println("Enter Number of Array Elements"); n = userInput.nextInt(); int array[] = new int[n]; System.out.println("Enter " + n + " Elements For Array"); for (i = 0; i < n; i++) { array[i] = userInput.nextInt(); } Sort(array, n); System.out.println("\nElements After Sorting"); for (i = 0; i < n; i++) { if (i + 1 != n) { System.out.print(array[i] + ":"); } else { System.out.print(array[i]); } } } } 也不存在

答案 4 :(得分:2)

打开gradle.properties并使用以下代码:

android.useAndroidX=false
android.enableJetifier=false

或者U也可以使用这些依赖项:

implementation 'androidx.appcompat:appcompat:1.0.2'
 implementation 'androidx.annotation:annotation:1.0.2'

答案 5 :(得分:1)

您不应该手动编辑任何代码 jetify 应该为您完成这项工作,如果您使用react-native从cli运行/构建,则无需执行任何操作,但是如果您正在运行/构建Andriod studio,您需要在构建前运行 jetify ,这是如何自动执行此操作:

1-从上面的菜单转到编辑配置:

enter image description here

2-添加屏幕底部,您将在启动前找到它,单击加号并选择运行外部工具

enter image description here

2-填写以下信息,请注意工作目录是您的项目根目录(不是android目录):

enter image description here

3-确保先执行此操作,最后,您的配置应如下所示: enter image description here

答案 6 :(得分:1)

只需安装(它会自动修复)

npm install --save-dev jetifier <--------avoid if aleardy installed start from below lines
npx jetify

然后运行

npx cap sync

终于

  npx react-native run-android

  

答案 7 :(得分:0)

就我而言,我不得不使用

import androidx.annotation...

代替

import android.annotation...

我迁移到AndroidX并忘记更改它。

答案 8 :(得分:0)

在gradle中使用实现androidx.appcompat:appcompat:1.0.2,然后

将android.support.annotation更改为androidx.annotation

答案 9 :(得分:0)

如果黄油刀自动生成的文件出错 然后更新黄油刀依赖版本

implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

答案 10 :(得分:0)

您需要做的就是将类导入中的“ import android.support.annotation.Nullable”替换为“ import androidx.annotation.Nullable;”

这是一种常见的做法..每当出现导入问题...删除该导入,只需在相关类上按Alt + Enter。.这将为您提供“导入类”的选项。提示输入后,事情将会得到解决解决...

答案 11 :(得分:0)

在迁移到androidx时,我遇到了类似的问题。这个问题是由于Old Butter Knife库的依赖性引起的。

如果您使用黄油刀,则至少应使用9.0.0-SNAPSHOT或更高版本的黄油刀。

implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT' annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'

答案 12 :(得分:0)

对我来说,它是npm的旧版本。

先运行npm install npm@latest -g,然后再运行npm install

答案 13 :(得分:0)

对于Ionic,请尝试以下操作:

ionic cordova plugin add cordova-plugin-androidx
ionic cordova plugin add cordova-plugin-androidx-adapter

出现错误是因为此应用未使用androidX,但这些插件解决了错误。