使用Android Studio 在Module里 添加aar文件,,,,拉卡拉的SDK真麻烦,,,

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  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  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  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  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  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文件,,,,拉卡拉的SDK真麻烦,,,)