1с ошибка не обнаружен apk файл возможно

Обновлено: 06.07.2024

Сразу скажу что несмотря на громкое, как кому-то могло показаться, название статьи — тут не будет никакого прям уж совсем хардкора. А также несмотря на то что реверсинг чаще всего связывается с информационной безопасностью — здесь опять же ничего такого не будет, ибо никаких защит (за исключением небольшой минификации) обходить не было необходимости. Нет их. Мобильная 1с бесплатный продукт в который не встроено никаких проверок, защит и платных функций.

Так что обращаюсь к тем кто надеется увидеть применение деобфускаторов, использование Frida/Xposed, другого хитрого софта — ничего интересного вы для себя не найдете. Тут мы просто будем использовать apktool, baksmali, apksigner, adb, jadx, консоль, текстовый редактор, javac, d8 и все.

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

Немного расскажу с чего мне вообще вдруг пришла идея как-то влезать в работу мобилки на 1с. На данный момент я вот уже скоро год как занимаюсь нативной разработкой под андроид, но до этого я проработал 4 года 1с программистом, причем последние года полтора мы часто работали именно с мобильной платформой. Несмотря на то что основные потребности она удовлетворяла, было у нее так же и очень много минусов (помимо языка программирования). В частности нельзя было по-человечески встроить какую нибудь внешнюю библиотеку, по крайней мере штатными средствами и с нашим тогдашним багажом знаний. Так же все было очень грустно, например, с функциональностью отображения меток на карте. Вся возможность ее настройки заключалась в указании текста для меток когда по ним тапаешь. На тот момент единственным способом как-то это обойти было использование специального объекта "ПолеHTMLДокумента", но с ним были свои проблемы. На время работы с 1с все мои знания в нативной разработке под андроид заключались в паре HelloWorld, так что идеи реверсить мобилку 1сную даже в голову не приходило, разные вопросы от заказчиков по нестандартному расширению возможностей 1с мы либо не решали никак, либо пилили очень простые нативные приложения ставившиеся рядом и криво/косо с 1с интегрировали (да и лицензионное соглашение 1с вроде запрещает правки в самой платформе).

Так что первая причина заняться реверсингом 1с заключалась в том, что мне стало интересно, а что я могу сделать имея текущий багаж знаний. Сразу скажу, опыт нативной разработки оказался не сказать что нужен, в повседневной работе почти ничего из того что будет описано ниже не встречается. Так что в принципе наверно любой средний 1сник посидев несколько дней/недель смог бы во всем этом разобраться.

Вторая же причина заключается в том, что мне просто захотелось попробовать поковырять чужие apk, ибо до этого я упускал этот, довольно широкий пласт знаний, и, поскольку нужно было с чего то начинать, мне пришла в голову как раз 1с.

Первое что я сделал, еще когда идея реверсить 1с только смутно бродила в моей голове, просто перетащил мышью apk файл приложения на окно AndroidStudio. Хочу сказать сразу — что мне стало немного грустно, ибо большая часть кода 1с написана на C++ и лежит в .so библиотеках, и их отреверсить посложнее, да и не было интересно. А вот файл classes.dex всецело завладел моим вниманием, тем более что его скромный размер давал мне возможность предположить что и реверсить его будет несложно. В целом так и оказалось. Кстати, интересное следствие того что большая часть кода на C++ — очень много методов и классов избежали обработки с помощью ProGuard. Сложновато делать интероп с минифицированным кодом ;).

Вот что я увидел в окне студии (разбирал x86 версию, чтобы работать с эмулятором а не реальным девайсом)


Как можно видеть на скриншоте выше — минификации приложение почти не подвергалось (в плане переименования классов и методов). Плюс видно что кода на java очень немного и почти все место занимают so библиотеки.

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


