Pull to refresh
0
0
MegaDiablo @MegaDiablo

User

Send message
Времени нет развивать проект, так что можно сказать то что есть. Если есть охота, то из develop ветки можно собрать билд с поддержкой тем.
Ребята, вы еще NFC прикрутите, так совсем все хорошо будет :)
Приношу свои извинения я ошибся в команде запуска Java приложения, команда должна выглядеть так "java -jar apm-0.7.1.jar". Ошибку заметил после обращения пользователя Snowly, который сообщил мне что команда у него не работает.
Доброго времени суток,

Я уже несколько раз мелькал в комментариях к подобным статьям. И еще раз решил тихонечко пропиариться :)

Я один из разработчиков замечательного кроссплатформенного приложения «Android Package Manager» или же просто APM. Это приложения призвано облегчить работу с приложениями на устройстве. Оно умеет устанавливать и удалять приложения с устройства(да же пачками) и еще много мелких плюшек. И все те скрипты которые Вы писали делаются в удобном(надеюсь что это так) графическом интерфейсе.

Так что это приложение вполне можно использовать для частичного решения ваших проблем. Итак:
1) Для установки множества приложений(apk файлов) достаточно их перенести(при помощи drag&drop) в список пакетов. И все эти приложения автоматически установятся
2) Для поддержания актуальных apk файлов придется приложить больше усилий. Для этого их придется скачать/обновить на устройстве, а затем сохранить у себя на жестком диске. Опять же сохранение делается через наше приложение(можно сохранять и пачками). Так же никто не отменял описанный вами способ добывания приложений. Единственной неудобство что за версиями придется следить самостоятельно.

Теперь рассмотрим что нужно для APM:
1) Скачать по ссылке mac/win/nix
2) Распаковать в удобное для вас место
3) Запустить при помощи Java. Для этого у вас должна быть установлена Java 6 или старше. Переходим в каталог с приложением и выполняем эту команду "java apm-0.7.1.jar" (Это только один из способов)
4) Включить отладку по USB на телефоне
5) Подключить телефон по USB кабелю к компьютеру

Собственно думаю этого достаточно для начала использования.

ЗЫ
Не судите строго люди, пожалей меня родня.
Все писали сами и с нуля :)

ЗЫЫ
Сейчас готовиться большое обновление для APM, в котором мы стараемся исправить недочеты о которых уже попросили люди. Но при этом приложением занимаемся в свободное время так что процесс хоть и движется, но медленно. С выходом новой версии мы хотим так же написать статью на habrahabr. Надеюсь у нас все получиться
сейчас идёт разработка в направлении поддержки системных тем, но они пока выглядят очень кривой.
Увы документации пока нет, и не предвидится. Отсутствие документации связано с тем что на нее нет времени, так как приложение разрабатывалось для личного пользования, то и документации с самого начала не предвиделось.

Для запуска приложения необходима Java 6+, а запуск можно произвести из командной строки(как пример: «java -jar apm-0.7.1.jar»). Плюс если у Вас стоит nix*, то вам нужно выставить права на запуск для файлов adb и aapt

Сам графический интерфейс приложения надеюсь будет понятен

ЗЫ
Еще раз приношу извинения за отсутствие документации. И мы уже начинаем задумываться о ее написании. Так же мы подумываем написать статью о приложении на habrahabr, но пока мы хотим привести приложение в более человечный вид и исправить уже известные проблемы.
Ну это идеальный вариант для нашего не идеального кода :)
Мы давно опубликовали проект, вот только не пиарили его.
Если будут пожелания пиши мне в личку или в виде issues на github, посмотрим что можно сделать ;)
Доброго времени суток,
у меня все не доходили руки(кармы не достаточно) написать статью на хабре о разработке, которую ведем я и мой товарищ. Она имеет название APM(android-packages-manager). Вот тут мы выложили исходники android-packages-manager, вот тут(mac/win/nix) можно скачать сразу архив, распаковать и пользоваться. По задумке даже не нужно устанавливать Android SDK. Хотя в настройках можно указать путь к более новым adb и aapt.

После написание этого приложения мы не представляем себе жизнь без него. Надеюсь оно поможет вам и многом другим.
Тут тяжело сравнивать, ведь использовалось два различных языка программирования причем на различных компьютерах. Так что время выполнения алгоритма еще не показатель. К тому замечу разработанный мной код не оптимален, по этому это тоже сказывается на скорости работы.
Не судите строго люди. Я тут быстро набросал код(на Python), который использует циклическую очередь. Код написан не самым оптимальным способом, но он работает.

