我刚刚将Android Studio更新为3.5。
BTW更新了Gradle版本和几个库。
令我惊讶的是,该应用程序无法放入单个DEX中(使用了超过73,500种方法,据我所知,以前使用的是调试版本)〜p>
我做了哪些更改:
Kotlin 1.3.41 -> 1.3.50
classpath 'com.android.tools.build:gradle:3.5.0' from 3.4.2
classpath 'com.google.gms:google-services:4.3.1' from 4.3.0
implementation 'com.google.android.gms:play-services-ads:18.1.1' from 18.1.0
implementation 'com.google.firebase:firebase-core:17.1.0' from 17.0.1
新发布的APK的方法(60760种)(26760)少于前一种。
我遇到的其他问题: NDK分辨率结果:项目设置:Gradle模型版本= 5.4.1,NDK版本为未知错误
使用AndroidX的应用。
应用正在编译并且可以正常工作
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
我从旧版Android Studio导入了设置。也许这是问题所在? 还是没有问题,我必须调和并使用multiDEX(用于开发),并在发布apk时删除multiDEX?对于调试版本,multidex会比minifyEnabled更好吗?
已更改:
debug {
// minifyEnabled true
// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
multiDexEnabled true
}
当我使用APK> = 21运行模拟器时,并且正在使用multiDex。 之前的21 API将仅使用发行版APK进行测试。
BTW APK分析我的调试版本显示: classes.dex 54806方法 classes2.dex 1107方法 classes3.dex 6725方法
总计:62638。
当我禁用multiDex时。 无法将请求的类放入单个dex文件中(#方法:73883> 65536);))
有些不对劲;)
答案 0 :(得分:1)
全局设置multiDexEnabled true
或为两种构建类型设置multiDexEnabled true
,否则发行版本将超过单个DEX文件的64k限制。调试和发布版本的方法数量可能不同,因为这是两个合并的源集-并且未使用的类也可能会被剥离(minifyEnabled true
还添加了它自己的库)。尽管# Create some data
import numpy as np
x, y = np.mgrid[-10:10:200j, -10:10:200j]
z = 100 * np.sin(x * y) / (x * y)
# Visualize it with mlab.surf
from mayavi import mlab
mlab.figure(bgcolor=(1, 1, 1))
surf = mlab.surf(z, colormap='cool')
# Retrieve the LUT of the surf object.
lut = surf.module_manager.scalar_lut_manager.lut.table.to_array()
# The lut is a 255x4 array, with the columns representing RGBA
# (red, green, blue, alpha) coded with integers going from 0 to 255.
# We modify the alpha channel to add a transparency gradient
lut[:] = 255/2 # all grey
# red
lut[-1,0] = 255
lut[-1,1] = 0
lut[-1,2] = 0
lut[:, -1] = 255 # 100% translucency
# and finally we put this LUT back in the surface object. We could have
# added any 255*4 array rather than modifying an existing LUT.
surf.module_manager.scalar_lut_manager.lut.table = lut
# We need to force update of the figure now that we have changed the LUT.
mlab.draw()
mlab.view(40, 85)
用于调试版本是没有用的……而且我真的不明白为什么有人打算这样做。当APK中的非公开类/方法名称与IDE中的那些类名称不匹配时,可能会发现调试起来很困难,因为断点将无法捕获。就像是朝腿开枪一样。
如果单个库更新引入了新的依赖关系,则可能会添加许多类和方法。