Как исправить '* pod * не поддерживает профили инициализации' в агенте сборки azure devops

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

  1. JVM ищет класс, который имеет public static void main (String args []), чтобы он мог загрузить этот класс.
  2. Затем он инициализирует статические поля этого класса (если они попадают перед статическими блоками). Эти поля могут вызывать статические методы этого класса. Если они вызовут статический метод этого класса, то этот метод будет обслуживаться. Если они вызывают статический метод другого класса, тогда статические поля или блоки этого класса (в зависимости от того, что на первом месте) сначала инициализируются, тогда этот вызов метода обслуживается.
  3. Затем он перемещается в статические блоки.
  4. Возврат к основному методу.
    class TestLab {
    static int method(String a) {
        System.out.println("in static method of TestLab" + " Coming from " + a);
        System.out.println("b is " + b);
        return 6;
    }
    
    static int a = method("Line 11");
    static int b = 7;
    
    TestLab() {
        System.out.println("Inside test lab constructor");
    }
    
    static {
        System.out.println("In static block of TestLab");
    }
    
    }
    
    public class Test1 {
    public static void main(String[] args) {
        System.out.println("inside main method of Test 1");
        int a = TestLab.method("Line 26");
    }
    
    // static Test ref=new Test();
    Test1() {
        System.out.println("Default Constructor of Test1");
    }
    
    {
        System.out.println("In instance block of Test1");
    }
    static int d = TestLab.method("Line 37");
    static int e = methodOfTest1();
    static {
        System.out.println("In Static Block of Test1");
    }
    
    static int methodOfTest1() {
        System.out.println("inside static method:mehtodOfTest1()");
        return 3;
    }
    }
    

Вот результат:

in static method of TestLab Coming from Line 11
b is 0
In static block of TestLab
in static method of TestLab Coming from Line 37
b is 7
inside static method:mehtodOfTest1()
In Static Block of Test1
inside main method of Test 1
in static method of TestLab Coming from Line 26
b is 7
1
задан Maxime Lapointe 29 March 2019 в 14:46
поделиться

1 ответ

Проблема - то, что новейшая версия Cocoapods пытается подписать платформы.

Добавляют следующий код к Вашему podfile

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
            config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
            config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
        end
    end
end
0
ответ дан willhess 23 April 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: