我正在使用Android数据库组件室,我想在应用程序Gradle中的依赖项中使用以下代码导出模式:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 14
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
javaCompileOptions{
annotationProcessorOptions{
arguments= ["room.schemaLocation":
"$projectDir/schemas".toString()]
}}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'androidx.appcompat:appcompat:1.0.0'
//room
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
}
然而,我面临以下错误:
ERROR: Could not find method javaCompileOptions() for arguments [build_ao1pt454otpr48gba8f3r0tu$_run_closure1$_closure4@53308877] on object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension.
package com.example.myapplication.database;
import android.content.Context;
import android.util.Log;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import com.example.myapplication.model.DataItem;
//Database which list the entities in database and the DAO
@Database(entities = {DataItem.class}, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
private static final String LOG_TAG = AppDatabase.class.getSimpleName();
private static final Object LOCK = new Object();
private static final String DATABASE_NAME = "Datalist";
private static AppDatabase sInstance;
public static AppDatabase getInstance(Context context) {
if (sInstance == null) {
synchronized (LOCK) {
Log.d(LOG_TAG, "Creating new database instance");
sInstance = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, AppDatabase.DATABASE_NAME)
.build();
}
}
Log.d(LOG_TAG, "Getting the database instance");
return sInstance;
}
public abstract DataDao dataItemDao();
public static void destroyAppDatabase(){
sInstance = null;
}
}
这是我的项目Gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我不确定我做错了什么。有人能建议一下吗?谢谢!
我认为您需要将compile选项移到android选项中(defaultConfig内部):-
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 14
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions{
annotationProcessorOptions{
arguments= ["room.schemaLocation":
"$projectDir/schemas".toString()]
}}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'androidx.appcompat:appcompat:1.0.0'
//room
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
}
打开文件 这是我的gradle文件: 我正在得到 错误:(23,0)在类型为org的对象上找不到参数[目录'libs']的方法实现()。格雷德尔。应用程序编程接口。内部的人工制品dsl。依赖关系。DefaultDependencyHandler。打开文件
错误消息:-在类型为org的对象上找不到参数[directory'libs']的方法实现()。格雷德尔。应用程序编程接口。内部的人工制品dsl。依赖关系。DefaultDependencyHandler。 代码
我是Android应用开发新手。我正在尝试使用TabLayout创建一个Android应用程序,并在文件。 但在运行该应用程序时,我发现构建错误如下 Gradle sync失败:在类型为org的对象上找不到参数[directory'libs']的compile()方法。格雷德尔。应用程序编程接口。内部的人工制品dsl。依赖关系。DefaultDependencyHandler。有关更多详细信息,请
我有一个基于gradle的Android项目,有4个子模块——两个库和两个应用程序。我试图通过将一些共享代码/配置移动到顶层build.gradle文件并使用来简化每个子模块的build.gradle文件。 文件系统结构如下所示: 问题是,如果我向子项目添加一个部分,那么gradle任务就会失败。例如,这是我的顶级 build.gradle 文件: 运行gradle返回这个: 出错的地方:评估根项
分级同步消息为: 错误:(24,0)找不到Gradle DSL方法:“Android()”可能的原因: 我不太确定这个方法到底在哪里。如果它是位于应用程序的文件中的一个,我仍然不知道从这里到哪里去。感谢任何帮助。
当我试图从GitHub复制这个回购时。我已经尝试了官方文件禁用杰克,也检查了SO link1、link2,但它们没有多大帮助,因为我试图移除 从分级,按照官方文档,但错误仍然存在,也试图无效缓存和重新启动,但没有任何结果。非常感谢任何帮助 模块级分级文件: 项目级分级文件: