【问题标题】:Android application can't compile/find ACRA library after import导入后 Android 应用程序无法编译/查找 ACRA 库
【发布时间】:2013-05-25 08:06:53
【问题描述】:

如果有人可以帮我指出正确的方向,我会永远充满活力! 我四处寻找,似乎找不到解决这个问题的办法来挽救我的生命。 :(

在我按照instructions (here)ACRA 4.5.0 添加到我的android 项目后,我在编译我的应用程序时遇到了问题。

我运行了 gradlew build,它告诉我所有 org.acra 导入都不存在。我将acra-4.5.jar 文件添加到我的libs 文件夹中,并使用android-studios 的“添加为库”选项将其添加到项目中。当我编写导入时,android studio 似乎发现一切正常,并且我没有任何语法错误,但它不会编译,所以我可以在我的设备上对其进行测试。尽管看起来库是有序的,但当我编译时我收到错误。

我在 android 清单中添加了 name 属性,据我所知,一切看起来都很好,但显然不是。我确定我只是错过了一些愚蠢的东西。

我只能猜测 android studio 没有正确导入库。但就像我说的那样,它没有显示任何语法错误,我可以 Ctrl+单击每个来源的来源,所以我真的不知道

对此的任何帮助将不胜感激! 提前致谢

编辑- 我还按照this post 中的建议运行了gradlew clean,但仍然不走运:(。清理完成后,android studio 显示 R.* 的语法错误??我关闭并重新打开了 android studio,语法错误消失了,但是项目仍然无法编译。它继续说 acra 不存在。

这是我的 ACRA 子应用程序扩展: /project/project/src/main/java/com/domain/project/catchEm.java

package com.domain.project;

import android.app.Application;
import org.acra.ACRA;
import org.acra.annotation.ReportsCrashes;
import org.acra.ReportingInteractionMode;


@ReportsCrashes(formKey = "", // will not be used
    mailTo = "email@email.com",
    mode = ReportingInteractionMode.DIALOG,
    resToastText = R.string.crash_toast_text,
    resDialogText = R.string.crash_dialog_text,
    resDialogIcon = android.R.drawable.ic_dialog_info,
    resDialogTitle = R.string.crash_dialog_title,
    resDialogCommentPrompt = R.string.crash_dialog_comment_prompt,
    resDialogOkToast = R.string.crash_dialog_ok_toast)

public class catchEm extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        // The following line triggers the initialization of ACRA
        ACRA.init(this);
    }
}

这是我的清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      package="com.domain.project"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_LOGS" />

<application
    android:icon="@drawable/ic_launcher"
    android:name=".catchEm"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    tools:ignore="AllowBackup">
    <activity
        android:name="com.domain.project.Main"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
            android:name=".someActivity"
            android:label="@string/label"/>

    <activity android:name="org.acra.CrashReportDialog"
              android:theme="@android:style/Theme.Dialog"
              android:launchMode="singleInstance"
              android:excludeFromRecents="true"
              android:finishOnTaskLaunch="true" />
</application>

还有 Gradlew 构建报告

C:\Users\owner\AndroidStudioProjects\project>gradlew build
The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
:project:prepareDebugDependencies
:project:compileDebugAidl UP-TO-DATE
:project:generateDebugBuildConfig UP-TO-DATE
:project:mergeDebugAssets UP-TO-DATE
:project:compileDebugRenderscript UP-TO-DATE
:project:mergeDebugResources UP-TO-DATE
:project:processDebugManifest UP-TO-DATE
:project:processDebugResources UP-TO-DATE
:project:compileDebug

project\project\src\main\java\com\domain\project\catchEm.java:4: error: package org.acra does not exist
    import org.acra.ACRA;
                   ^

project\project\src\main\java\com\domain\project\catchEm.java:5: error: package org.acra.annotation does not exist
    import org.acra.annotation.ReportsCrashes;
                              ^

project\project\src\main\java\com\domain\project\catchEm.java:6: error: package org.acra does not exist
    import org.acra.ReportingInteractionMode;
                   ^

project\project\src\main\java\com\domain\project\catchEm.java:9: error: cannot find symbol
@ReportsCrashes(formKey = "", // will not be used
^

symbol: class ReportsCrashes

project\project\src\main\java\com\domain\project\catchEm.java:25: error: cannot find symbol
     ACRA.init(this);
     ^
symbol:   variable ACRA
location: class catchEm

5 errors
:project:compileDebug FAILED

FAILURE: Build failed with an exception.

【问题讨论】:

  • 检查您的模块依赖设置(项目设置 -> 模块 -> 选择“Acra”(或任何名称)-> 选择模块的“依赖项”选项卡:是否设置为“提供”?如果是,请将其更改为“编译”。这有帮助吗?
  • 感谢您的回复。是的,它已经准备好编译了
  • 我也运行了 gradlew clean,但仍然收到相同的错误 + 语法错误说我现在需要导入 android.R

标签: java android android-studio acra


【解决方案1】:

出于某种原因,我检查了我的 build.gradle 文件并且没有 acra 依赖项,即使 android studio 在我的依赖项列表中显示它。

所以我将compile files('libs/acra-4.5.0.jar') 添加到项目build.gradle 文件中的依赖项区域,现在一切正常!希望这也能帮助其他人。

buildscript {

repositories {

    maven { url 'http://repo1.maven.org/maven2' }

}

dependencies {

    classpath 'com.android.tools.build:gradle:0.4'

}

}


apply plugin: 'android'



dependencies {

compile files('libs/android-support-v4.jar')

compile files('libs/acra-4.5.0.jar')
}


android {

compileSdkVersion 17

buildToolsVersion "17.0.0"


defaultConfig {

    minSdkVersion 7

    targetSdkVersion 17

}

}

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2014-05-10
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多