В настоящее время я работаю над мгновенными приложениями для Android, используя пример проекта android-topeka.
Все работает, как и ожидалось, после того, как я использую аннотации Android в своей активности:
@EActivity(resName = "activity_start")
public class StartActivity extends AppCompatActivity {
...
}
Если я хочу запустить приложение (:installed
), все работает, но для приложения Instant (:instant
) я получаю следующую ошибку:
:base:javaPreCompileDebugFeature UP-TO-DATE
error: The generated <applicationId>.R class cannot be found
1 error
:base:compileDebugFeatureJavaWithJavac FAILED
Дополнительная информация:
Если я удаляю
application project(':installed')
selectedapplication project(':installed')
в базовом build.gradle, я могу запустить приложение Instant -App, но с неверным идентификатором приложения (настроенным в проекте:installed
).
Наконец, я получил его с помощью трекера этой проблемы (спасибо Kay-Uwe Janssen). Также спасибо Джесс. В целом это была установка в сочетании с Manifest Finder и annotationProcessorOptions
.
Вот так выглядит моя настройка gradle/Manifest:
База:
build.gradle:
android {
...
baseFeature true
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = ["resourcePackageName": "com.test.base"]
}
}
}
buildTypes {
release {
}
}
}
dependencies {
application project(':installed')
...
}
AndroidManifest.xml:
<manifest ...
package="com.test.base">
...
</manifest>
Установлены:
build.gradle:
android {
...
}
dependencies {
implementation project(':base')
}
AndroidManifest.xml:
<manifest package="com.test2">
</manifest>
Мгновенный:
build.gradle:
android {
defaultConfig {}
}
dependencies {
implementation project(':base')
}
При такой настройке мгновенное приложение имеет тот же идентификатор приложения, что и установленный "com.test2"
Основанный на этом так связанном посте:
Эта ошибка возникает при изменении applicationId
. Сценарий, представленный в примере, предполагает, что вы объявили android.defaultConfig.applicationId
. Если это не было объявлено, значение будет нулевым, или оно генерирует нулевое значение. R.
defaultConfig { // Rest of Config javaCompileOptions { annotationProcessorOptions { arguments = ["resourcePackageName": "<Original Package Name>"] } } }
Примечание. Package Name
оригинального Package Name
должно совпадать с расположением R
в вашей активности.