Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    15 457

Python ошибка


MasterGH

1 830 просмотров

Долго не могу решить проблему

Traceback (most recent call last):
  File "C:\air test\plugins\firebase\build.py", line 124, in run
    self.SIGNAL_INSERT_LOGVIEW.emit(_str.decode("GB2312").encode("utf-8"))
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 11-12: illegal multibyte sequence
QObject::~QObject: Timers cannot be stopped from another thread

Если кто шарит на питоне просьба помочь. Питон 2.7

 

Основная строка

self.SIGNAL_INSERT_LOGVIEW.emit(_str.decode("GB2312").encode("utf-8"))

При билде апк в firebase через плагин в AirTest (QA-тестирование на Unity)

 

Среда разработки от уважаемых китайских разработчиков Я думаю в связи с этим ошибки с кодировкой GB2312. Гуглил, искал... пока безтолку

 

Спойлер

# coding=utf-8

from PyQt5.QtCore import QThread, pyqtSignal
from app.plugins.editor.plugin import CodeEditorPlugin
from app.params import ROOT
from app.utils import tmpPath
from .tool.setting import include_ext

import tarfile
import subprocess
import os
import shutil
import sys

class BuildFirebaseThread(QThread):

    SIGNAL_BUILD_COMPLETE = pyqtSignal()
    SIGNAL_SCRIPT_NOT_EXIST = pyqtSignal()
    SIGNAL_UPDATE_PROGRESS = pyqtSignal(int)

    SIGNAL_INSERT_LOGVIEW = pyqtSignal(str)  # 插入新的log到log区

    def __init__(self, build_list=[]):
        super(BuildFirebaseThread, self).__init__()
        self.resign_process = None
        self.build_list = build_list

        pyeditor_plugin = CodeEditorPlugin()
        self.SIGNAL_INSERT_LOGVIEW.connect(pyeditor_plugin.insertLogView)

    def make_targz(self, output_filename, source_dir, signal=None, max_value=0):
        count = 0
        with tarfile.open(output_filename, "w:gz") as self.tar:
            list_dir = os.listdir(source_dir)
            num = max_value / len(list_dir)
            for _dir in list_dir:
                ext = os.path.splitext(_dir)[1]
                if ext in include_ext:
                    self.tar.add(os.path.join(source_dir, _dir), arcname=_dir)
                    if count < max_value:
                        signal.emit(num)
                        count += num
                if self.closed:
                    break
            if count < max_value:
                signal.emit(max_value - count)
        self.tar.close()
        return not self.closed

    def copy_files(self, source_dir, target_dir):
        if os.path.exists(target_dir):
            shutil.rmtree(target_dir)
        shutil.copytree(source_dir, target_dir)
        # for file in os.listdir(target_dir):
        #     if self.closed:
        #         return False
        #     full_path = os.path.join(target_dir, file)
        #     if os.path.isfile(full_path) and os.path.splitext(full_path)[1] == '.py':
        #         new_scropt = os.path.join(target_dir, 'test_script.py')
        #         shutil.move(full_path, new_scropt)
        return True

    def get_absolute_path(self, dir_path, file_path=""):
        root_temp = tmpPath(dir_path)
        return os.path.join(root_temp, file_path)

    def set_close(self):
        self.closed = True

    def run(self):
        self.closed = False
        target_base_dir = self.get_absolute_path("tool")
        if not self.copy_files(os.path.join(ROOT, "plugins/firebase/tool"), target_base_dir):
            return
        self.SIGNAL_UPDATE_PROGRESS.emit(15)

        if not self.copy_files(os.path.join(ROOT, "plugins/firebase/apk"), self.get_absolute_path("apk")):
            return

        with open(self.get_absolute_path("tool", "assets/script_registry.txt"), "w") as file:
            for source_dir in self.build_list:
                # source_dir = CodeEditorPlugin().editor_tab.getCurrentProjectPath()
                file.write(os.path.basename(source_dir) + '\n')
                print("init source:===============", source_dir)
                # target_dir = self.get_absolute_path("app/plugins/firebase/tool/copy_app/test_script.air")
                # print("target path:===================", target_dir)
                if source_dir == "":
                    self.SIGNAL_SCRIPT_NOT_EXIST.emit()
                    return

                if not self.copy_files(source_dir, os.path.join(target_base_dir, "copy_app", os.path.basename(source_dir))):
                    return

        shutil.copy(self.get_absolute_path("tool", "base_apk/base.apk"),  self.get_absolute_path("tool", "KivyIns-debug.apk"))

        self.SIGNAL_UPDATE_PROGRESS.emit(5)

        output_filename = self.get_absolute_path("tool", "assets/private.mp3")
        source_dir = self.get_absolute_path("tool", "copy_app")
        if not self.make_targz(output_filename, source_dir, self.SIGNAL_UPDATE_PROGRESS, 65):
            return
        # self.SIGNAL_UPDATE_PROGRESS.emit(70)
        old_path = os.getcwd()
        os.chdir(self.get_absolute_path('tool'))
        if "darwin" in sys.platform:
            try:
                _str = subprocess.check_output(['./resign.sh'],
                                               stderr=subprocess.STDOUT)
                # _str = subprocess.check_output(['jarsigner', '-verbose', '-sigalg', 'SHA1withDSA', '-digestalg', 'SHA1',
                #                                 '-keystore', 'firebase_keystore', '-storepass', '5485726',
                #                                 'KivyIns-debug.apk', 'firebase_key'], stderr=subprocess.STDOUT)
                self.SIGNAL_INSERT_LOGVIEW.emit(_str)
            except subprocess.CalledProcessError as e:
                self.SIGNAL_INSERT_LOGVIEW.emit(
                    "command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
        else:
            try:
                _str = subprocess.check_output(['resign.bat'],
                                               stderr=subprocess.STDOUT)
                # _str = subprocess.check_output(['jarsigner', '-verbose', '-sigalg', 'SHA1withDSA', '-digestalg', 'SHA1',
                #                                 '-keystore', 'firebase_keystore', '-storepass', '5485726',
                #                                 'KivyIns-debug.apk', 'firebase_key'], stderr=subprocess.STDOUT)
                import chardet
                self.SIGNAL_INSERT_LOGVIEW.emit(_str.decode("GB2312").encode("utf-8"))
            except subprocess.CalledProcessError as e:
                self.SIGNAL_INSERT_LOGVIEW.emit(
                    "command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))

        self.SIGNAL_UPDATE_PROGRESS.emit(7)
        os.chdir(old_path)
        shutil.copy(self.get_absolute_path("tool", "KivyIns-debug.apk"),  self.get_absolute_path("apk", "Test.apk"))
        self.SIGNAL_UPDATE_PROGRESS.emit(8)
        self.SIGNAL_BUILD_COMPLETE.emit()

 

 

Исходники

Билд

  • Понравилось 1

5 Комментариев


Рекомендуемые комментарии

Мне кажется они не используют свою программу в windows.

Они конечно написали resign.bat, но в нем точно такой же код, что и для sh-скрипта.

 

В общем ошибка заключается в том, что в архиве, в папке plugins\firebase\tool\ лежит кривой resign.bat.

Почему скрипт падает с такой странной ошибкой? Он пытается запустить resign.bat, на что русскоговорящая Windows возвращает "# не является внутренней или внешней командой...", вместо нормального ответа скрипта.

Ну а он с честными глазами, не умея разговаривать кириллицей (на cp866) пытается расшифровать в этом тексте китайские символы и обламывается.

 

Мне кажется нужно сделать несколько действий, чтобы починить проблему:

  1. Поправить питонячий скрипт (в целом можно и без этого, но вряд ли же не будет ошибок :) )
  2. Исправить resign.bat

Что править в питонячем скрипте. 

Мы ребята простые, нам этот скрипт не распространять, поэтому я предлагаю просто поменять кодировку в этом месте.

Просто заменяй GB2312 на cp866, тогда весь русский текст, вываленный cmd.exe будет нормально отображаться.

 

Как исправить resign.bat

Нужно привести его к виду обычного bat-скрипта для Windows. Потому что сейчас это калька с sh-скрипта для /bin/sh.

Предлагаю переписать команды из него в привычный вид bat-скрипта. Но в целом кажется оно работает и так, поэтому как в целом на свой выбор.

Я, увы, не силен в этом, поэтому могу только посоветовать открыть resign.bat блокнотом и удалить лишнее (кажется сами команды для винды выглядят норм).

У меня не отрабатывает из-за того, что в папке assets нет файла private.mp3 и script_registry.txt, да и самого jarsigner у меня не стоит.

Если у тебя всё это есть или ты понимаешь за чем это, думаю не будет проблемы :)

 

 

  • Понравилось 1
  • Плюс 1
Ссылка на комментарий
58 минут назад, srg91 сказал:

cp866

Точно, с ней виден русский текст. Интересно, я не знал

 

58 минут назад, srg91 сказал:

Нужно привести его к виду обычного bat-скрипта для Windows

И в этом прав...

Удалил эту строку

#!/bin/sh

и логи без ошибок прошли

 

Спойлер


C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\tool>echo "aject private.mp3..."
"aject private.mp3..."

C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\tool>aapt a KivyIns-debug.apk  assets/private.mp3
 'assets/private.mp3'...

C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\tool>aapt a KivyIns-debug.apk  assets/script_registry.txt
 'assets/script_registry.txt'...

C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\tool>echo "resign new apk..."
"resign new apk..."

C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\tool>jarsigner -verbose -sigalg SHA1withDSA -digestalg SHA1 -keystore firebase_keystore -storepass 5485726 KivyIns-debug.apk firebase_key
   adding: META-INF/MANIFEST.MF
   adding: META-INF/FIREBASE.SF
   adding: META-INF/FIREBASE.DSA
  signing: AndroidManifest.xml
  signing: LICENSE-junit.txt
  signing: classes.dex
  signing: junit/runner/logo.gif
  signing: junit/runner/smalllogo.gif
  signing: lib/armeabi-v7a/libSDL2.so
  signing: lib/armeabi-v7a/libSDL2_image.so
  signing: lib/armeabi-v7a/libSDL2_mixer.so
  signing: lib/armeabi-v7a/libSDL2_ttf.so
  signing: lib/armeabi-v7a/libmain.so
  signing: lib/armeabi-v7a/libpython2.7.so
  signing: res/anim/abc_fade_in.xml
  signing: res/anim/abc_fade_out.xml
  signing: res/anim/abc_slide_in_bottom.xml
  signing: res/anim/abc_slide_in_top.xml
  signing: res/anim/abc_slide_out_bottom.xml
  signing: res/anim/abc_slide_out_top.xml
  signing: res/color/abc_background_cache_hint_selector_material_dark.xml
  signing: res/color/abc_background_cache_hint_selector_material_light.xml
  signing: res/color/abc_primary_text_disable_only_material_dark.xml
  signing: res/color/abc_primary_text_disable_only_material_light.xml
  signing: res/color/abc_primary_text_material_dark.xml
  signing: res/color/abc_primary_text_material_light.xml
  signing: res/color/abc_search_url_text.xml
  signing: res/color/abc_secondary_text_material_dark.xml
  signing: res/color/abc_secondary_text_material_light.xml
  signing: res/drawable-hdpi-v4/abc_ab_share_pack_holo_dark.9.png
  signing: res/drawable-hdpi-v4/abc_ab_share_pack_holo_light.9.png
  signing: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png
  signing: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png
  signing: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png
  signing: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png
  signing: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png
  signing: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png
  signing: res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_clear_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_go_search_api_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_menu_moreoverflow_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_search_api_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_ic_voice_search_api_mtrl_alpha.png
  signing: res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_list_focused_holo.9.png
  signing: res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png
  signing: res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png
  signing: res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png
  signing: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png
  signing: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png
  signing: res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png
  signing: res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png
  signing: res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png
  signing: res/drawable-hdpi-v4/ic_launcher.png
  signing: res/drawable-ldrtl-hdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-ldrtl-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-ldrtl-mdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-ldrtl-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-ldrtl-xhdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-ldrtl-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-ldrtl-xxhdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-ldrtl-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-ldrtl-xxxhdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-ldrtl-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-ldrtl-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_ab_share_pack_holo_dark.9.png
  signing: res/drawable-mdpi-v4/abc_ab_share_pack_holo_light.9.png
  signing: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png
  signing: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png
  signing: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png
  signing: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png
  signing: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png
  signing: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png
  signing: res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_clear_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_go_search_api_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_menu_moreoverflow_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_search_api_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_ic_voice_search_api_mtrl_alpha.png
  signing: res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_list_focused_holo.9.png
  signing: res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png
  signing: res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png
  signing: res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png
  signing: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png
  signing: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png
  signing: res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png
  signing: res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png
  signing: res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png
  signing: res/drawable-mdpi-v4/ic_launcher.png
  signing: res/drawable-v21/abc_cab_background_top_material.xml
  signing: res/drawable-xhdpi-v4/abc_ab_share_pack_holo_dark.9.png
  signing: res/drawable-xhdpi-v4/abc_ab_share_pack_holo_light.9.png
  signing: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png
  signing: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png
  signing: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png
  signing: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png
  signing: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png
  signing: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png
  signing: res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_clear_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_go_search_api_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_menu_moreoverflow_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_search_api_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_ic_voice_search_api_mtrl_alpha.png
  signing: res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_list_focused_holo.9.png
  signing: res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png
  signing: res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png
  signing: res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png
  signing: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png
  signing: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.png
  signing: res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png
  signing: res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png
  signing: res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png
  signing: res/drawable-xhdpi-v4/ic_launcher.png
  signing: res/drawable-xxhdpi-v4/abc_ab_share_pack_holo_dark.9.png
  signing: res/drawable-xxhdpi-v4/abc_ab_share_pack_holo_light.9.png
  signing: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png
  signing: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png
  signing: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png
  signing: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png
  signing: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png
  signing: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png
  signing: res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_clear_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_go_search_api_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_menu_moreoverflow_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_search_api_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_ic_voice_search_api_mtrl_alpha.png
  signing: res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png
  signing: res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png
  signing: res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png
  signing: res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png
  signing: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.png
  signing: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.png
  signing: res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png
  signing: res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png
  signing: res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png
  signing: res/drawable-xxhdpi-v4/ic_launcher.png
  signing: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png
  signing: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png
  signing: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png
  signing: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png
  signing: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png
  signing: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_ab_back_mtrl_am_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_clear_mtrl_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_menu_moreoverflow_mtrl_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_search_api_mtrl_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_ic_voice_search_api_mtrl_alpha.png
  signing: res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png
  signing: res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png
  signing: res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png
  signing: res/drawable/abc_btn_check_material.xml
  signing: res/drawable/abc_btn_radio_material.xml
  signing: res/drawable/abc_cab_background_internal_bg.xml
  signing: res/drawable/abc_cab_background_top_material.xml
  signing: res/drawable/abc_edit_text_material.xml
  signing: res/drawable/abc_item_background_holo_dark.xml
  signing: res/drawable/abc_item_background_holo_light.xml
  signing: res/drawable/abc_list_selector_background_transition_holo_dark.xml
  signing: res/drawable/abc_list_selector_background_transition_holo_light.xml
  signing: res/drawable/abc_list_selector_holo_dark.xml
  signing: res/drawable/abc_list_selector_holo_light.xml
  signing: res/drawable/abc_switch_thumb_material.xml
  signing: res/drawable/abc_tab_indicator_material.xml
  signing: res/drawable/abc_textfield_search_material.xml
  signing: res/drawable/icon.png
  signing: res/drawable/presplash.jpg
  signing: res/layout-v11/abc_screen_content_include.xml
  signing: res/layout-v21/abc_screen_toolbar.xml
  signing: res/layout/abc_action_bar_title_item.xml
  signing: res/layout/abc_action_bar_up_container.xml
  signing: res/layout/abc_action_bar_view_list_nav_layout.xml
  signing: res/layout/abc_action_menu_item_layout.xml
  signing: res/layout/abc_action_menu_layout.xml
  signing: res/layout/abc_action_mode_bar.xml
  signing: res/layout/abc_action_mode_close_item_material.xml
  signing: res/layout/abc_activity_chooser_view.xml
  signing: res/layout/abc_activity_chooser_view_include.xml
  signing: res/layout/abc_activity_chooser_view_list_item.xml
  signing: res/layout/abc_expanded_menu_layout.xml
  signing: res/layout/abc_list_menu_item_checkbox.xml
  signing: res/layout/abc_list_menu_item_icon.xml
  signing: res/layout/abc_list_menu_item_layout.xml
  signing: res/layout/abc_list_menu_item_radio.xml
  signing: res/layout/abc_popup_menu_item_layout.xml
  signing: res/layout/abc_screen_simple.xml
  signing: res/layout/abc_screen_simple_overlay_action_mode.xml
  signing: res/layout/abc_screen_toolbar.xml
  signing: res/layout/abc_search_dropdown_item_icons_2line.xml
  signing: res/layout/abc_search_view.xml
  signing: res/layout/abc_simple_dropdown_hint.xml
  signing: res/layout/chooser_item.xml
  signing: res/layout/main.xml
  signing: res/layout/project_chooser.xml
  signing: res/layout/project_empty.xml
  signing: res/layout/support_simple_spinner_dropdown_item.xml
  signing: res/mipmap-hdpi-v4/ic_launcher.png
  signing: res/mipmap-mdpi-v4/ic_launcher.png
  signing: res/mipmap-xhdpi-v4/ic_launcher.png
  signing: res/mipmap-xxhdpi-v4/ic_launcher.png
  signing: res/mipmap-xxxhdpi-v4/ic_launcher.png
  signing: resources.arsc
  signing: assets/private.mp3
  signing: assets/script_registry.txt
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2045-06-17) or after any future revocation date.

