我有以下课程
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中,没有针对我的课程提出警告
然而,当我尝试构建并运行我的应用程序时,我从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'
}
答案 0 :(得分:4)
在迁移到androidx时,我遇到了类似的问题。
如果通过将下面两行添加到gradle.properties中不能解决问题
android.useAndroidX=true
android.enableJetifier=true
然后尝试
如果您仍然遇到迁移问题,请手动尝试替换引起问题的库。
例如
如果您对android.support.annotation.NonNull
有疑问,请按照以下类映射表中的说明将其更改为androidx.annotation.NonNull
。
答案 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"
答案 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-从上面的菜单转到编辑配置:
2-添加屏幕底部,您将在启动前找到它,单击加号并选择运行外部工具
2-填写以下信息,请注意工作目录是您的项目根目录(不是android目录):
答案 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,但这些插件解决了错误。