2016-06-03 8 views
0

Я пытаюсь создать мое приложение в ионном IOS, однако я получаю сообщение об ошибке, когда я пытаюсь создать ионную iOS. Вот код ошибкиiOS Ionic build failed

BUILD FAILED

Следующая строить команды не удалось:

CompileC build/varfinz.build/Debug-iphonesimulator/varfinz.build/Objects-normal/i386/CDVFile.o varfinz/Plugins/org.apache.cordova.file/CDVFile.m normal i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler (1 failure)

Error: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/lorenzo/Desktop/varfinz5/platforms/ios/cordova/build-debug.xcconfig,-project,varfinz.xcodeproj,ARCHS=i386,-target,varfinz,-configuration,Debug,-sdk,iphonesimulator,build,VALID_ARCHS=i386,CONFIGURATION_BUILD_DIR=/Users/lorenzo/Desktop/varfinz5/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Users/lorenzo/Desktop/varfinz5/platforms/ios/build/sharedpch

Вот часть кода с ошибкой. Ошибка находится на третьей строке с фрагментом self = (CDVFile *) [super initWithWebView: theWebView]; Xcode говорит следующее: «Нет видимых @interface для CDVPlugin заявляет селектор initWithWebView

- (id)initWithWebView:(UIWebView*)theWebView 
{ 
    self = (CDVFile*)[super initWithWebView:theWebView]; 
    if (self) { 
     filePlugin = self; 
     [NSURLProtocol registerClass:[CDVFilesystemURLProtocol class]]; 

     fileSystems_ = [[NSMutableArray alloc] initWithCapacity:3]; 

     // Get the Library directory path 
     NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
     self.appLibraryPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"files"]; 

     // Get the Temporary directory path 
     self.appTempPath = [NSTemporaryDirectory()stringByStandardizingPath]; // remove trailing slash from NSTemporaryDirectory() 

     // Get the Documents directory path 
     paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     self.rootDocsPath = [paths objectAtIndex:0]; 
     self.appDocsPath = [self.rootDocsPath stringByAppendingPathComponent:@"files"]; 

    } 

    return self; 
} 
+0

Можете ли вы предоставить код? Попробуйте добавить некоторые точки разрыва в свой код и отлаживать, чтобы увидеть, где он ломается. –

+0

привет, да, конечно, я отредактировал сообщение выше –

+0

@ Lorenzo вы используете брелоки для ключей или Facebook? – Gandhi

ответ

2

Вы можете решить эту проблему в 2 способами:.

1- заменить [super initWithWebView:theWebView] на [super init]

2- добавить флаг компилятора на CDVFile для отключения ARC, флаг компилятора -fno-objc-arc

С моей точки зрения, я рекомендую второе решение, потому что оно не влияет на код.

Если вы ищете пошаговое решение, сделайте следующее в Xcode.

  1. Выберите главный проект.
  2. Выберите цель
  3. Перейти построить Фазы
  4. Развернуть скомпилированные ресурсы нажмите
  5. выберите «CDVFile.m»
  6. на правой стороне «CDVFile.m», вы можете добавить следующий флаг компилятора

    -fno-ObjC-дуговой

Теперь, если вы хотите, чтобы понять проблему в деталях:

CDVFile был построен в условиях, отличных от ARC, и он контролирует потребление памяти. , но Xcode не позволяет это использовать ARC для управления потреблением памяти для всего приложения. , поэтому решение для этого конфликта состоит в том, чтобы обновить код CDVFile для использования ARC или просто сообщить Xcode, что вы ответственны за управление памятью этого класса, добавив флаг компилятора.

обновление Примечание: оба указанных выше решения должны выполняться каждый раз, когда вы добавляете платформу.

Для решения вопроса permenantly сделать следующее:

  1. Перейти в папку плагинов
  2. Найти плагин вызвавший проблему (в данном случае: Cordova-плагин-файл)
  3. Открыть плагин.XML-файл
  4. Расположить <platform name="ios">
  5. Locat следующий тег: <source-file src="src/ios/CDVFile.m"/> и заменить его: <source-file src="src/ios/CDVFile.m" compiler-flags="-fno-objc-arc"/>
  6. удалять и добавлять Ios платформу, и вы сделали.
0

Я получаю эту проблему с перерывами. Хотя я не могу говорить о первопричине проблемы, следующие работы для меня - от CLI:

cordova platform remove ios 
ionic serve 
cordova platform add ios