我想用UrbanAirship最新的软件开发工具包创建一个文件。我已经在应用程序块下的app-xml中添加了Autopilot元数据(<meta-data android:name="com.urbanairship.autopilot" android:value="com.sample.aneAndroid.TakeOffHelper" /> ),还创建了Autopilot的子类并在其中添加了AirshipConfigOptions。当我试图在实现FREFunction的类中调用Autopilot.automaticTakeOff(app);时,它给出了以下错误-
02-03 17:14:11.949 23088-23088/? I/dalvikvm﹕ Could not find method com.urbanairship.Autopilot.automaticTakeOff, referenced from method com.sample.aneAndroid.UAPushNotificationExtensionSubscribeFunction.call
02-03 17:14:11.949 23088-23088/? W/dalvikvm﹕ VFY: unable to resolve static method 3322: Lcom/urbanairship/Autopilot;.automaticTakeOff (Landroid/app/Application;)VTakeOffHelper.java
@Override
public AirshipConfigOptions createAirshipConfigOptions(Context context) {
Log.v("Autopilot", "createAirshipConfigOptions called");
AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(context.getApplicationContext());
Log.v("Autopilot", "createAirshipConfigOptions called " + options);
return options;
}
@Override
public void onAirshipReady(UAirship airship) {
Log.v("Autopilot", "onAirshipReady called");
DefaultNotificationFactory defaultNotificationFactory = new DefaultNotificationFactory(UAirship.getApplicationContext());
defaultNotificationFactory.setColor(NotificationCompat.COLOR_DEFAULT);
// Set it
airship.getPushManager().setNotificationFactory(defaultNotificationFactory);
// Enable Push
airship.getPushManager().setPushEnabled(true);
}UAPushNotificationExtensionInitFunction.java
public FREObject call(FREContext context, FREObject[] args) {
UAPushNotificationExtensionContext nec = (UAPushNotificationExtensionContext) context;
android.app.Activity activity = nec.getActivity();
nec.activity = activity;
Application app = context.getActivity().getApplication();
Autopilot.automaticTakeOff(app);}发布于 2016-02-04 01:02:14
这可能是由于错误的.jar文件造成的。我使用以下格式的命令来构建ANE:
adt -package -target ane bin/airshipWrapper.ane src/extension.xml -swc lib/airshipWrapper.swc -platform Android-ARM -C working/android . -platform default -C working/default .
bin/airshipWrapper.ane是ANE的目标位置
src/extension.xml是您尝试构建的ANE的extension.xml路径
lib/airshipWrapper.swc是指向swc的路径,其中包含ANE的ActionScript类(这是您放置调用ExtensionContext.createExtensionContext()的类的位置)。
working/android是包含airshipWrapper.jar和library.swf的路径
airshipWrapper.jar是一个包含您的Java类和所有需要的库类的组合jar文件。
从您的airshipWrapper.swc中提取library.swf。
working/default是包含与airshipWrapper.swc中的类具有相同签名的library.swf的路径(这样当您在模拟器中运行项目时,它就不会中断)
*对于jar文件,我从我的Java项目中导出它,然后使用任何必要的库类运行jar更新。我使用的是ant,但是任何从一个jar中提取类并更新另一个jar的方法都可以。
有关组合的.jar文件的更多信息,请参阅AIR 3 Native Extensions for Android - Can I/How to include 3rd party libraries?。
https://stackoverflow.com/questions/35176580
复制相似问题