java ios - Libgdx & RoboVM для магазина приложений




download plugin (2)

Я могу скомпилировать и запустить свою игру с помощью LibGDX 0.9.9 и RoboVM 0.0.7

Я смог построить ipa для представления магазина приложения. Загружая мое приложение с помощью Application Loader, я получаю сообщение об ошибке: This bundle is invalid. Apple is currently not accepting applications built with this version of Xcode. This bundle is invalid. Apple is currently not accepting applications built with this version of Xcode.

Добавление

<key>DTXcode</key>
<string>0502</string>

<key>DTXcodeBuild</key>
<string>5A3005</string>

к моему info.plist, я получаю ту же ошибку представления магазина приложения.

Я попытался скомпилировать свой проект с каждой комбинацией следующих библиотек

LibGDX 0.9.9
LibGDX Nightly - 02/13/14

RoboVM 0.0.8
RoboVM 0.0.9
RoboVM 0.0.10-SNAPSHOT

При любой версии RoboVM, превышающей 0.0.7, я получаю следующую ошибку:

java.lang.IllegalArgumentException: No @Marshaler found for parameter 1 of @Callback method <com.badlogic.gdx.backends.iosrobovm.objectal.AVAudioPlayerDelegate$Callbacks: void didFinishPlaying(com.badlogic.gdx.backends.iosrobovm.objectal.AVAudioPlayerDelegate,org.robovm.objc.Selector,org.robovm.cocoatouch.foundation.NSObject,boolean)>
    at org.robovm.compiler.MarshalerLookup.findMarshalerMethod(MarshalerLookup.java:167)
    at org.robovm.compiler.BroMethodCompiler.getParameterType(BroMethodCompiler.java:492)
    at org.robovm.compiler.BroMethodCompiler.getBridgeOrCallbackFunctionType(BroMethodCompiler.java:513)
    at org.robovm.compiler.BroMethodCompiler.getCallbackFunctionType(BroMethodCompiler.java:505)
    at org.robovm.compiler.CallbackMethodCompiler.callback(CallbackMethodCompiler.java:78)
    at org.robovm.compiler.CallbackMethodCompiler.compileCallback(CallbackMethodCompiler.java:107)
    at org.robovm.compiler.CallbackMethodCompiler.doCompile(CallbackMethodCompiler.java:74)
    at org.robovm.compiler.AbstractMethodCompiler.compile(AbstractMethodCompiler.java:74)
    at org.robovm.compiler.ClassCompiler.callbackMethod(ClassCompiler.java:1070)
    at org.robovm.compiler.ClassCompiler.compile(ClassCompiler.java:566)
    at org.robovm.compiler.ClassCompiler.compile(ClassCompiler.java:283)
    at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:198)
    at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:216)
    at org.robovm.compiler.AppCompiler.main(AppCompiler.java:438)

Я в недоумении. Я просто хочу отправить свое приложение в Apple App Store. RoboVM 0.0.7 не работает, и я не могу скомпилировать свой проект с любой новой версией RoboVM. Дайте мне знать, если вам нужна дополнительная информация.

Как я могу отправить свое приложение с помощью RoboVM 0.0.7 (эмулировать Xcode 5.2)?

или

Как исправить мою ошибку и скомпилировать с помощью> 0.0.7?


Answers

Пакет bundle is invalid проблема была зафиксирована в RoboVM 0.0.9, поэтому вы должны использовать хотя бы эту версию. Причина No @Marshaler found ошибки No @Marshaler found , вероятно, No @Marshaler found тем, что у вас есть старая версия robovm-cocoatouch.jar в вашем пути к классам. Удостоверьтесь, что у вас есть только банки из RoboVM 0.0.9 в вашем пути к классу Eclipse.


Чтобы прочитать значение с периферийного устройства BLE, выполните следующие действия.

  1. Сканирование доступных устройств

    NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBCentralManagerScanOptionAllowDuplicatesKey];
    [self.myCentralManager scanForPeripheralsWithServices:nil options:options];`
  2. При обнаружении устройства получит обратный вызов метода делегата didDiscoverPeripheral. Затем установите соединение с обнаруженным устройством BLE

    -(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
    
        //Connect detected device....
        if (!peripheral.isConnected) {
            peripheral.delegate = self;
            [bluetoothManager_ connectPeripheral:peripheral options:nil];
    
        }
    }
  3. При успешном подключении запросите все службы, доступные на устройстве BLE

    - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral{
    NSLog(@"Peripheral Connected");
    
        // Make sure we get the discovery callbacks
        peripheral.delegate = self;
    
        // Search only for services that match our UUID
        [peripheral discoverServices:nil];
    }
  4. Запросить все характеристики, доступные в каждой услуге

    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
    
        if (error) {
            NSLog(@"Error discovering services: %@", [error localizedDescription]);
            return;
        }
        // Loop through the newly filled peripheral.services array, just in case there's more than one.
        for (CBService *service in peripheral.services) {
            [peripheral discoverCharacteristics:nil forService:service];
        }
    }
  5. Как только мы получим необходимую информацию о характеристиках, нам нужно подписаться на нее, что позволит периферийному устройству знать, что нам нужны данные, которые он содержит.

    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{
    
        // Deal with errors (if any)
        if (error) {
            NSLog(@"Error discovering characteristics: %@", [error localizedDescription]);
            return;
        }
    
        // Again, we loop through the array, just in case.
        for (CBCharacteristic *characteristic in service.characteristics) {
            if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:REQUIRED_CHARA_ID]]) {
                // If it is, subscribe to it
                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
            }
        }
    }
  6. Выполнив все эти шаги, устройство BLE сообщит вам об изменении статуса уведомления с помощью метода делегата.

    - (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
    
        if (error) {
            NSLog(@"Error changing notification state: %@", error.localizedDescription);
        }
    
        // Notification has started
        if (characteristic.isNotifying) {
            NSLog(@"Notification began on %@", characteristic);
        }
    }

Вы получите любое уведомление от устройства BLE следующим способом

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
    if (error) {
        NSLog(@"Error reading characteristics: %@", [error localizedDescription]);
        return;
    }

    if (characteristic.value != nil) {
          //value here.        
    }
}






java ios xcode libgdx robovm