2016-04-05 103 views
0

我對Android和j2objc相對較新,希望這個問題有一個簡單的修復。 我創建了一個簡單的項目,在Android中測試protobuf nano並轉換爲目標c。j2obj翻譯javanano protobuf無法編譯

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, ...); 

這裏的的build.gradle文件:

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 
} 

的應用程序中的Java消息發送到C#的Web服務,但翻譯javanano類的目標C失敗,出現以下錯誤編譯運行良好這裏是照片文件之一:

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

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

我們正在使用最新版本的Xcode:7.3版(7D175),以及OS X埃爾卡皮坦版本10.11.4

任何幫助將不勝感激。

回答

1

由於J2ObjC_header.h不再使用__weak屬性,因此您需要升級到J2ObjC的最新版本1.0.2。此更新版本的Gradle配置更改爲described here

+0

感謝您的快速回答。當前(最新)年級插件是「com.github.j2objccontrib.j2objcgradle」版本「0.6.0-alpha」,並在使用1.0.2版本時失敗。它要求0.9.8.2.1。哪裏可以找到更新的插件? – Gjchoza

+0

沒關係。在插件網站上找到解決方案:「skipJ2objctVerification = true」 – Gjchoza

+0

對於frikken工具,700 MB? @Gjchoza它的拼寫skipJ2objcVerification – AndroidDev