Список методов и их сигнатуры внушали надежду что все будет очень просто, и я решил заглянуть в smali код, после чего сильно напрягся и пошел читать список команд smali, и как его читать/писать. Впрочем, именно на этом моменте я решил что дело обещает быть несложным и недолгим, а соответственно вот он, повод поиграться с реверсингом. Приняв для себя решение посвятить этому пару вечеров (как же жестоко я ошибался), пошел со спокойной душой спать ложиться.

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

  1. Подготовить конфигурацию 1с для мобильной платформы вся функциональность которой заключается в отображении двух меток на карте.
  2. Распаковать apk мобильной платформы, запаковать без изменений, убедиться в работоспособности конфигурации.
  3. Внести небольшие изменения в smali файлы, не меняющие практически ничего, но которые можно было бы увидеть в логах или изменении логики работы, собрать и убедиться что это работает.
  4. Перегнать smali активности с картой в java, либо же написать активность с таким же интерфейсом, подменить активность в приложении без изменения функциональности. Как альтернативный вариант, если с первым разбираться будет лень или сложновато — написать класс, который будет выполнять часть работы за MapImpl и добавить вызов его методов из smali MapImpl.
  5. Написать эту статью (давно уже хотелось что-то написать, но другие идеи пока еще варятся в голове, а тут показалось что это наконец довольно достойная тема)

Ну, хорошо хоть с первым пунктом у меня проблем не возникло. Скачал бесплатную учебную версию платформы, скачал мобильную платформу, развернул все это у себя на компьютере (1С, сделайте вы уже версию учебную для linux, у меня как раз очередной порыв уйти с винды, а тут приходится часть работы в ней делать). Конфигурация очень простая, при запуске вызывает функцию ПоказатьНаКарте() в которую передает две точки на карте. Все.

А вот со вторым пунктом из-за моей неграмотности вышло грустнее. Да что уж там, проблемы были со всеми пунктами кроме первого.

Гугл мне сразу подсказал что есть такой отличный инструмент apktool позволяющий буквально двумя командами разбирать apk до .smali файлов, а так же собирать из них обратно. Им я и решил воспользоваться. Распаковал apk следующей командой (здесь и далее, несмотря на то что временами часть работы делал на linux, все команды буду приводить для windows):

и получил каталог unpacked в котором лежала куча файлов, с ними в будущем предстояло работать. Запаковал apk обратно командой

Попытавшись установить его на эмулятор

я получил следующую ошибку:

В общем нужно было больше внимания базе уделять. Я конечно знал что существуют подписи, и о том что они делятся на дебажные и релизные, но не знал что приложения вообще без подписей не устанавливаются. Я решил воспользоваться своей дебажной подписью, и подписав apk командой

мне удалось запустить приложение. Правда вместо карты с двумя точками меня ждал серый экран с подписью google внизу. Почесав репу я решил что дело в том что используется ключ для гугл карт от 1с, который с моей подписью не работает. Поэтому пойдя в консоль разработчика на сайте google я создал новый проект для работы с api google карт на андроиде, получил api key, который указал в res/values/strings.xml в google_maps_key строке, а так же добавил свой дебажный ключ в разрешенные для проекта. Перепаковал и переподписал apk, запустил, и наконец все снова работало.

Следующее что я хотел сделать — это автоматизировать запуск приложения и добавление конфигурации 1с в платформу. Вручную после каждых правок делать это делать было бы той еще морокой.

Сначала я нагуглил и попытался воспользоваться утилитами jadx или dex2jar, чтобы не мучиться с чтением smali, а читать более привычный код на java, но по какой-то причине они не работали (в дальнейшем jadx все таки завести удалось каким то шаманством). Пришлось разбирать smali, благо это оказалось не так ужасно как я боялся.

Чтобы понять, как мобильная платформа получает от десктопной платформы команду на запуск конфигурации при подключении по adb, я решил посмотреть точки входа в приложение и добавить вывод в логи интентов и прочей полезной информации. Начать решил с application ( com.e1c.mobile.E1cApplication ) и активности имеющей android.intent.action.MAIN в intent-filter ( com.e1c.mobile.App ). Также меня заинтересовал reciever com.e1c.mobile.Starter с интересным intent filter на com.e1c.mobile.START_TEMPLATE и com.e1c.mobile.START_CMD . Уж очень похоже на то что он принимает интенты с командами 1с, и именно он стартует конфигурацию из шаблона.

В E1cApplication ничего интересного к сожалению обнаружить не удалось, все что там происходит — установка своего хендлера на крэши.

А вот в двух других классах, Starter и App информации было гораздо больше и оказалась она довольно полезной. Метод App.onCreate(Landroid/os/Bundle;)V довольно большой, так что приводить его целиком не буду, приведу только заинтересовавшие меня части.