C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\tool>exit 0  

 

 

Я тренировался на Unity3D/unitydemo.air. 

Эта апк собрана на Юнити. Её переместил в папку с проектом air (хотя она там и есть, это я другую удалил). Потом вызываю Firbase сборку и переподписываю.

Собирается без ошибок, но апк на локальном смартфоне скрывается. При повторном запуске показывает ошибку, а по идее должен запуститься тестовый скрипт unitydemo.py

 

Идея то в том, что тестовые скрипты игр запускатся в firebase на удаленных физических устройствах в службе Test Lab и там в течении например 15 минут идет тестирование с графиками, видео, логами. Похоже на известную SikuliX

 

p.s. сменил должность на рукводителя отдела тестирования :) Повысили ЗП, больше не разработчик игр. Руковожу немного, да ботов редко пишу. Пожалуй я рад этому. У меня много данных аналитики, куча сервисов... Общаюсь больше с людьми, по верхам отделов и с разработчиками. Много задач завожу по функциональным багам. По железу и багам всегда ко мне.... Бывает и нудная работа в виде даже ручного тестирования игр (когда наш человек в отпуске), отчетности...  Общаюсь с тестировщиками ручного тестирования. Два удаленных, один наш... Меньше стал уставать, мозги отдыхают... Такие дела

  • Плюс 2
Ссылка на комментарий
13 часов назад, MasterGH сказал:

сменил должность на рукводителя отдела тестирования :)

Поздравляю!!!:D

Ссылка на комментарий
9 часов назад, Garik66 сказал:

Поздравляю!!!:D

 

Да, я давно уже должность поменял... ничего особого ) Это просто так новость, не нужно поздравлять) Но, все равно спасибо

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.