当前位置: 首页>移动开发>正文

android studio 混合 android studio merge

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两个文件夹配置版本必须一致。


https://www.xamrdz.com/mobile/43n1987424.html

相关文章: