GVKun编程网logo

android-重复条目:META-INF / myLibrary.kotlin_module(android 重复文件)

12

如果您对android-重复条目:META-INF/myLibrary.kotlin_module和android重复文件感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解android-重复条目

如果您对android-重复条目:META-INF / myLibrary.kotlin_moduleandroid 重复文件感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解android-重复条目:META-INF / myLibrary.kotlin_module的各种细节,并对android 重复文件进行深入的分析,此外还有关于android gradle: how to import a library module、Android Kotlin RXKotlin Room - 错误 Kotlin.unit、Android Library和Android APP、Java Library的区别、Android NDK Couldn''t load indLibrary的实用技巧。

本文目录一览:

android-重复条目:META-INF / myLibrary.kotlin_module(android 重复文件)

android-重复条目:META-INF / myLibrary.kotlin_module(android 重复文件)

更新到Android 3.0后,出现Kotlin错误:

Execution Failed for task ':myLibrary:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug'.
> java.lang.RuntimeException: java.util.zip.ZipException: duplicate entry: meta-inf/myLibrary.kotlin_module

这是我的库buid.gradle文件:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

...

dependencies {
    api "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}

这是我的项目build.gradle

ext.kotlin_version = '1.1.51'
repositories {
    jcenter()
    mavenCentral()
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

解决方法:

这太烦人了,但是运行Clean Project对我来说解决了这个问题.

android gradle: how to import a library module

android gradle: how to import a library module

Sometimes you finish an module and you want to reuse the code for other application, following steps may help!

1, Copy the module sources folder into the root of project you developing;

2, Follow this guide to config build.gradle file of your module: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-projects, ;

3, (Using idea intellij) File-> new-> module from existing sources, select the module folder you just copied-> click finish. If any errors reported, config build.gradle of the imported module to get rid of them.

4, Add module name to "settings.gradle" file which locates in project root. For example I want to import a moudle called "swipelistview":

include '':app'', '':swipelistview''.

5, Add depency to "build.gradle" file of the main module, like this:

dependencies {
    compile project('':swipelistview'')
}

6, rebuild your project!













Android Kotlin RXKotlin Room - 错误 Kotlin.unit

Android Kotlin RXKotlin Room - 错误 Kotlin.unit

如何解决Android Kotlin RXKotlin Room - 错误 Kotlin.unit?

我想通过循环数组向房间数据库做一个简单的插入数据。 我使用 RXKotlin 来迭代数组 我有一个这样的数组:

fun defaultDataCategory() : ArrayList<CategoryModel>{
        var cat: CategoryModel
        var catArrayList: ArrayList<CategoryModel> = ArrayList(0)
        val date: Int = Calendar.DATE
        val formatedDate = SimpleDateFormat("yyyy-MM-dd").format(Date())
        val formatedTime = SimpleDateFormat("HH:mm").format(Date())
        val DateTime = "$formatedDate  $formatedTime"

        catArrayList.add(
            CategoryModel(
                1,"Personal",true,"Red",Converter.toDate(Calendar.getInstance().timeInMillis),"system","system"
            )
        )

        catArrayList.add(
            CategoryModel(
                2,"Work","Blue","system"
            )
        )

        catArrayList.add(
            CategoryModel(
                3,"Home","Purple","system"
            )
        )

        catArrayList.add(
            CategoryModel(
                4,"Learn","Yellow","system"
            )
        )
       return catArrayList
    }

我像这样用 RXKotlin 循环了一个数组

var catArrayList: ArrayList<CategoryModel> = DefaultData.defaultDataCategory()

        catArrayList.toObservable()
            .subscribeBy(  // named arguments for lambda Subscribers
                onNext = { homeviewmodel.insertCategory(it) },onError = { Log.e("error insert=",it.printstacktrace().toString()) },onComplete = { Log.e("complete insert=","complete insert") }
            )

我得到了一个错误“kotlin.unit”。

Error RXKotlin

如何使用 RXKotlin 迭代数组并插入房间数据库?

解决方法

试试

Observable.fromIterable(catArrayList).subscribeBy {...}

Android Library和Android APP、Java Library的区别

Android Library和Android APP、Java Library的区别

Android Library和Android APP、Java Library的区别

  • Android Library在目录结构上与Android App相同,它能包含构建APP所需的一切(如源代码、资源文件、Android Manifest)。

  • Android App最终被编译打包成能在Android设备上运行的APK文件,但是Android Library被编译成供其它Android App依赖的Android Archive (AAR)文件。

  • Java Library最终被编译打包成Java Archive(JAR)文件,它不能打包Android资源文件,但是Android Library不仅能打包Java文件还能打包Android资源文件。

Android Library的使用场景

  • 当你需要向其它APP提供一个通用模块时。例如:你需要向其它APP提供通用的账户管理模块。

  • 当你需要构建不同的APK,但这些APK有共同核心功能时。例如:你的APP有免费版和付费版,但是它们有相同的核心功能。

在这两种情况下,只需将要重用的文件移动到Android Library中,然后将library添加为每个APP模块的依赖项,APP就能直接调用library中的功能,而不需要关心library的具体实现。

如何把App Module转换成Android Library Module

如果你的App Module的全部代码都可以重用,那么你可以把这个App Module转换成Android Library Module,步骤如下:

1、 打开App Module的build.gradle文件。

2、 删除applicationId这一行。只有App Module才需要定义applicationId。

3、 把文件顶部的 apply plugin: ''com.android.application'' 改为 apply plugin: ''com.android.library''

4、 保存文件,点击Tools > Android > Sync Project with Gradle Files。

这样就完成了App Module到Android Library Module的转换。 转换后Module的整个结构不变,但是它已经是一个Android Library Module了,编译后将生成AAR文件,而不是APK文件。

在Project面板中选中Library Module,然后点击Build > Build APK,就能编译生成对应的AAR文件到build>outputs>aar目录。

如何添加依赖Android Library

在其它App Module中使用Android Library中的代码的步骤如下:

方法一

添加编译生成的AAR文件到Project。

a、 点击File > New > New Module。

b、 点击Import .JAR/.AAR Package,然后点击Next。

c、 输入AAR文件的路径,然后点击Finish。

方法二

Import Android Library到Project(library的源代码就成了Project的一部分)。

a、 点击File > New > Import Module。

b、 输入library的目录地址,然后点击Finish。

这样library就被copy到Project,且你可以编辑library的代码。

如果你想只维护一份library的代码,那么应该使用方法一,而不应该使用方法二。

 

关于我

私人博客

微信公众号:infree6 或者直接扫码

Android NDK Couldn''t load indLibrary

Android NDK Couldn''t load indLibrary

前言:

    1. so加载失败的常规原因是so未放到正确路径, 一般新手会遇到。如果你是新手, 查看常规解决方式: http://blog.csdn.net/yy1300326388/article/details/46291417

    2. 本文适合已经Google多次, 且确定所有so路径正确, 但是还是报错没加载到so的无厘头bug情况. 本文所有内容均针对该情况进行描述. 其他情况就擅用搜索吧.

详细描述:

    如果你遇到的情况是[2], 可能就是你最新添加的依赖项目中可能包含多种架构支持, 比如"arm-v8", "armeabi",  "armeabi-v7a", "x86", "mips", 但是你的app中只有部分架构支持"armeabi";  如果你此刻运行在"arm-v8"的手机上肯定就报错了, 因为你的apk中其实有了"arm-v8"目录, 但是里面没有对应的so.  找到你的apk文件, 用apktool解包, 找到你的so目录, 就会发现有多个目录, 但是里面的so数目不一样, 有些目录缺少个别so. 

解决方法:

    在项目的build.gradle中指定需要兼容的架构, 代码如下:

        defaultConfig {
            ndk {
                abiFilters "armeabi", "armeabi-v7a", "x86"
            }
        }
    加了这个后再次编译成apk, 重新解包apk就会发现so的目录只有指定的这几个了


// 这个写的还是比较简单... - -

// 遇到的自然懂. 但是对于新手不那么明白. 好吧, 我不喜欢记录那些随便搜搜就有答案的那些方案的东西. 记录下来, 可能别人会遇到这样的情况, 方便搜到

今天关于android-重复条目:META-INF / myLibrary.kotlin_moduleandroid 重复文件的讲解已经结束,谢谢您的阅读,如果想了解更多关于android gradle: how to import a library module、Android Kotlin RXKotlin Room - 错误 Kotlin.unit、Android Library和Android APP、Java Library的区别、Android NDK Couldn''t load indLibrary的相关知识,请在本站搜索。

本文标签: