Fixed
Status Update
Comments
da...@google.com <da...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 782378852514e76eac3dfd115f7aca6c6ac6eec2
Author: Marcello Albano <maralb@google.com>
Date: Fri May 17 10:53:04 2024
Added enabling aot compilation prop in benchmark plugin
Test: ./gradlew benchmark:benchmark-gradle-plugin:test
Bug: 325512900
Change-Id: Ie049719ecb7e17ae46abf7c858120f03a35d9222
M benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/BenchmarkPlugin.kt
M benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
M buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
https://android-review.googlesource.com/3094561
Branch: androidx-main
commit 782378852514e76eac3dfd115f7aca6c6ac6eec2
Author: Marcello Albano <maralb@google.com>
Date: Fri May 17 10:53:04 2024
Added enabling aot compilation prop in benchmark plugin
Test: ./gradlew benchmark:benchmark-gradle-plugin:test
Bug: 325512900
Change-Id: Ie049719ecb7e17ae46abf7c858120f03a35d9222
M benchmark/gradle-plugin/src/main/kotlin/androidx/benchmark/gradle/BenchmarkPlugin.kt
M benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
M buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
sp...@gmail.com <sp...@gmail.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit 5ba0e94ed48d43e30c51c999b247497e1ad675b0
Author: Marcello Albano <maralb@google.com>
Date: Sat May 18 11:58:28 2024
Added compilation mode into benchmark context
Bug: 325512900
Change-Id: If5612552a718b459e95cd96dc721e92a88e3fa8a
Test: ShellTest
Relnote: Added compilation mode to benchmark context
M benchmark/benchmark-common/src/androidTest/assets/macro-legacy-trivialscrollbench.json
M benchmark/benchmark-common/src/androidTest/assets/micro-legacy-trivialbench.json
M benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
M benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ShellTest.kt
A benchmark/benchmark-common/src/main/java/androidx/benchmark/PackageInfo.kt
M benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
M benchmark/benchmark-common/src/main/java/androidx/benchmark/json/BenchmarkData.kt
M benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/CompilationModeTest.kt
https://android-review.googlesource.com/3094294
Branch: androidx-main
commit 5ba0e94ed48d43e30c51c999b247497e1ad675b0
Author: Marcello Albano <maralb@google.com>
Date: Sat May 18 11:58:28 2024
Added compilation mode into benchmark context
Bug: 325512900
Change-Id: If5612552a718b459e95cd96dc721e92a88e3fa8a
Test: ShellTest
Relnote: Added compilation mode to benchmark context
M benchmark/benchmark-common/src/androidTest/assets/macro-legacy-trivialscrollbench.json
M benchmark/benchmark-common/src/androidTest/assets/micro-legacy-trivialbench.json
M benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ResultWriterTest.kt
M benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/ShellTest.kt
A benchmark/benchmark-common/src/main/java/androidx/benchmark/PackageInfo.kt
M benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
M benchmark/benchmark-common/src/main/java/androidx/benchmark/json/BenchmarkData.kt
M benchmark/integration-tests/macrobenchmark/src/main/java/androidx/benchmark/integration/macrobenchmark/CompilationModeTest.kt
sp...@gmail.com <sp...@gmail.com> #4
Closing this one - remaining things to do will be in benchmark 1.4. Follow up on
sp...@gmail.com <sp...@gmail.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.benchmark:benchmark-common:1.3.0-beta01
androidx.benchmark:benchmark-gradle-plugin:1.3.0-beta01
sp...@gmail.com <sp...@gmail.com> #6
sorry copied the wrong line sentencesViewModel = new ViewModelProvider(getStoreOwner(), getDefaultViewModelProviderFactory()).get(SentencesViewModel.class);
da...@google.com <da...@google.com> #7
Is that ViewModel in another Gradle module? Make sure you apply the androidx.hilt-compiler
too all the those modules where you have your @InjectViewModel
. Do you notice any other difference of that SentencesViewModel? If you can share an app that reproduces the issue that would be great.
sp...@gmail.com <sp...@gmail.com> #8
no its not in another module, the view model is this (removed some stuff for brevity)
private final SentenceRepository sentenceRepository;
private final GroupRepository groupRepository;
@ViewModelInject
SentencesViewModel(SentenceRepository sentenceRepository, GroupRepository groupRepository, @Clicks int clicks, @SentenceTypeAndDescription String[] cardArgs){
this.sentenceRepository = sentenceRepository;
this.groupRepository = groupRepository;
}
the view model is built by a component
@Component(dependencies = SentenceViewModelDependencies.class)
public interface SentenceViewModelComponent {
void inject(CardHolderFragment cardHolderFragment);
@Component.Builder
interface Builder {
Builder context(@BindsInstance Context context);
Builder appDependencies(SentenceViewModelDependencies sentenceViewModelDependencies);
SentenceViewModelComponent build();
}
}
the component needs
@EntryPoint
@InstallIn(ApplicationComponent.class)
public interface SentenceViewModelDependencies {
@SentenceTypeAndDescription String[] sentenceTypeAndDescription();
}
and the view model needs
@Module
@InstallIn(ApplicationComponent.class)
public class SentenceClicksModule {
@Singleton
@Provides
@Clicks
public int provideSentenceClicks() {
return 5;
}
}
@Module
@InstallIn(ApplicationComponent.class)
public class SentenceRepositoryModule {
@Singleton
@Provides
public SentenceRepository provideSentenceRepository(@ApplicationContext Context context, DbHelper dbHelper) {
return new SentenceRepository(context, dbHelper);
}
}
@Module
@InstallIn(ApplicationComponent.class)
public class GroupRepositoryModule {
@Singleton
@Provides
public GroupRepository provideGroupRepository(DbHelper dbHelper) {
return new GroupRepository(dbHelper);
}
}
it was working before without any dependency injection
private final SentenceRepository sentenceRepository;
private final GroupRepository groupRepository;
@ViewModelInject
SentencesViewModel(SentenceRepository sentenceRepository, GroupRepository groupRepository, @Clicks int clicks, @SentenceTypeAndDescription String[] cardArgs){
this.sentenceRepository = sentenceRepository;
this.groupRepository = groupRepository;
}
the view model is built by a component
@Component(dependencies = SentenceViewModelDependencies.class)
public interface SentenceViewModelComponent {
void inject(CardHolderFragment cardHolderFragment);
@Component.Builder
interface Builder {
Builder context(@BindsInstance Context context);
Builder appDependencies(SentenceViewModelDependencies sentenceViewModelDependencies);
SentenceViewModelComponent build();
}
}
the component needs
@EntryPoint
@InstallIn(ApplicationComponent.class)
public interface SentenceViewModelDependencies {
@SentenceTypeAndDescription String[] sentenceTypeAndDescription();
}
and the view model needs
@Module
@InstallIn(ApplicationComponent.class)
public class SentenceClicksModule {
@Singleton
@Provides
@Clicks
public int provideSentenceClicks() {
return 5;
}
}
@Module
@InstallIn(ApplicationComponent.class)
public class SentenceRepositoryModule {
@Singleton
@Provides
public SentenceRepository provideSentenceRepository(@ApplicationContext Context context, DbHelper dbHelper) {
return new SentenceRepository(context, dbHelper);
}
}
@Module
@InstallIn(ApplicationComponent.class)
public class GroupRepositoryModule {
@Singleton
@Provides
public GroupRepository provideGroupRepository(DbHelper dbHelper) {
return new GroupRepository(dbHelper);
}
}
it was working before without any dependency injection
da...@google.com <da...@google.com> #9
Is SentenceFragment
annotated with @AndroidEntryPoint
? It looks like you have setup injection of it yourself vs letting Hilt inject it.
sp...@gmail.com <sp...@gmail.com> #10
yes its annotated, not sure what you mean how could i do it myself? rather than letting hilt do it? im fairly new to Hilt and dagger2 so its most probably something I'm not doing properly
ap...@google.com <ap...@google.com> #11
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 00068c24a9e483cc7a8f930e546a67b841c70382
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 10 11:45:49 2020
Apply hilt-android-compiler to AndroidX's Hilt-common
The aggregating compiler has to be applied to the project
where the extension annotations are annotated with
@GeneratesRootInput so the aggregating data is generated
and therefore Hilt can correctly await for these to be
processed.
Relnote: "Fix an issue where AndroidX Hilt extension Modules would not get correctly picked up by Hilt causing ViewModels or Workers to not be available for creation."
Bug: 159540434
Test: Existing tests pass.
Change-Id: I3181c8aad0973d15d82661b48404f2eeeb7ef954
M hilt/hilt-common/build.gradle
https://android-review.googlesource.com/1395447
Branch: androidx-master-dev
commit 00068c24a9e483cc7a8f930e546a67b841c70382
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 10 11:45:49 2020
Apply hilt-android-compiler to AndroidX's Hilt-common
The aggregating compiler has to be applied to the project
where the extension annotations are annotated with
@GeneratesRootInput so the aggregating data is generated
and therefore Hilt can correctly await for these to be
processed.
Relnote: "Fix an issue where AndroidX Hilt extension Modules would not get correctly picked up by Hilt causing ViewModels or Workers to not be available for creation."
Bug: 159540434
Test: Existing tests pass.
Change-Id: I3181c8aad0973d15d82661b48404f2eeeb7ef954
M hilt/hilt-common/build.gradle
da...@google.com <da...@google.com> #12
Sorry took a while since it was a bit hard to track. The next alpha version should contain contain a fix for this.
Description
Version used: com.google.dagger:hilt-android:2.28-alpha
Devices/Android versions reproduced on: nexus 5x emulator, android 9.0
If this is a bug in the library, we would appreciate if you could attach:
- Sample project to trigger the issue.
- A screenrecord or screenshots showing the issue (if UI related).
When creating a view model using the navigation scope i get an error stating that ViewModel has no zero argument constructor.
userViewModel = new ViewModelProvider(requireActivity()).get(UserViewModel.class); // works
userViewModel = new ViewModelProvider(getStoreOwner()).get(UserViewModel.class); // crashes
private ViewModelStoreOwner getStoreOwner() {
NavController navController = Navigation
.findNavController(requireActivity(), R.id.root_navigator_fragment);
if (layoutIdentifier.equals(Constants.MAIN_IDENTIFIER)) {
return navController.getViewModelStoreOwner(R.id.root_navigator);
} else {
return navController.getViewModelStoreOwner(R.id.MessageGraph);
}
}