2017-8-9 遇到的一点小问题
.
今天拉卡拉那边发了新的SDK过来,和之前的全jar包不一样,换成了全aar包。
弄了个新的Module。将文件放到libs文件夹,然后在Module的build.gradle里引用。当然,repositories 一定要记得写上
repositories {
flatDir {
dirs 'libs'
}
}
不过这样还是会出错,提示:
Error:Failed toresolve:xxx;
。
因为我们是在新的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
里的icon
和label
也不删掉,一开始依赖库就出现一堆问题。
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的作用是替换指定属性的值。
清单文件合并完,又提示新的问题了。
原项目里V4包中的
SwipeRefreshLayout
和ViewPager
,有很多方法找不到。进去看了一下,发现对方不仅把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.device
和com.ta.utdid2
这两个包,很不巧,和支付宝官方冲突了。
网上找了下,好像也是友盟用到的。上友盟看了下文档,只在推送那边有看到。
2.1.9 那边写着可删除,赶紧和对方联系,让对方删除后重新打包过来。好了,等对方打包好再看看有没别的问题。