Получение ошибки: не удалось найти метод com.urbanairship.Autopilot.automaticTakeOff

Я хотел создать файл ane, используя последнюю версию SDK UrbanAirship. Я добавил метаданные автопилота(<meta-data android:name="com.urbanairship.autopilot" android:value="com.sample.aneAndroid.TakeOffHelper" /> ) в свой app-xml под блоком приложения, а также создал подкласс автопилота и добавил туда AirshipConfigOptions. Когда я пытаюсь вызвать Autopilot.automaticTakeOff(app); в классе, который реализует FREFunction, он дает ошибку ниже:

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

person Randhir Kumar    schedule 03.02.2016    source источник
comment
Как вы строите свой ANE?   -  person Brian    schedule 03.02.2016


Ответы (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 — это путь к файлу extension.xml для ANE, который вы пытаетесь создать.

lib/airshipWrapper.swc — это путь к swc с вашими классами ActionScript для ANE (здесь вы помещаете свой класс, вызывающий ExtensionContext.createExtensionContext()).

working/android — это ваш путь, содержащий ваши airshipWrapper.jar и library.swf

airshipWrapper.jar — это комбинированный jar-файл с вашими классами Java и всеми необходимыми библиотечными классами*.

library.swf извлекается из вашего airshipWrapper.swc.

working/default — это ваш путь, содержащий library.swf с той же подписью, что и ваши классы в airshipWrapper.swc (чтобы ваш проект не ломался, когда вы запускаете его в эмуляторе)

* Для файла jar я экспортирую его из своего проекта Java, а затем запускаю обновление jar со всеми необходимыми классами библиотеки. Я использую ant, но подойдет любой метод извлечения классов из одной банки и обновления другой.

См. также AIR 3. Собственные расширения для Android: можно ли/как подключить сторонние библиотеки? для получения дополнительной информации об объединенном файле .jar.

person Brian    schedule 03.02.2016
comment
Я делаю то же самое, и все работает нормально, когда я использовал предыдущую версию библиотеки urbanairship (4.0.2). Я получаю эту ошибку, когда пытаюсь использовать новый пакет sdk (6.4.1) Urbanairship в ane. - person Randhir Kumar; 04.02.2016
comment
Видите ли вы com.urbanairship.Autopilot в своем ANE? - person Brian; 04.02.2016
comment
Да, когда я разархивирую окончательный файл jar, в нем доступны файлы городского дирижабля. - person Randhir Kumar; 05.02.2016