Android Studio 2.X | Android Studio 3.X |
A引用B,B引用C,A不引用C | implementation |
compile | api |
provided | compileOnly |
apk | runtimeOnly |
debugCompile | debugImplementation |
releaseCompile | releaseImplementation |
1.*Manifest merger failed with multiple errors, see logs
AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的Android:icon和android:theme),则此时会合并失败,并报上面的错误。两种解决方法:
1在AndroidManifest.xml的<manifest根标签上加入xmlns:tools="http://schemas.android.com/tools"否则会找不到namespace
并将<application标签下添加tools:replace="android:icon, android:theme"(多个属性用,隔开)
2打开资源文件AndroidManifest.xml->点击下面的Merged Manifest->找出具体报错信息链接修改即可
*DexArchiveMergerException: Unable to merge dex
2.Process unexpectedly exit. org.gradle.internal.UncheckedException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2InternalException: AAPT2 aapt2-3.3.3-6197926-windows Daemon #0: Daemon startup failed
classpath 'com.android.tools.build:gradle:3.0.0'//第一步build.gradle插件降低版本到3.0.0
#第二步gradle.properties设置不使用aapt2
android.enbaleAapt2=false
AS启动APP异常解决办法:
1)ADB已经停止
启动任务管理器->
进程->关闭相关端口占用程序 如:豌豆荚、360等
2)当前用户的.gradle文件夹下:C:\Users\Administrator\.gradle 设置gradle.properties,若无就新增文件,添加配置信息:org.gradle.jvmargs=-Xmx512m
如果还是不行,有可能是同时开了eclipse和AS,关闭eclipse和模拟器并用真机试一下就可以了。
3.Information:Gradle tasks [:app:assembleDebug] Error:
Execution failed for task ':app:transformClassesWithJarMergingForDebug'
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'C:\Program Files (x86)\Java\jdk1.7.0_13\bin\java.exe''finished withnon-zero exit value 2
方法
defaultConfig {
multiDexEnabled true //忽略方法数重复引用?
targetSdkVersion 21 //版本太低?
minSdkVersion 15//exit value 1版本太低?
}
> com.android.build.api.transform.TransformException: java.util.zip.ZipException:
duplicate entry: android/support/annotation/IntegerRes.class
上面为support-v4重复,方法compile 'com.android.support:support-v4:23.0.0' 改为provided 'com.android.support:support-v4:23.0.0'
使用provided必须删除compile fileTree(include: ['*.jar'], dir: 'libs')
>Error: File path too long on Windows, keep below 240 characters :图片路径过长放在D盘等短路径或者相关错误:
android {
compileSdkVersion 23
aaptOptions.cruncherEnabled = false//取消图片限制
aaptOptions.useNewCruncherfalse;//取消图片限制
}
4.java.lang.NoClassDefFoundError:xxx
方法:超过6万方法数,将工程中的Application类让它继承android.support.multidex.MultiDexApplication或者复写Application的attachBaseContext方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
5.java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.example.xxx-1/lib/arm/libxxx.so: has text relocations
方法:将libxxx.so文件targetSdkVersion版本降低,还是报错的话,建议继续降低版本或者尝试将主工程与库工程so文件夹类型改为一致(armeabi…)
6.Cannot locate factory for objects
> No slave process to process jobs, aborting
解决方法:重启AS
7.Duplicate files copied
> Duplicate files copied in APK assets/uzmap/module.json
File1: C:\Users\Administrator\Desktop\hjjc\app_hjjc\app\build\intermediates\res\resources-debug.ap_
File2: C:\Users\Administrator\Desktop\hjjc\app_hjjc\app\build\intermediates\transforms\mergeJavaRes\debug\jarsf\main.jar
方法:
android {
packagingOptions{
exclude 'assets/uzmap/module.json'
}
}
gradle中途突然死机也会导致module不识别,删除工程的build文件夹重新run即可!!!
8.AS项目module改成library库
1 在该build.gradle 将apply plugin: 'com.android.application'改为apply plugin: 'com.android.library' 类型,然后删除android=>defaultConfig下的applicationId "com.xxx.xxx"
2 在该AndroidManifest.xml 删除库启动图标 和 启动意图(android.intent.action.MAIN android.intent.category.LAUNCHER)
<application
android:name=".MainApplication" //继承库项目文件
android:icon="@drawable/ic_launcher" //删掉库的方形图标
android:roundIcon="@mipmap/ic_launcher_round" //删掉库的圆形图标
android:label="@string/app_name">
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> //删掉库的启动意图
<category android:name="android.intent.category.LAUNCHER" /> //删掉库的启动意图
</intent-filter>
</activity>
</application>
3 错误:需要常量表达式 ——将swich语句改为if语句
4 >Error:Resource shrinker cannot be used for libraries 原因是lib中使用了混淆,可移除无用的资源文件:
release{
//shrinkResources true
//minifyEnabled true
}
5 > Android dependency 'com.android.support:support-v4' has different version for the compile (22.2.1) and runtime (26.0.0) classpath. You should manually set the same version via DependencyResolution重复库在根项目Project的build.gradle配置
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.0.0"
}
}
}
}
9.Android Studio utf-8编码设置 乱码
1)设置整个项目编码:菜单栏中的“File”->“Setting”,进入设置面板,选择“Editor” ->“File Encodings”:
将IDE Encoding”设为“UTF-8”,“Project Encoding”设为“UTF-8”,最下面的“Default encoding for properties files”也更改为“UTF-8”后面的复选框上打上对勾。
2)设置单个文件编码:在当前文件窗口点击右下角“UTF-8”或“GBK”编码字样,选择编码格式,弹窗后点击“Reload”按钮。
更多:Android studio打开闪退、打不开、卡死问题,新建配置文件\android-studio\bin\studio.exe.vmoptions 或Help->Edit Custom VM Options,或工程目录的.gradle gradle两个文件夹配置版本必须一致。