Вот пример по времени выполнения моей программы:
Prepare data: 0:00:00.306268
Finish queue: 0:00:01.727277
Finish update image: 0:00:03.976633
Save image: 0:00:04.123483


from datetime import datetime
from PIL import Image, ImageDraw

class Queue:
    def __init__(self, size):
        self._queue = range(size)
        self._size = size
        self._left = 0
        self._right = 0

    def push(self, element):
        self._queue[self._right] = element
        self._right += 1

        if self._right + 1 == self._left:
            raise Exception('Small queue')

        if self._right >= self._size:
            self._right = 0


    def pop(self):
        element = self._queue[self._left]
        self._left += 1

        if self._left >= self._size:
            self._left = 0

        return element

    def run(self, func_next_step):
        while self._left != self._right:
            elements = func_next_step(self.pop())

            for element in elements:
                self.push(element)

if __name__ == '__main__':
    start = datetime.now()

    image = Image.open('source.png')
    draw = ImageDraw.Draw(image)
    pix = image.load()
    width = image.size[0]
    height = image.size[1]

    pixel = []
    for y in xrange(height):
        line = []
        for x in xrange(width):
            line.append(pix[x, y][0])
        pixel.append(line)

    move = (
        (0, 1, ),
        (1, 0, ),
        (0, -1, ),
        (-1, 0, ),
        )

    def recovery_path(item):
        element = item
        while element is not None:
            x = element[0]
            y = element[1]

            if pixel[x][y] == 3:
                break
            pixel[x][y] = 3

            element = element[2]

    def next_step(item):
        step = []

        for vector in move:
            x = item[0] + vector[0]
            y = item[1] + vector[1]

            if 0 <= x < width and 0 <= y < height:
                if pixel[x][y] == 255:
                    pixel[x][y] = 1
                    step.append((x, y, item))

            elif item[2] is not None:
                recovery_path(item)

        return step

    pixel[0][1] = 3

    queue = Queue(200)
    queue.push((1, 0, None))

    print "Prepare data : %s" % (datetime.now() - start)

    queue.run(next_step)
    print "Finish queue : %s" % (datetime.now() - start)

    for y in xrange(height):
        line = pixel[y]
        for x in xrange(width):
            type = line[x]
            color = pix[x, y][0]

            if type == 1:
                draw.point((x, y), (128, 128, 128))
            elif type == 2:
                draw.point((x, y), (0, 255, 255))
            elif type == 3:
                draw.point((x, y), (0, 255, 0))
            elif type == 0:
                draw.point((x, y), (0, 0, 0))
            else:
                draw.point((x, y), (255, 0, 0))

            if color == 0 and type != 0:
                draw.point((x, y), (255, 0, 0))

    print "Finish update image : %s" % (datetime.now() - start)

    image.save('answer.png')

    print "Save image : %s" % (datetime.now() - start)
Я бы добавил, что не только сложности в реализации каких то возможностей отпугивает пользователей/программистов/администраторов, а еще и то что нет единого сервера для всех. Если рассмотреть тот же скайп, то мы ставим одно приложение которое сейчас довольно популярно и не задумываемся о том какой же сервер подключить и на коком сервере сидят его знакомые и друзья.
Если вы опытный пользователь (хотя, иначе бы вы это не читали) и обнаружили, что в Opera 15 нет нужной вам функциональности, прежде всего взгляните на растущий список расширений.


Вот мне стало интересно а расширения будут совместимы с Chromium(Chrome) и наоборот?

Заглядывая на будущее мне кажется что Opera сделает ряд неплохих расширений которыми я бы хотел попользоваться, но при этом всем я больше предпочитаю Chromium. Да и обратный процесс тоже очень актуален так как сейчас под Chromium(Chrome) уже есть цела столовая вкусных плюшек, которые были бы полезны для Opera.
Не хочу ни кого обидеть, но RTFM. Ребята у вас есть под рукой такая простая и замечательная утилита и имеет она название adb. По личному опыту могу сказать нет такого приложения которое нельзя было бы скачать с приложения и для этого не надо иметь root доступа.
Конечно идея неординарная, но на мой взгляд эта гамеза не дотягивает даже до Alpha версии.
Где всеми любимые грибочки и цветочки, можно возвращать назад, нельзя садиться в трубу и конечно нет скрытых сундучков, этот факт меня вырубил окончательно.
Но не отрицаю люди поработали на славу, такое запихнуть в такой объем это надо потрудиться. Почет и уважение им. Как говориться ругать умеет каждый, а самому сделать не каждому дано. :)

Information

Rating
Does not participate
Registered
Activity