Air Native Extension找不到Volley java类,NoClassDefFoundError

时间:2018-03-27 06:36:30

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

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

但是当我尝试将其设为ANE时它不起作用,因为不知何故代码无法找到凌空(其他任何东西都很好,包括后台服务)

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>

1 个答案:

答案 0 :(得分: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