美文网首页
使用Android Studio 在Module里 添加aar文

使用Android Studio 在Module里 添加aar文

作者: 苍蝇的梦 | 来源:发表于2017-08-09 14:54 被阅读247次

    2017-8-9 遇到的一点小问题

    .

    今天拉卡拉那边发了新的SDK过来,和之前的全jar包不一样,换成了全aar包。

    拉卡拉的libs
    弄了个新的Module。将文件放到libs文件夹,然后在Modulebuild.gradle里引用。当然,repositories 一定要记得写上
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    
    使用拉卡拉的libs
    不过这样还是会出错,提示:Error:Failed toresolve:xxx;
    使用拉卡拉libs出错.png
    因为我们是在新的Module里使用的,还必须到主Module的build.gradle里写上repositories。因为oliveapp Module里有个库是在maven,所以还要加上地址maven { url 'https://maven.fabric.io/public' },当然在那个Module的build.gradle里也要写上。这样就没问题了。
    repositories {
        maven { url 'https://maven.fabric.io/public' }
        flatDir {
            dirs '../oliveapp/libs', 'libs'
            dirs '../lakala/libs', 'libs'
        }
    }
    
    .

    依赖aar没问题了,现在开始吐槽拉卡拉
    作为库,AndroidManifest.xml里的iconlabel 也不删掉,一开始依赖库就出现一堆问题。

    Error:10:30:36.897 [ERROR] [org.gradle.api.Project] D:\rrg\RrgL\app\src\main\AndroidManifest.xml:156:9-36 Error:
        Attribute application@icon value=(@mipmap/icon) from AndroidManifest.xml:156:9-36
        is also present at [:Cashier-release:] AndroidManifest.xml:40:9-45 value=(@drawable/lakala_logo).
        Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:153:5-1455:19 to override.
    10:30:36.913 [ERROR] [org.gradle.api.Project] D:\rrg\RrgL\app\src\main\AndroidManifest.xml:157:9-41 Error:
        Attribute application@label value=(@string/app_name) from AndroidManifest.xml:157:9-41
        is also present at [:Cashier-release:] AndroidManifest.xml:41:9-31 value=(收款宝企业版).
        Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:153:5-1455:19 to override.
    10:30:36.913 [ERROR] [org.gradle.api.Project] D:\rrg\RrgL\app\src\main\AndroidManifest.xml:159:9-41 Error:
        Attribute application@theme value=(@style/ColorGrey) from AndroidManifest.xml:159:9-41
        is also present at [:Cashier-release:] AndroidManifest.xml:42:9-62 value=(@android:style/Theme.Light.NoTitleBar).
        Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:153:5-1455:19 to override.
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':app:processHuasDebugManifest'.
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Manifest merger failed with multiple errors, see logs
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
    10:30:36.913 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace.
    

    只好在主要的AndroidManifest.xml里的application标签里加上tools:replace="android:icon"tools:replace="android:label",不过只能存在一个tools:replace="",多写会报错Duplicate attribute replace。把所有属性写一行,中间试着用|分隔,也会报错Error:android:allowBackup|android:theme, but no new value specified网上找一下,才知道要用,分隔。整句就是这样tools:replace="android:allowBackup,android:icon,android:label,android:theme"。至于在manifest标签里加上xmlns:tools="http://schemas.android.com/tools",这个会自动提示的,没必要在意。
    刷新,又出错了。

    Error:10:49:49.644 [ERROR] [org.gradle.api.Project] D:\rrg\RrgL\app\src\main\AndroidManifest.xml:335:13-43 Error:
        Attribute meta-data#UMENG_APPKEY@value value=(123456789) from AndroidManifest.xml:335:13-43
        is also present at [:kaola-release:] AndroidManifest.xml:55:13-53 value=(987654321).
        Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:333:9-335:45 to override.
    10:49:49.644 [ERROR] [org.gradle.api.Project] D:\rrg\RrgL\app\src\main\AndroidManifest.xml:339:13-51 Error:
        Attribute meta-data#UMENG_CHANNEL@value value=(huas) from AndroidManifest.xml:339:13-51
        is also present at [:kaola-release:] AndroidManifest.xml:58:13-33 value=(1000).
        Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:337:9-339:53 to override.
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':app:processHuasDebugManifest'.
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Manifest merger failed with multiple errors, see logs
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
    10:49:49.659 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. 
    

    原来他们给的Module里面也用了友盟统计,没办法只好又在友盟相关参数里写上tools:replace="android:value"。这样就可以了。

    友盟属性冲突
    四木给的图,tools:replace的作用是替换指定属性的值。 合并清单文件0 合并清单文件
    清单文件合并完,又提示新的问题了。
    原项目里V4包中的SwipeRefreshLayoutViewPager,有很多方法找不到。进去看了一下,发现对方不仅把V4包版本低得令人发指,还给混淆了。。。
    V4包存在不少问题
    系统的V4
    拉卡拉的V4
    没办法,只能和对方联系,重新打个不含V4包的SDK。这东西使用太多,很容易版本不一致,最后让SDK使用者来自己引用。
    现在只能等对方发新包,再去找问题了,先记录一下。
    2017-8-10更新

    拉卡拉给的新包没有V4的问题了,不过人脸认证系统又和我们的版本冲突了。先解决这个再看看。
    解决了,能正常运行了。

    .

    运行看了一下没问题,开始打包了。首先是友盟jar包冲突。我项目用的compile 'com.umeng.analytics:analytics:latest.integration'默认下载的最新版,他们是umeng-analytics-v6.0.4.jar。好吧,小问题,我改,把我的友盟依赖删了。
    我这边也有用友盟,打包时清单文件一合并,感觉对方也收不到数据,实在不懂还放这个干吗。
    又继续打包,这次提示:

    Warning:The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.
    Warning:Exception while processing task java.io.IOException: Can't write [D:\rrg\RrgL\app\build\intermediates\transforms\proguard\rrgl\release\jars\3\1f\main.jar] (Can't read [C:\Users\Dream\.android\build-cache\b6e1c466130cc6f2b1b40cab242e0b5ba2a02284\output\jars\libs\utdid4all-1.0.4.jar(;;;;;;**.class)] (Duplicate zip entry [utdid4all-1.0.4.jar:com/ta/utdid2/device/UTDevice.class]))
    Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRrglRelease'.
    > Job failed, see logs for details
    

    找了会,原来对方还有个utdid4all-1.0.4.jar的jar包,里面是com.ut.devicecom.ta.utdid2这两个包,很不巧,和支付宝官方冲突了。

    支付宝jar
    网上找了下,好像也是友盟用到的。上友盟看了下文档,只在推送那边有看到
    友盟文档
    2.1.9 那边写着可删除,赶紧和对方联系,让对方删除后重新打包过来。好了,等对方打包好再看看有没别的问题。

    相关文章

      网友评论

          本文标题:使用Android Studio 在Module里 添加aar文

          本文链接:https://www.haomeiwen.com/subject/buefrxtx.html