Ответы пользователя по тегу Android
  • Как из android-library модуля собрать jar с зависимостями?

    olegvarmy
    @olegvarmy Автор вопроса
    android developer
    Ну, собственно, сам и отвечу
    android.libraryVariants.all { variant ->
        tasks.create(name: "fatJar${variant.name.capitalize()}", type: Jar, dependsOn: assembleRelease) {
            doFirst {
                baseName = variant.name
                destinationDir = file('output')
                duplicatesStrategy = DuplicatesStrategy.EXCLUDE
                from zipTree(tasks.getByName("package${variant.name.capitalize()}Jar").outputs.files.singleFile)
                def closure = { file ->
                    if (file.name.endsWith('.aar')) {
                        println file.name
                        List<File> listJarFiles = zipTree(file).findAll { fileInAar ->
                            fileInAar.name.endsWith('.jar')
                        }
                        def listClassesFilesFromJars = listJarFiles.collect {
                            zipTree(it)
                        }
                        listClassesFilesFromJars
                    } else if (file.name.endsWith('.jar')) {
                        return zipTree(file)
                    }
                }
                from configurations.compile.files.collect(closure)
                from configurations.getByName("${variant.name}Compile").files.collect(closure)
    
            }
        }
    }

    добавляет таск с названием fatJar{variantName}
    каждый таск проходит по всем зависимостям compile и {variantName}Compile, собирает jar и aar- файлы (если файл aar - то из него достается classes.jar + джарники из libs) и все это упаковывается в файл с названием {variantName}.jar

    и второй скрипт, который делает то же самое, только не запаковывает все в fatJar, а собирает все библиотеки в одну директорию
    android.libraryVariants.all { variant ->
        tasks.create(name: "collectJars${variant.name.capitalize()}", type: Copy, dependsOn: assembleRelease) {
            delete file("output/outputJars${variant.name.capitalize()}")
            duplicatesStrategy = DuplicatesStrategy.EXCLUDE
            from tasks.getByName("package${variant.name.capitalize()}Jar").outputs.files.singleFile, {
                rename 'classes.jar', variant.name + "-" + project.version + ".jar"
            }
            def closure = { file ->
                if (file.name.endsWith('.aar')) {
                    println file.name
                    zipTree(file).findAll { fileInAar ->
                        fileInAar.name.endsWith('.jar')
                    }.each { f ->
                        if(f.name == "classes.jar") {
                            from f, {
                                println f.name
                                rename "classes", file.name.substring(0, file.name.lastIndexOf("."))
                            }
                        } else {
                            from f
                        }
    
                    }
                } else if (file.name.endsWith('.jar')) {
                    from file
                }
            }
            configurations.compile.files.collect(closure)
            configurations.getByName("${variant.name}Compile").files.collect(closure)
            into 'output/outputJars' + variant.name.capitalize()
        }
    }
    Ответ написан
    Комментировать
  • Как увеличить скорость компиляции Gradle проекта (Android)?

    olegvarmy
    @olegvarmy
    android developer
    попробуй выполнить сборку с --offline. Это скорее всего происходит из-за того что при каждой сборке gradle начинает резолвить зависимости.
    Ответ написан
    1 комментарий
  • Можно ли продолжать отправлять Android Id?

    olegvarmy
    @olegvarmy Автор вопроса
    android developer
    нашел такую инфу от Mopub
    We strongly recommend compiling your app against the Google Play Services Library in order to use the Android Advertising ID instead of the device ID, as required by Google. Failing to correctly use the Android Advertising ID may result in your submission to the Play Store being rejected.

    https://github.com/mopub/mopub-android-sdk/wiki/Ge...
    Ответ написан
    Комментировать
  • Как реализовать в android обновление item в listview?

    olegvarmy
    @olegvarmy
    android developer
    Используй startActivityForResult(), оставляй комментарий, упаковывай в интент все что тебе нужно, выставляй этот интент методом setResult(), закрывай активити, в onActivityResult() фрагмента принимай тот интент, который отправил и обновляй item listView, который был кликнут.
    Ответ написан
    Комментировать
  • Где получить теорию по работе с данными из интернета в Android?

    olegvarmy
    @olegvarmy
    android developer
    Почитай, возможно поможет
    habrahabr.ru/company/mailru/blog/185696
    Ответ написан
    Комментировать