Задать вопрос
  • Error msb6006 cmd.exe 9009? сказано что "..\" не является внутренней командой?

    @AleksandrFl Автор вопроса
    1. надо добавить path переменную окружения C:/Windows/SysWOW64
    2. в свойствах проекта 5f7c8140a0db7595310330.jpeg
    3. убрать из файла .vcxproj "..\"
    4. запустить сборку в порядке построения проектов
    5. если не получилось, то несколько раз попробовать собрать зависящие проекты друг от друга по одному.
    у меня так пропала ошибка сборки
    Ответ написан
    Комментировать
  • Как собрать проект для visual studio CMake c использованием SQLite?

    @AleksandrFl Автор вопроса
    https://www.sqlite.org/download.html#amalgtarball
    скачать от сюда sqlite-autoconf-3330000.tar.gz
    запустить
    x64 Native Tools Command Prompt for VS 2019
    cd C:/sql
    C:\sql>nmake /f Makefile.msc

    по аналогии build tiff
    nmake /f Makefile.vc
    но это не работает для visual studio
    https://progi.pro/kak-skompilirovat-curl-s-openssl...
    build curl
    открыть скачанный проект в Visual Studio (файл- открыть CMake)
    5f78776f30803609642466.jpeg
    в настройках CMake прописать путь до ninja и файлов: EXE_SQLITE3, SQLITE_LIBRARY (.lib), SQLite3 include dir
    сохранить json

    Это не работает
    Как подключить SQLite3 в проект CMake?
    Пробую так:
    установил CMake, скачал проект с github.com
    для проекта нужен sqlite3
    скачиваем 1 архив https://sqlite.org/sqlite-shell-win32-x86-3071300.zip
    и второй архив для x64 https://www.sqlite.org/2020/sqlite-dll-win64-x64-3...
    разархивируем все это в папку C:/sql2
    теперь переходим в терминал visual studio
    и запускаем команду:
    lib /MACHINE:X64 /DEF:"C:\sql2\sqlite3.def" /OUT:"C:\sql2\sqlite3.lib"

    5f7b33b7844d3600439683.jpeg
    должен появиться файл .lib
    скачиваем 3 архив: https://www.sqlite.org/2020/sqlite-amalgamation-33...
    и распаковываем содержимое в С:/sql2
    теперь надо пуск / параметры
    в поиске "переменные среды"
    5f7b373db8dcc025926597.jpeg
    5f7b380e21e1a854761990.jpeg
    добавляем как на картинке и проверяем в cmd
    5f7b38a1a34a3215130708.jpeg
    теперь запускаем Git Bash
    5f7b357ec3b79353331302.jpeg
    переходим в каталог скачанного проекта, создаем там папку build и переходим в нее
    запускаем команду:
    cmake -DSQLITE3_INCLUDE_DIR=C:/sql2 -DSQLITE3_LIBRARY=C:/sql2/sqlite3.lib -DEXE_SQLITE3=C:/sql2/sqlite3.exe ..

    для tiff и curl:
    cmake -DSQLITE3_INCLUDE_DIR=C:/sql2 -DSQLITE3_LIBRARY=C:/sql2/sqlite3.lib -DEXE_SQLITE3=C:/sql2/sqlite3.exe -DCURL_INCLUDE_DIR=C:/curl/include -DCURL_LIBRARY=C:/curl/include/curl/libcurl-x64.dll -DTIFF_INCLUDE_DIR=C:/tiff2/libtiff -DTIFF_LIBRARY_RELEASE=C:/tiff2/libtiff/libtiff.lib ..

    для curl необходимо скинуть все из папок в папку include/curl и два файла libcrypto, libssl версии 1.4 скинуть в папку include.
    c в этом посту можно найти как установить openssl https://stackoverrun.com/ru/q/12876670
    скомпилировать curl https://github.com/curl/curl

    здесь все пути связанные с sqlite идут в папку sql2
    SQLITE3_INCLUDE_DIR - файлы .h, .c
    SQLITE3_LIBRARY - файл .lib
    EXE_SQLITE3 - скачанный exe

    произойдет сборка в папку build и можно проект запустить в visual studio

    Вот уже скомпилированные файлы библиотек, но лучше скомпилировать самому
    скомпилированные файлы
    Ответ написан
    Комментировать
  • Как собрать android проект с помощью NDK? есть файлы .mk и библиотеки?

    @AleksandrFl Автор вопроса
    Создать папку jni:
    app/scr/main/jni
    в нее поместить файлы библиотек и файлы mk
    в androidmanifest добавить следующее
    sourceSets.main {
            jni.srcDirs = [] // ndk-build.cmd needs to be invoke from cmd
            jniLibs.srcDir 'src/main/libs'
        }

    см. видео https://www.youtube.com/watch?v=kFtxo7rr2HQ
    установить jdk 8 с сайта oracle
    перейти в настройки студии File/Over Settings/Default Project Structure
    и указать папку с установленным jdk
    C:\Program Files (x86)\Java\jdk1.8.0_261
    команды в терминале для запуска сборки:
    cd C:\Users\user\AndroidStudioProjects\MyApplication5\app\src\main
    C:\Users\user\AppData\Local\Android\Sdk\ndk\21.3.6528147\build\ndk-build.cmd
    Ответ написан
    Комментировать
  • Android NDK: WARNING: APP_PLATFORM android-16 is higher than android:minSdkVersion 1?

    @AleksandrFl Автор вопроса
    файл applikation.mk - добавить
    APP_PLATFORM := android-16
    В AndroidManifest.xml
    добавляем следующее:
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28"/>
    Ответ написан
    Комментировать
  • Как сделать локальную базу данных для android studio и сразу заполнить ее данными из csv или xml?

    @AleksandrFl Автор вопроса
    Установить Python, PyCharm (триал версию). создать там проект, перекинуть туда этот файл:
    href=https://yadi.sk/d/A6_iVd1QY5HdRA
    выставить кодировку
    5f64dcd9845d9500511561.jpeg
    затем, во вкладке Database создать базу данных SQlite (или открыть файл .db другой базы данных), правой кнопкой мыши импортировать файл csv, который уже в кодировке и сделать, как на изображении ниже
    5f64de034da78760910338.jpeg
    и все, заполненная база данных готова,
    5f64dedd0de56460393107.jpeg
    обязательно прописываем id (создаем поле в каждой таблице) с autoincrement и Primary Key (PK)
    так же можно сделать связи (автоматически создаст таблицу)
    пример связывания таблицы один ко многим.
    1. создаем таблицу phone_test, прописываем id (autoincrement, PK)
    5f64dffcddaca577178729.jpeg
    2. переходим в первую таблицу и модифицируем колонку home_telephone
    должно получиться так:
    5f64e0db8b837598285187.jpeg
    все, две таблицы связаны, во вкладке консоль прописываем тестовый запрос
    5f64e1768dcce565953036.jpeg
    пример запроса Foreign Key Один ко многим
    SELECT pt.id, pt.phone, pt.column_2 FROM TemplateImportEmpl LEFT JOIN phone_test pt on pt.id = TemplateImportEmpl.home_telephone

    видим результат
    5f64e211e7cd2954844133.jpeg

    Если надо сделать из сложного XML файла таблицу CSV для любой базы данных.
    допустим есть такой XML файл и надо сделать таблицу CSV
    <?xml version="1.0" encoding="UTF-8"?>
    <services>
        <strategy odn="149" name="kv" date="2020-11-18">
            <post>eVoting Booth</post>
            <inf>
                <tag id="10" er="er1"/>
                <tag id="14" er="er1"/>
                <tag id="11" er="er2"/>
                <tag id="12" er="er3"/>
                <tag id="13" er="er4"/>
            </inf>
        </strategy>
        <strategy odn="150" name="vk" >
            <post>Library</post>
            <inf>
                <tag id="10" er="er1"/>
                <tag id="13" er="er4"/>
            </inf>
        </strategy>
    </services>


    вот код для создания таблицы с вытаскиванием тегов и заполнением пропусков в XML
    from lxml import etree
    
    import pandas as pd
    
    
    trree = etree.parse("input_file.xml")
    
    table = trree.xpath('/services/strategy/inf/tag')
    tableoutput = []
    for i in table:
        ig = i.xpath('./@er') #доступ к тегам и распечатка тегов, доступ к post
        tableoutput+= ig
    print("поля в будущей таблице: ", set(tableoutput), "сменить таблицу (экс)")
    
    id = []
    counttag = 0
    minsec = []
    minseccel = []
    counter1musttwo = []
    tagnull = []
    identifie = trree.xpath('/services/strategy/inf')
    for c in identifie:
        counttag +=1
        ct = c.xpath('./tag')
        print ("количество тегов в",counttag, "inf: ", len(ct))
        if (len(ct) == 0):
            tagnull += "TAG = 0; inf №", counttag
            print("найден inf с Количеством тегов = 0")
        for c1 in ct:
            ct1 = c1.xpath('./@er')
            ct2 = c1.xpath('./@id')
            print("распечатываем er: ", ct1)
            if (ct1 == ['er1']):
                id += ct2
            minsec += ct1
            minseccel += ct1
        print("кол-во er1 в",counttag, "inf: ", minsec.count("er1"))
        if (minsec.count("er1") >= 2):
            counter1musttwo += "er1 > 2; inf №",counttag, "; кол-во er1", minsec.count("er1")
            print("найден inf с er1 больше 2")
        print("   \n ")
        minsec = []
    
    identifie = trree.xpath('/services/strategy')
    for re in identifie:
        reos = re.xpath('./post/text()')
        print("доступ к post", reos)
    #выше мы подсчитали все элементы tag
    #делаем пример таблицы csv если каких то полей не хватает поле дата не постоянно
    print("\n")
    strategy = trree.xpath('/services/strategy')
    squares = []
    for rv in strategy:
        noner = rv.xpath('./@date')
    
        if (noner == []):
            noner = ['not found']
        squares += noner
    print(squares)
    postoutput = []
    for re in strategy:
        reos = re.xpath('./post/text()')
        if (reos == []):
            reos = ['not found']
        postoutput+= reos
    print(postoutput)
    
    id = trree.xpath('/services/strategy/@odn')
    name = trree.xpath('/services/strategy/@name')
    
    df = pd.DataFrame({
        "Id": id,
        "Name": name,
        "Data": squares,
        "Post": postoutput
    })
    
    df.to_csv("out.csv", sep="|", index=None)
    #файл готов


    в консоле:
    5f64f695eaca5139083672.jpeg
    Ответ написан
  • Стоит ли использовать паттерн MVP в Android разработке?

    @AleksandrFl
    ниже простой рабочий пример приложения c библиотекой viewPager2 + mvp moxy
    href=https://yadi.sk/d/LhmZqokWi0uaQQ?w=1
    @InjectPresenter
        lateinit var mainPresenter: MainPresenter
    
        @ProvidePresenter
        internal fun provideSettingsPresenter(): MainPresenter {
            return MainPresenter()
        }

    override fun showDialog() {
            //TODO("Not yet implemented")
            Toast.makeText(this, "sdfgvsdfgv", Toast.LENGTH_LONG)
            alertDialog = AlertDialog.Builder(this)
                .setTitle("Title")
                .setMessage("Message")
                .setOnDismissListener { mainPresenter.onHideDialog() }
                .show()
        }
    Ответ написан
    Комментировать
  • Какие распределенные базы данных существуют для приложений на Android?

    @AleksandrFl
    локальную базу данных можно сделать с помощью библиотеки Room (удобней Sqlite) и Dagger. Ниже простой рабочий
    href="https://yadi.sk/d/9Y7JeDhSHNODTQ?w=1"
    пример приложения Room- локальная база данных, Dagger - подключить любой класс
    package com.example.myapplicationroom.data.db.dbInstance
    
    import android.content.Context
    import androidx.room.Database
    import androidx.room.Room
    import androidx.room.RoomDatabase
    import com.example.myapplicationroom.data.db.dao.EmployeeDao
    import com.example.myapplicationroom.data.db.entity.Employee
    
    @Database(
        entities = [
            Employee::class],
        version = 1
    )
    abstract class LocalDatabase: RoomDatabase() {
        abstract fun getEmployeeDao(): EmployeeDao
    
    
    
    
    
        companion object {
            @Volatile
            private var INSTANCE: LocalDatabase? = null
    
            fun getDatabase(context: Context): LocalDatabase {
                val tempInstance = INSTANCE
                if (tempInstance != null) {
                    return tempInstance
                }
                synchronized(this) {
                    val instance = Room.databaseBuilder(
                        context.applicationContext,
                        LocalDatabase::class.java,
                        "NoteDatabase"
                    ).fallbackToDestructiveMigration().build()
                    // ^^^ Без миграции ^^^
    
                    INSTANCE = instance
                    return instance
                }
            }
        }
    }
    Ответ написан
    Комментировать
  • Room, kotlin, androidx. A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution как исправить ошибку?

    @AleksandrFl Автор вопроса
    apply plugin: 'kotlin-kapt'
    //room
    implementation 'androidx.room:room-runtime:2.2.5'
    kapt 'androidx.room:room-compiler:2.2.5'
    implementation 'androidx.room:room-ktx:2.2.5'
    Ответ написан
    Комментировать
  • Cannot access 'android.support.v7.app.AppCompatActivity' Check your module classpath for missing or conflicting dependencies?

    @AleksandrFl Автор вопроса
    apply plugin: 'kotlin-kapt'
    //moxyX
    implementation 'tech.schoolhelper:moxy-x:1.7.0'
    kapt 'tech.schoolhelper:moxy-x-compiler:1.7.0'
    implementation 'tech.schoolhelper:moxy-x-androidx:1.7.0'

    все работает
    Ответ написан
    Комментировать
  • Android Studio project from GitHub: import or download?

    @AleksandrFl
    в терминале
    cd c://path переход в каталог, который нужно перенести на github
    git remote set-url origin git@github.com:Sasha/repository.git назначаем репозиторий
    git init 
    git add .
    git commit -m "Init" коммитим
    git pull origin master --allow-unrelated-histories проверяем на соответствие
    git push origin master отправляем папку

    для android studio
    чтобы отправить проект на git
    нужно настроить ssh
    ssh-keygen -t rsa -b 4096 -C "fl@gmail.com"
    eval $(ssh-agent -s)
    clip < ~/.ssh/id_rsa.pub
    add ssh to github
    C:\Users\Rumb\.ssh PASSWORD

    и прописать код SSH в настройках GitHub
    ~/.ssh/id_rsa.pub код тут
    необходимо перекинуть как на изображении ниже всю папку в DefaultChangeList5f4d4dc9e6f5c162537158.jpeg
    и сделать commit
    затем 5f4d4e2f24601451842289.jpeg
    Ответ написан
    Комментировать