Из приведенного выше участка кода видно что приложение получает интент, кладет ссылку на него в регистр p1 , через StringBuilder дописывает к имени класса и метода и передает в статический метод V(Ljava/lang/String;)V класса Utils . Видимо какой-то свой логгер. После чего интент проверяется на наличие дополнительных данных, и, при наличии, из него получается Uri , из которого в свою очередь получается строка методом getQuery() и передается классу Starter . Дальше изучать onCreate смысла не видел, пробежался взглядом и убедился что действия довольно стандартные. Разве что вью вроде бы создается программно абсолютно другим классом, вместо использования LayoutInflater , но сильно глубоко я не копал, так что возможно все и не так как я подумал. Следующий класс куда я пошел — Starter . Благо он и в активити упоминался и в манифесте меня заинтересовал.

К сожалению тот метод что вызывался из активити, оказался нативным ( .method static native startCmd(Ljava/lang/String;)V ), потому обратил внимание на метод onRecieve (в котором приложение принимает интенты на которые подписано). Приводить код не буду, меня в нем заинтересовало что интент так же логигуется методом V(Ljava/lang/String;)V класса Utils . Получается что достаточно дописать немного smali кода в этот метод — и я получу свои логи, причем на тех же местах где их задумывали разработчики платформы. Перейдя в класс Utils я увидел сразу 2 пустых метода, V и W. Видимо пустые они потому как при компиляции релизной версии вырезались. Я просто дописал в них запись переданной строки в стандартный android.utils.Log . Для этого сменил количество требуемых локальных регистров с 0 до 1 (для строки тега), поместил эту самую строку в регистр v0 , а также прописал вызов методов Log

Запустил из 1с десктопной 1с мобильную и получил следующие логи

Как видим — есть вся необходимая информация для автоматизации запуска приложения через adb. Правда к этому моменту я словил двойной фейспалм. Во-первых, наконец подобрал ключи с которыми jadx осилил перевод в java (понятно что писать все равно в smali бы пришлось, но все же). А вторым фейспалмом оказалось то что я осознал что зря я мучаю платформу разработчика (нужна только для разработки и отладки конфигураций), правильнее было бы реверсить сборку релизов 1сных приложений, причем там есть полу готовые gradle проекты для сборки, есть файл с перечнем зависимостей и другие плюшки. Я немного по этому поводу погрустил — и решил все таки закончить с тем что начал. Все равно ради фана делаю все это, а не ради практической пользы.

Автоматизировать установку и запуск через adb приложения я решил с помощью gradle. Все равно к тому моменту у меня уже был написан небольшой перечень тасок (распаковка, копирование модифицированных ресурсов и smali файлов в каталог с распакованным приложением, упаковка, подпись, по сути все таски просто раннеры для команд консольных). К существующим таскам добавил выполняющие следующие команды

Перечисленной выше последовательностью команд мы устанавливаем apk, даем установленному приложению разрешение на чтение диска, копируем конфигурацию 1с на устройство, и даем команды на запуск 1с и загрузку конфигурации. Работает это кстати не на всех версиях андроида, но я тестировал на api 28, и соответственно на нем эта последовательность делает все корректно. На младших версиях могут быть проблемы с выдачей прав.

Тут у меня было несколько вариантов дальнейшего развития событий.

  1. Правлю напрямую MapImpl.smali, что обещало быть довольно сложным занятиям учитывая что библиотека для работы с гугл-картами довольно серьезно минифицирована, да еще и в синтаксисе smali все писать пришлось бы.
  2. Использую полученный благодаря jadx файл MapImpl.java, вношу правки в него, используемые в нем классы подменяю на заглушки, перегоняю в smali, подменяю файл, упаковываю. Вариант показался мне напряжным так как уж больно много заглушек пришлось бы городить, к тому же с некоторыми из них были проблемы с которыми у меня не было желания ковыряться.
  3. Комбинирую подходы 1 и 2, вставляю в smali код вызовы специального класса расширения MapImplExtenstion.java который расширяет часть логики — в итоге выбрал этот вариант, просто потому что он проще первого и второго вариантов, и показался мне пусть возможно чуть более сложным чем вариант 4, но зато менее трудоемким (угу, мечтай, наивный).
  4. Вообще заменить гугл карты на что-то другое, например яндекс. Сделать всю работу в другом проекте, просто повторив сигнатуры MapImpl, затем минифицировать распаковать, и просто закинуть готовые smali файлы перед упаковкой приложения на соответствующие места. Никаких проблем с минифицированными библиотеками, но пришлось бы регистрироваться для получения ключа для карт, создавать отдельный проект, заморачиваться со стыковкой ресурсов и прочее.
  5. То же что вариант 4, но заменить гугл на… Гугл. Но тут у меня были подозрения что удастся минифицировать 1 в 1 maps sdk, а ставить эксперименты не было желания.
Поля Xj:Ljava/util/ArrayList и Xk:Ljava/util/ArrayList

Используя jadx для декомпиляции в java нашел в декомпилированном коде метод отвечающий за их заполнение

Соответственно у класса MapImplExtension добавил метод ArrayList[] kN(String[] titles, double[] coordinates) который в первом элементе массива вернет список который нужно будет поместить в Xj, а во втором список для Xk.

Скомпилировал следующими командами сначала в class, затем в dex, затем декомпилировал в smali чтобы потом упаковать вместе с остальными файлами

Добавил в MapImpl.smali поле extension типа нашего нового класса, и добавил его инициализацию

А также заменил обработку в классе MapImpl данных от 1с на обработку в классе MapImplExtension

Запаковав и запустив приложение — я радостно увидел что все работает. Но на данный момент я не сделал ничего такого что именно расширило бы возможности мобильной платформы. Просто подменил заголовки у меток на карте. А вот захотев изменить изображения меток я здорово обломался и зарылся довольно надолго в исходники и документацию.

Сначала немного пояснений как вообще устанавливается маркер для метки. У класса MarkerOptions есть метод public MarkerOptions icon (BitmapDescriptor iconDescriptor) в который передается объект созданный одним из статических методов класса BitmapDescriptorFactory .

И вот здесь собственно меня ждал облом. Поскольку 1с это дело не использует — соответствующие классы были просто вырезаны при минификации. Пришлось их восстанавливать, и было это больно и долго. Точнее классы то были, но были переименованы и не содержали нужных методов. Путем ковыряния в сорцах полной библиотеки для работы с картами — по сигнатурам и константам выяснил соответствия классов библиотеки классам приложения, добавил необходимые методы и поля, пересобрал, и порадовался что этот квест наконец закончил, поскольку все наконец то заработало, пусть и не с первой попытки (несколько раз косячил с сигнатурами и путал минифицированные классы).

Результат (внешне не сильно впечатляющий). Выбраны методом тыка две точки с координатами (45;45) и (46;46)


Поскольку объем измененного кода довольно большой — включать в статью его не буду, приведу только изменения сигнатур. Если кому интересны все правки которые я сделал на этом шаге — можете посмотреть в этом коммите.

Подводя итоги — опыт был довольно интересный. По крайней мере для меня. Помог разобраться с некоторыми инструментами, узнал немного лучше о работе андроида и формате байткода для dalvik/art, опыт ковыряния минифицированного кода тоже будет полезен (уже был случай когда в релизной версии R8 вырезал поля класса которые на самом деле использовались, в тот раз только методом тыка разобрался, сейчас бы это проблем не доставило).

Если кому-то интересно самому все повторить и возможно расковырять еще больше — я выложил на github все исходники вместе с кривым gradle скриптом осуществляющим сборку из исходного apk модифицированного.

[info] Версия ОС : Windows x86-64, version 6.1 Service Pack 1 (Build 7601)
[info] Версия 1С:Предприятия : 8.3.10.2168 Windows x86-64
[info] Версия сборщика : 2.0.5.24
[info] Версия мобильной платформы : 8.3.10.51
[info] Графическая информация :
[info] Аудиоинформация :
[info] Android API Level : 25

[WARN] Информация о звуковых файлах отсутствует
[WARN] Ключ для работы с картами Google не задан в настройках. Работа с картами будет невозможна
[WARN] Необходимый элемент НЕ обнаружен

[info] Начинается сборка
Buildfile: F:\Mobile\tmp\03307c81-840d-49f0-a2b3-438742b06822\build.xml

BUILD FAILED
F:\Mobile\tmp\03307c81-840d-49f0-a2b3-438742b06822\build.xml:50: Cannot find F:\Mobile\Android\sdk\tools\ant\build.xml imported from F:\Mobile\tmp\03307c81-840d-49f0-a2b3-438742b06822\build.xml

