【问题标题】:Air Native Extension can't find Volley java class, NoClassDefFoundErrorAir Native Extension 找不到 Volley java 类,NoClassDefFoundError
【发布时间】:2018-03-27 06:36:30
【问题描述】:

所以我正在尝试创建 Air Native 扩展,它将在后台从服务器获取数据,然后显示通知。我已经在普通的 android 应用程序上尝试过它并且它有效。

但是当我尝试将其设置为 ANE 时它不起作用,因为不知何故代码找不到 volley(其他都可以,包括后台服务)

Logcat 结果:

--------- beginning of crash
03-27 10:46:23.640  3680  3680 E AndroidRuntime: FATAL EXCEPTION: main
03-27 10:46:23.640  3680  3680 E AndroidRuntime: Process: air.bg, PID: 3680
03-27 10:46:23.640  3680  3680 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/toolbox/Volley;
03-27 10:46:23.640  3680  3680 E AndroidRuntime:        at com.company.backgroundprocess.JobSchedulerService.onStartJob(JobSchedulerService.java:54)

这里是 JobScheduler.java:

@Override
public boolean onStartJob(JobParameters jobParameters) {
    parameters = jobParameters;

    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    unixTimeLastNotificationOnDevice = settings.getLong("lastNotificationTime", System.currentTimeMillis() / 1000);
    //Line 54 bellow
    queue = Volley.newRequestQueue(getApplicationContext());
    mJobHandler.sendMessage(Message.obtain(mJobHandler, 1, jobParameters));
    return true;
}

那条线导致了错误,这实际上在普通的android应用程序中有效,但不幸的是在ANE中没有

所以我尝试使用 Android Studio 分析 .apk,发现它包含在其中,you can see on my screenshot here。而且很奇怪,因为代码找不到。

附加信息,我使用的platform.xml:

<platform xmlns="http://ns.adobe.com/air/extension/13.0">
    <packagedDependencies>
        <packagedDependency>support-compat-26.1.0-sources.jar</packagedDependency>
        <packagedDependency>volley-1.1.0-sources.jar</packagedDependency>
    </packagedDependencies>
</platform>

【问题讨论】:

  • maven 还是 gradle ?
  • 可惜我不知道AirSDK是用什么东西把flash工程编译成apk的。但是关于 .jar 依赖项,我是从 maven 存储库中获得的。当我使用普通的 android 应用程序对其进行测试时,我正在使用 gradle 来构建 .apk
  • 好吧,看看我的回答。也许,它会帮助你
  • 当您使用 adt 打包您的 ANE 时,您是否正确地将平台选项设置为您的 platform.xml 以用于 android 实现?
  • @Michael 我正在像这样包装我的 ane:adt -package -target ane com.company.BackgroundJob.ane .\extension.xml -swc .\BackgroundJobAPI.swc -platform Android-ARM -platformoptions .\platform.xml -C .\Android . -platform Android-x86 -platformoptions .\platform.xml -C .\Android . 我这样做有什么问题吗?

标签: java android actionscript-3 air air-native-extension


【解决方案1】:

您使用的是 Maven 还是 Gradle ? 对于 Gradle,请检查您是否有

dependencies { compile files('libs/android-support-v4.jar') compile files('libs/volley.jar') }

对于 Maven 检查你是否有

<dependency>
    <groupId>com.google.android</groupId>
    <artifactId>support-v4</artifactId>
    <version>r6</version>
</dependency>
<dependency>
        <groupId>com.android.volley</groupId>
        <artifactId>volley</artifactId>
        <version>1.1.0</version>
</dependency>
<dependency>
        <groupId>com.mcxiaoke.volley</groupId>
        <artifactId>library</artifactId>
        <version>1.0.0</version>
</dependency>

在您的 ecplise 中仔细检查其他 jar 是否与 com.android.volley.toolbox.Volley.class 冲突(按 Ctrl+Shift+T 并使用 Volley 搜索)。如果是,请解决依赖关系。

打开命令提示符(或终端)并导航到您的项目目录。 运行:

gradlew.bat clean

重新加载 Android Studio

参考here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    相关资源
    最近更新 更多