我根据使用最新版AndroidStudio的维基说明设置了ActiveAndroid。我正在使用产品Flavors。这是我的gradle构建文件:
apply plugin: 'android'
apply plugin: 'android-apt'
apt {
arguments {
androidManifestFile variant.processResources.manifestFile
resourcePackageName android.defaultConfig.packageName
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
a {
packageName "com.a.a"
}
b {
packageName "com.a.b"
}
c {
packageName "com.a.c"
}
}
}
dependencies {
apt "org.androidannotations:androidannotations:3.0+"
compile "org.androidannotations:androidannotations-api:3.0+"
compile 'com.android.support:support-v4:19.0.1'
compile 'com.android.support:appcompat-v7:19.0.1'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Gradle构建文件但是当我在设备上编译/去调试时,我收到两个错误:
错误::无法找到生成的null.R类
和
错误:任务执行失败':ml:compileADebugJava'。
编译失败;有关详细信息,请参阅编译器错误输出。
我为我的构建文件尝试了很多设置,但是在我的生活中不能让它工作。此外,当我尝试从以下位置更改AndroidManifest时:
机器人:名称=" com.a.a.MainActivity"
到
机器人:名称=" com.a.a.MainActivity _"
它声明无法找到课程。
我使用的是最新版本的Gradle和最新版本的ActiveAndroid。
非常感谢任何帮助。
答案 0 :(得分:5)
我知道它很晚,但它可能对某人有帮助。
修改applicationId时会发生这种情况。示例中提供的脚本假定您已声明“android.defaultConfig.applicationId”。在大多数情况下,它为null,因此它生成null。您可以定义变量或将代码更改为以下内容:
defaultConfig {
// Rest of Config
javaCompileOptions {
annotationProcessorOptions {
arguments = ["resourcePackageName": "<Original Package Name>"]
}
}
}
请注意,原始套餐名称应与您活动中R的位置相同。
希望它有所帮助!
答案 1 :(得分:4)
我刚刚遇到同样的问题,通过将packageName
添加到defaultConfig
来解决:
样品:
defaultConfig {
packageName "com.example.myapp"
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
根据com.example.myapp
中指定的名称更改AndroidManifest.xml
。
希望这有帮助。
答案 2 :(得分:4)
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.your.app"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName android.defaultConfig.applicationId
}
}
它对我有用。
答案 3 :(得分:3)
我遇到了这个问题,所以我刚刚删除了这一行:
resourcePackageName android.defaultConfig.packageName
并且有效。
答案 4 :(得分:2)
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName android.defaultConfig.applicationId
}
就我而言,它工作了。
答案 5 :(得分:0)
更改清单中的applicationId ==包。 100%成功。
答案 6 :(得分:0)
我有同样的问题。我已经按照以下说明更新了build.gralde
文件。
对于 Java ,我添加了:
android {
defaultConfig {
applicationId "<your.application.id>"
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
arguments = ["resourcePackageName": android.defaultConfig.applicationId]
//arguments = ['androidManifestFile': variant.outputs[0].processResources.manifestFile]
}
}
}
}
对于 Koltin ,我添加了:
kapt {
arguments {
arg("resourcePackageName", android.defaultConfig.applicationId)
//arg("androidManifestFile", variant.outputs[0]?.processResources?.manifestFile)
}
correctErrorTypes = true // add this if you use data binding
}