Total time: 0 seconds

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Мобильное приложение. Сборка *.apk файла
Добрый вечер. Читал много инфы по поводу сборки. Прочитал интересную вещь, что есть конфигурация и.

Экран загрузки, мобильное приложение iOS/Android
Здравствуйте! Подскажите, экран загрузки приложения, хочу сделать анимацию (gif, apng, mng) при.


Как сделать так, чтобы мобильное приложение автоматически подстраивалось под размер экрана?
В Android Studio мы же под определенную диагональ создаём приложение (один эмулятор).. Как при.


сборка под android
Собственно, если у меня есть приложение, написанное с помощью qt creator, можно ли его как-нибудь.

mxs89, да кто же знает то.

Сравнивай что не так у тебя

Добавлено через 20 минут
С ИТСа (для инфо)

25.5.2.2. Для ОС Android

Для разработки мобильного приложения для ОС Android необходимо выполнить следующие требования:

Для нормальной работы с платформой разработчика необходимо установить Android SDK Platform-tools (пример на рис.471). Версия инструмента можно посмотреть в колонке Rev. На рисунке будет выполнена установка версии 22, что удовлетворяет требованиям (версия не ниже 14). После выбора компонент следует нажать кнопку Install X package… и согласиться с лицензионным соглашением.

Для установки мобильной платформы разработчика на мобильное устройство, работающее под управлением Android, необходимо выполнить следующие действия:

Пример для ARM-платформы:

%ANDROID_SDK%\platform-tools\adb.exe install -r "<Каталог платформы>\1cem-arm.apk"
Пример для x86-платформы:

%ANDROID_SDK%\platform-tools\adb.exe install -r "<Каталог платформы>\1cem-x86.apk"
Где, Каталог платформы – каталог, в котором расположен соответствующий файл с мобильной платформой. Если мобильная платформа уже установлена на мобильное устройство, то данная команда выполнит ее переустановку.

Для установки мобильной платформы разработчика можно воспользоваться командой конфигуратора Главное меню – Конфигурация – Мобильное приложение – Использование Android debug bridge – Установить мобильную платформу. В этом случае надо будет выполнить дополнительную настройку конфигуратора (подробнее см. здесь). С установку мобильной платформы можно выполнить или на физическое мобильное устройство, подключенное к компьютеру или на эмулятор устройства, созданный с помощью менеджера виртуальных устройств Android (AVD Manager.exe, входит в состав Android SDK).

Добавлено через 2 минуты
а так же сборка

25.5.7. Сборка мобильного приложения перед публикацией в магазине приложений

Мобильное приложение, предназначенное для публикации в магазине приложений, состоит из мобильной платформы и мобильного приложения и дополнительных файлов (иконок, логотипов и т. д.), «упакованные» в один контейнер. Этот файл можно установить на мобильное устройство.

Для формирования мобильного приложения предназначена специальная конфигурация (Сборщик мобильных приложений), которая входит в состав дистрибутива мобильной платформы. Конфигурация предоставляет следующие возможности:

В том случае, если собираемое мобильное приложение включает внешние компоненты, то будут собраны мобильные приложения только для тех мобильных ОС, для которых существуют внешние компоненты. Другими словами, если к мобильной конфигурации подключена внешняя компонента, которая собрана для ОС iOS и Android, то такое мобильное приложение не будет собрано для ОС Windows.

Результатом работы сборщика выступают следующие объекты:

1. Мобильное приложение для ОС Android (архитектура ARM);

2. Мобильное приложение для ОС Android (архитектура x86);

3. Проект мобильного приложения для сборки на компьютере Apple (.zip-файл);

4. Пакет приложения для ОС iOS (.ipa-файл). Файл с пакетом приложения формируется в том случае, если в сборщике мобильных приложений настроены параметры соединения с компьютером Mac, который может выполнять сборку пакета приложений;

5. Мобильное приложение для ОС Windows Phone (архитектура ARM, .appx-файл);

6. Мобильное приложение для ОС Windows Phone (архитектура x86, .appx-файл);

7. Мобильное приложение для магазина приложений ОС Windows (архитектура x86, .appx-файл);

8. Мобильное приложение для магазина приложений ОС Windows (архитектура x64, .appx-файл).

