所以我正在尝试创建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>
答案 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