Android构建Gradle成功但无法在模拟器上安装应用程序

17

我在使用Android Architecture组件时遇到了一些问题。我尝试的做法是从ViewModel中调用存储库类中的函数。以下是我的ViewModel:

private final ReservationRepository reservationRepository;
private final UserRepository userRepository;
private LiveData<List<ReservationEntity>> reservations;

@Inject
public ReservationViewModel(ReservationRepository reservationRepository, UserRepository userRepository) {
    this.reservationRepository = reservationRepository;
    this.userRepository = userRepository;
    reservations = reservationRepository.loadReservations();
}

public LiveData<List<ReservationEntity>> getAllReservations() {
    return reservations;
}

然后在我的仓库类中:

private final ReservationDao reservationDao;

@Inject
public ReservationRepository(ReservationDao reservationDao) {
    this.reservationDao = reservationDao;
}

public LiveData<List<ReservationEntity>> loadReservations() {
    return reservationDao.getAllReservation();
}
在我的DAO类中:
@Query("SELECT * FROM reservation")
LiveData<List<ReservationEntity>> getAllReservation();

我有一个 AppModule 来提供 @Inject:

@Provides
@Singleton
ReservationDatabase provideReservationDatabase(Application application) {
    return Room.databaseBuilder(application,ReservationDatabase.class,
            ReservationDatabase.DATABASE_NAME).allowMainThreadQueries().build();
}

@Provides
@Singleton
ReservationDao provideReservationDao(ReservationDatabase reservationDatabase) {
    return reservationDatabase.reservationDao();
}

我成功构建了项目。但是,在成功构建 Gradle 后,它不会安装应用程序到模拟器上。有什么想法吗?

谢谢!


请发布错误信息或错误信息的屏幕截图! - Pie
@Pie 没有任何错误信息。它只是无法构建 :( - dummygg
如果您在模拟器上有现有的应用程序,请卸载它并尝试再次运行该应用程序! - Pie
我收到了这个错误信息:构建APK时出现错误。您可以在“消息”视图中找到错误。但是我的Gradle构建成功了。 - dummygg
能否请点踩者解释一下原因? - dummygg
你解决了你的问题吗? - Pie
9个回答

26
在我的情况下,进行 "Gradle Sync" 可以解决这个问题。

6
您可以尝试以下方法来解决问题:
  • 关闭即时运行。

    文件>设置>构建、执行、部署>即时运行>取消选择即时运行。

然后再次在模拟器上运行您的应用程序。

  • 重新启动Android Studio

    文件->无效缓存/重启

  • 进行干净的构建

    构建->清理项目

  • 尝试同步您的项目

    文件->同步项目

  • 确保项目位置不包含特殊字符。

    E:\Android_Projects\T&PUIET,KUK\app\build\outputs\apk\app-debug.apk

    关闭Android Studio > 重命名包含特殊字符的文件夹(这里是T&PUIET,KUK) > 重新启动Android Studio。

希望这个解决方案能够帮助您!

我怀疑这与@inject有关,但我不确定为什么会这样。因为如果我不将其注入到存储库中,而是直接从视图模型初始化数据库,它就可以构建和运行。 - dummygg
路径中的点字符导致了我的问题。 - ElYeante

5
在我的“愚蠢情况”中,我没有一个“启动器活动”,请将其添加到第一个中:
 <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

1
我很感激这个愚蠢的答案,因为这也刚刚发生在我身上 :) - rjr-apps

2

如@David Miguel所说,只需使用Gradle同步项目即可。

我解决了我的问题。

在我的情况下,只需在Linux中使用All搜索,然后按两次Shift键。

输入图像描述


0
在我的情况下(在物理设备上),我不得不将AndroidManifest.xml中的android:exported从false更改为true,否则设备无法打开由Android Studio安装的应用程序(应用程序图标出现在设备上,但点击=应用程序未安装)。
<manifest ...>
    <application ... >
        <activity ... android:exported="true" >

0

1.在Android Studio中,转到构建>构建APK(s),然后在[项目位置]\app\build\outputs\apk\debug找到应用程序的APK文件。

2.打开PC的命令提示符或终端(对于MAC),键入cd C:\Users[用户名]\AppData\Local\Android\Sdk\platform-tools。

如果您安装的SDK位置不同,则可能会有所不同。

3.然后将步骤1生成的apk复制粘贴到步骤2的位置。

  1. 然后运行adb install [生成的apk名称]

这应该会在模拟器中安装APK。只需确保没有连接其他设备,并且没有其他模拟器正在运行以外要安装它的模拟器。


我收到了这个错误信息:构建APK时出现错误。你可以在“消息”视图中找到错误。但是,“消息”视图在哪里呢? - dummygg

0
在我的情况下,同步Gradle和其他答案都没有帮助。因为我的问题相当愚蠢。我在创建项目时没有让Android Studio生成MainActivity,所以我不得不手动生成类和布局。但是我错误地将MainActivity分配给清单文件,使用标签<activity... </activity>

0

行为变更:针对Android 12的应用程序!

警告:如果一个活动、服务或广播接收器使用意图过滤器,并且没有明确声明android:exported的值,那么您的应用程序将无法安装在运行Android 12的设备上。


0

尝试使用“构建”下的创建项目选项。


你的回答可以加上更多支持信息来改善。请点击[编辑]以添加更多细节,例如引用或文档,以便他人可以确认你的答案是正确的。你可以在帮助中心找到更多有关如何撰写良好回答的信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接