Для того чтобы сборщик мобильных приложений мог выполнять какие-либо действия на стороне компьютера Apple, его необходимо настроить. Для этого необходимо выполнить следующие действия:

Сборка мобильного приложения выполняется на стороне сервера. На компьютере (или компьютерах), на котором исполняется серверная часть «1С:Предприятия», должно быть установлено следующее программное обеспечение:

ВНИМАНИЕ! Сборка мобильного приложения для ОС Windows возможна только в том случае, если на компьютере, который выполняет сборку, установлена операционная система Windows 8.1 и выше.
Требования к компонентам Android Studio определяются требованиями мобильной платформы, которая используется при сборке мобильного приложения. Мобильная платформа содержит API Level, который считается рекомендуемым при использовании мобиьлных приложений, собранных с этой платформой. Именно этот API Level будет требовать и сборщик при сборке мобильного приложения. API Level определяет требования к версиям Android Tools и Android Platform Tools. Версия Android Build Tools не должна быть младше, чем используемый API Level. Однако допускается использование любой более старшей версии API Level, относительно версии, которую требует мобильная платформа. В этом случае требования к другим компонентам будут проверяться относительно той версии API Level, который будет реально использоваться при сборке.

Проверить это можно с помощью утилиты SDK Manager.exe, которая поставляется вместе с SDK. Необходимые для работы сборщика компоненты отмечены на рис.473.

Рис. 473. Настройка Android SDK для сборщика

Не рекомендуется устанавливать ознакомительные или тестовые версии требуемых компонент. После выбора необходимых компонентов следует нажать кнопку Install … packages… и согласиться с лицензионным соглашением.

Также сборщик мобильных приложений содержит встроенную документацию (справка), которая содержит описание правил работы со сборщиком, системные требования и форматы архивов, которые будут загружаться в прикладное решение.

25.6. Публикация в магазине приложений

Подготовка приложения для размещения в магазине приложений делается аналогично проверке мобильного приложения перед публикацией в магазине приложений.

25.6.1. Для ОС iOS

Перед отправкой приложения в Apple AppStore необходимо создать приложение в портале iTunes Connect и заполнить всю требуемую информацию о приложении. Затем следует нажать кнопку Ready to Upload Binary, при этом статус вашего приложения в iTunes Connect должен измениться на Waiting For Upload.

25.6.1.1. Из архива проекта

После формирования файла с архивом приложения для ОС iOS следует скопировать файл архива на компьютер Mac и выполнить следующие действия:

: Ошибка при вызове метода контекста (КопироватьФайл)
КопироватьФайл(РабочийКаталог + "test_signed.apk", ИмяСКаталогом + ".apk");
по причине:
Ошибка копирования файлов
по причине:
Ошибка копирования файлов из 'C:\Users\Anara\AppData\Local\Temp\v8_a20_5\test_signed.apk' в 'C:\Mobi\com.e1c.conf.apk' : Каталог не обнаружен

Доброго времени суток. Вот такая ошибка. и никак. ни исправления в EPF, ничего не помогает. Может есть еще кое-что, что я пропустила?Помогите плиз!

Коллеги!
Подскажите 8.3.3 только для Андроид версии 4.2? Кто нибудь пробовал создать мобильное приложение? Если SDK 16 и меньше обработка ругается на версию SDK. Если SDk версию 17 поставить, тогда она ругается на отсуствие файла aapt.exe которго в 17 API нет. Кто нить знает куда копать? Я говорью о последнем релизе. Спасибо я пока не понял какая точно версия нужна 20 или 21. Но та, которую сейчас можно скачать -22- точно не совсем подходит т.к. aapt.exe и др переехали из platform-tools в build-tools\android-4.2.2. Пробовал скопировать в platform-tools - пока всё рано какая-то ошибка на компиляции - ищу решение. (10) arcomage, Получилось? Мне кажется это не доработка 1С. Попробовал на 16 API не ставится apk скачал 22 SDK - другое не скачаешь. Что надо делать я написал в (10) - надо всё из build-tools\android-4.2.2 скопировать в platform-tools, а apkbuilder.bat я взял из старого sdk и положил туда же - всё скомпилировалось

Вы скажите, у вас нетленка для внутренних нужд или для внешних клиентов?

