【问题标题】:Getting Error : Could not find method com.urbanairship.Autopilot.automaticTakeOff出现错误:找不到方法 com.urbanairship.Autopilot.automaticTakeOff
【发布时间】:2016-02-03 12:04:36
【问题描述】:

我想使用 UrbanAirship 最新的 sdk 创建一个 ane 文件。我在应用程序块下的 app-xml 中添加了 Autopilot metadata(<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;)V

TakeOffHelper.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);}

【问题讨论】:

  • 你是如何构建你的 ANE 的?

标签: android apache-flex urbanairship.com ane


【解决方案1】:

这可能是由于 .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 是带有 ANE 的 Actionscript 类的 swc 的路径(这是放置调用 ExtensionContext.createExtensionContext() 的类的位置)。

working/android 是您的路径,其中包含您的 airshipWrapper.jarlibrary.swf

airshipWrapper.jar 是一个包含您的 Java 类和所需的所有库类的组合 jar 文件*

library.swf 是从您的airshipWrapper.swc 中提取的。

working/default 是您的路径,其中包含一个 library.swf,其签名与您在 airshipWrapper.swc 中的类相同(因此当您在模拟器中运行时,您的项目不会中断)

*对于 jar 文件,我从我的 Java 项目中导出它,然后使用任何必要的库类运行 jar 更新。我使用ant,但是任何从一个 jar 中提取类并更新另一个的方法都可以。

另请参阅AIR 3 Native Extensions for Android - Can I/How to include 3rd party libraries?,了解有关组合 .jar 文件的更多信息。

【讨论】:

  • 我正在做同样的事情,当我使用以前版本的 urbanairship 库(4.0.2)时它工作正常。当我尝试使用新的 urbanairship sdk(6.4.1)时出现此错误) 在一个。
  • 您在 ANE 中看到 com.urbanairship.Autopilot 了吗?
  • 是的,当我解压最终的 jar 文件时,城市飞艇文件就在里面了。
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多