2016-04-05 31 views
0

Ich bin relativ neu für Android und j2objc, in der Hoffnung, dass dieses Problem eine einfache Lösung hat. Ich habe ein einfaches Projekt erstellt, um Protobuf Nano in Android zu testen und in Ziel c zu übersetzen. Die App läuft gut in Java-Nachrichten an einen C# Web-Service, aber die Erstellung von übersetzten javanano Klassen in Objective-C schlägt mit dem folgenden Fehler zu senden:j2obj übersetzen von Javanano Protobuf nicht kompilieren

j2objc-0.9.8.2.1/include/J2ObjC_header.h:25:17: error: cannot create __weak reference in file using manual reference counting 
id JreStrAppend(__weak id *lhs, const char *types, ...); 

Hier ist die build.gradle Datei:

plugins { 
    id 'java' 
    id "com.github.j2objccontrib.j2objcgradle" version "0.6.0-alpha" 
    id "com.google.protobuf" version "0.7.5" 
} 

sourceSets { 
    main.java.srcDirs += 'src/main/javanano' 
} 

dependencies { 
    // Any libraries you depend on, like Guava or JUnit 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.guava:guava:19.0' 
    compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-5' 
    testCompile 'junit:junit:4.12' 
} 

protobuf { 
    protoc { 
     artifact = "com.google.protobuf:protoc:3.0.0-beta-2" 
    } 

    generateProtoTasks { 
     all().each { task -> 
      task.builtins { 
       remove java 
       javanano { 
        option 'java_multiple_files=true' 
        option 'ignore_services=true' 
       } 
      } 
     } 
    } 
    generatedFilesBaseDir = "$projectDir/src" 
} 

// Plugin settings; put these at the bottom of the file. 
j2objcConfig { 
    // Sets up libraries you depend on 
    autoConfigureDeps true 
// testMinExpectedTests 0 

    // Omit these two lines if you don't configure your Xcode project with CocoaPods 
// xcodeProjectDir '/Users/gabrielchoza/SoftwareDev/NGCalDev/AuthTouchId' // suggested directory name 
// xcodeTargetsIos 'IOS-APP', 'IOS-APPTests' // replace with your iOS targets 

    finalConfigure()   // Must be last call to configuration 
} 

und hier ist eine der foto~~POS=TRUNC:

syntax = "proto3"; 
option csharp_namespace = "messages"; 
option java_package = "messages"; 

message Req { 
    string client_version = 1; 
    string client_practice = 2; 
    string instance_id = 3; 
} 

Wir verwenden die neueste Version von Xcode: Version 7.3 (7D175) und OS X El Capitan Version 10.11.4

Jede Hilfe wird geschätzt.

Antwort

1

Sie sollten auf die neueste Version von J2ObjC, 1.0.2, aktualisieren, da J2ObjC_header.h das __weak-Attribut nicht mehr verwendet. Die Änderung Ihrer Gradle-Konfiguration für diese neuere Version ist described here.

+0

Danke für die schnelle Antwort. Das aktuelle (neueste) Grade-Plugin ist "com.github.j2objccontrib.j2objcgradle" Version "0.6.0-alpha" und schlägt fehl, wenn die Version 1.0.2 verwendet wird. Es erfordert 0.9.8.2.1. Wo finde ich ein aktuelleres Plugin, wenn verfügbar? – Gjchoza

+0

Macht nichts. Die Lösung auf der Plugin-Seite gefunden: "skipJ2objctVerification = true" – Gjchoza

+0

700 mb für ein frikken tool ??? @Gjchoza Es ist buchstabiert skipJ2objcVerification – AndroidDev