В общем, вместе с мобильной платформой идет файлик 1cem.apk
Ставите его - это сама платформа 1С.
При запуске она просит указать ей файл с конфигурацией.
Свою конфигурацию выгружаете куда-нибудь на веб-сервер, и прописываете адрес в настройках.
Все. Если поставить галочку "Обновлять из конфигуратора", то при каждом запуске 1С ее будет дергать с сервера с целью проверки на наличие обновлений.

Меня настоятельно просят написать один клиент ибо я ему уже для наладонников такую вешь делал.

Забавное решение по поводу конфигурации - т.е. структура конфигурации такая же как и для персоналок?

(12) Не совсем понял про структуру конфигурации.
Конфа для МП - это xml файл Всё получлось. Достаточно скопировать то, что я написал. У меня старый ключ, сгенерированный полгода назад для первой демы - не подошел. А так всё запустилось. Но, скажу я вам, чёт на SGS2 всё как-то медленно грузится. Апкаш-ка стала 42Мб. Геопозиционирование вроде как работает, только без синхронизации фиг чего проверишь.

(15) arcomage, у меня на файл apkbuilder.exe тоже ругается, говорит что отсуствует. Подскажи какой API скачал? На твоем девайсе какая версия прошивки? И скажи плиз какая у тебя версия Android SDK Tools. Заранее спасибо

Вопрос снят. Сам разобрался)))

Добрый день.
LG P970, android 2.2
Скачал с гугл маркета 1с: Заказы и 1с: УНФ для мобильных платформ.
Устанавливаются нормально, но при попытке запуска появляется такая ошибка:

ошибка установки или изменения национальных настроек информационной базы
ошибка доступа к файлу 'v8srvr://dbeng8/f0055B850/Params/locale.inf'
ошибка доступа к файлу 'v8srvr://dbeng8/f0055B850/Params/locale.inf'
ошибка доступа к файлу '/data/local/tmp/v8lIPMomA9139'

Очевидно, что не может получить доступ к файлу на сервере(я так понимаю, на удаленном в инете?). Подключение к интернету стабильное(wi-fi 10мб). Может кто то стыкался с подобной проблемой?

Для запуска 1С в клиент-серверном режиме нужно ДВЕ лицензии: одна серверная для запуска сервера 1С:Предприятия, вторая клиентская для запуска клиентского приложения (а для запуска файловой базы нужна только клиентская лицензия, а серверную устанавливать не нужно вовсе) .

Судя по данному тексту вы получили лицензию на СЕРВЕР.

Не найдена лицензия. Не обнаружен ключ защиты программы или полученная программная лицензия!

Данный текст говорит о том, что 1С не видит лицензию на запуск КЛИЕНТА.

Файл программной лицензии не предусматривает возможность запуска клиентских приложений 1С:Предприятия или внешних соединений:
file://C:/ProgramData/1C/licenses/ХХХХХХХХ.lic

100% что это файл той самой лицензии на сервер 1С, который вы только что получили.
Уточнить можно открыв файл лицензии текстовым редактором, например, блокнотом - в конце файла будет информация о лицензии в человекочитаемом виде.

location-file-lic-1c-03.jpg

Т.е для работы вам теперь ещё надо получить клиентскую лицензию.
Для полного понимания советую почитать инструкцию по повторному получению лицензии 1С с разборами ошибок и примерами (кстати, ваш случай там тоже есть)
Как восстановить программную лицензию 1С:Предприятие 8

P. S.
Кстати имя файла затерли совершенно зря - оно представляет собой дату и время получения лицензии, никакой уникальной идентифицирующей информации в имени файла нет, например, активированная сегодня лицензия будет вида 202110131012345.lic, где первые 8 цифр - это дата 2021.10.13, а следующие 6 цифр - это время ЧЧ.ММ.СС.

Добавлю еще один момент - активировать многопользовательскую программную лицензию на сервере имеет смысл только в трех случаях:

1. Если будут клиент-серверные базы под SQL, в этом случае лицензии клиентам будет выдавать сервер 1С:Предприятия;
2. Если базы опубликованы на веб-сервере (Apache или IIS), в этом случае лицензии будет раздавать модуль веб-сервера;
3. Если сервер терминальный, в этом случае клиенты при подключении по RDP/RemoteApp смогут получить лицензии из файла сами.

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

Читайте также: