Giter Club home page Giter Club logo

fat-aar-plugin's Introduction

Deprecated

This repo is Deprecated. As the version of android gradle plugin keep increasing, I don't have enough time to keep supporting. And it stopped at 0.2.8, which supports android plugin at 2.2.3 and prior.

fat-aar-plugin

Download

This is a gradle plugin that helps to output fat aar from android library. I am inspired by android-fat-aar. And aim to make more flexible and functional. It's convenient to sdk developer(developer that provide a single aar library).

It works with the android gradle plugin, the android plugin's version of the development is 2.2.3, other revision is not tested actually. Commit an issue as you encounter some compatibility.

Update: Android plugin version 2.3.0 and later, is not well supported. disable build-cache may do the trick. So the recommend version is 2.2.3 and prior. Look this issue for more.

Essentially, fat-aar-plugin makes a hack way, to collect resources, jar files and something others in embedded dependencies, into the bundled output aar. Click here to know more about AAR.

[Features]

  • Support embed android library project, java project, android library and java library from maven repositories. Local jar file is not needed to use embed, compile is enough.
  • Work fine with the original features provided by android plugin. Such as multi build type, product flavor, manifest placeholder, proguard... If you find something wrong, commit an issue.
  • The jar files in embedded dependencies will be bundled into libs\ in aar when the proguard is off. Otherwise , they will be bundled into classes.jar in aar, it means classes in dependencies will also be obfuscated.

Getting Started

Step 1: Apply plugin

Add snippet below to your root build script file:

buildscript {
    repositories {
        maven {
            url  "http://dl.bintray.com/vigidroid/maven"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:xxx'
        classpath 'me.vigi:fat-aar-plugin:0.2.8'
    }
}

Add snippet below to the build.gradle of your android library:

apply plugin: 'me.vigi.fat-aar'

Step 2: Embed dependencies

change compile to embed while you want to embed the dependency in the library. Like this:

dependencies {
    // aar project
    embed project(':aar-lib')
    // java project
    embed project(':java-lib')
    // java dependency
    embed 'com.google.guava:guava:20.0'
    // aar dependency
    embed 'com.android.volley:volley:1.0.0'
  
    // other dependencies you don't want to embed in
    compile 'com.squareup.okhttp3:okhttp:3.6.0'
}

More usage see example.

About AAR File

AAR is a file format for android library. The file itself is a zip file that containing useful stuff in android. See anatomy of an aar file here.

support list for now:

  • manifest merge
  • classes jar and external jars merge
  • res merge
  • R.txt merge
  • assets merge
  • jni libs merge
  • proguard.txt merge
  • lint.jar merge
  • aidl merge?
  • public.txt merge?

Known Defects or Issues

  • Proguard note. Produce lots of(maybe) Note: duplicate definition of library class, while proguard is on. A workaround is to add -dontnote in proguard-rules.pro.
  • The overlay order of res merge is changed: Embedded dependency has higher priority than other dependencies.
  • Res merge conflicts. If the library res folder and embedded dependencies res have the same res Id(mostly string/app_name). A duplicate resources build exception will be thrown. To avoid res conflicts, consider using a prefix to each res Id, both in library res and aar dependencies if possible.
  • More issue or defect is welcomed...

Thanks

android-fat-aar

fat-aar-plugin's People

Contributors

vigidroid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fat-aar-plugin's Issues

Hacking into Android Gradle Plugin is really terrible...!

Terrible transform API...
Terrible proguard-inside integration...
Terrible "Jack maybe used, skip classes generation"...

After version 2.3.0 is updated,
variant.dirname has nothing relation with base bundle dir.
New build-cache is brought in yet specific build-cache dir is not provided by public api.

The code in android plugin is such over-designed, jump here, and jump there.

What a fuck work I'm doing...

update

Hi, When can you upgrade for Gradle 3.1, thanks?

兄弟,请教一个问题?

用fat-aar打包时,依赖的是一个aar,但是打不进去,报找不到R文件下一些资源符号的错误(查了下是找不到support:appcompatv7下的一些资源)。请问这个问题何解?
image

Plugin embeds all transitive dependencies/artifacts, even if they are compile dependencies

I have an android library which has dependency to android module, which has dependency to pure java module. So A1 -> A2 -> J
The problem is that the plugin tries to pack into aar all dependencies from A2 and J, even if they are 'compile' dependencies (which would be usually the case). So if my J module has 'compile' dependency to RxJava, RxJava will be packed inside final aar. I assume it is not desired behavior, right?

This is caused by embedConf.resolvedConfiguration.resolvedArtifacts, which returns every transitive artifact, but I'm not sure how to fix it and what exactly is the desired behaviour in this case.

fat-aar includes release libs in its debug assembled aar output

My project is setup as follows:

root
|----build/
|----module_a
|    |----build/
|    |----build.gradle
|    |----proguard.pro
|----module_b
|    |----build/
|    |----build.gradle
|    |----proguard.pro
|----build.gradle

In the build.gradle of both module_a and module_b, I applied

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

And in their respective build/ directory I can see that release.aar is obfuscated while debug.aar is not.

Then in the top level build.gradle of root, I did

apply plugin: 'me.vigi.fat-aar'

dependencies {
    embed (project(':module_a')) {
        transitive false
    }
    embed (project(':module_b')) {
        transitive false
    }
}

But in its own build/ directory, I find that both release.aar and debug.aar contains jar libs from module_a and module_b as obfuscated.

Please help fix this issue. Thanks!

Error: Can not find task prepareDebugDependencies!

Hi,

I am trying out this plugin and the dependency I am trying to embed is another AAR. The configuration fails since task prepareDebugDependencies can't be found.

Gradle Version: 4.1
Android Plugin: 3.0.1 (Not sure if supported?)

Build Gradle:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url  "http://dl.bintray.com/vigidroid/maven"
        }
    }
    dependencies {
        classpath 'me.vigi:fat-aar-plugin:0.2.8'
    }
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'me.vigi.fat-aar'


android {
    compileSdkVersion 26

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    embed 'net.openid:appauth:0.7.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

Any thoughts?

Thanks!

> Can not find task prepareDebugDependencies!


FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':mergedsdk'.
> Can not find task prepareDebugDependencies!

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

CONFIGURE FAILED in 0s
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath 'me.vigi:fat-aar-plugin:0.2.8'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

org.xml.sax.SAXParseException

Error while saving blame file, build will continue
org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 222; 与元素类型 "uses-sdk" 相关联的属性 "tools:overrideLibrary" 的前缀 "tools" 未绑定。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)

android studio 2.3
com.android.tools.build:gradle:2.3.0

How to exclude duplicate .so file?

Hello, I am using fat-aar-pluginbut i gave me a error:

/jni/armeabi-v7a/libc++_shared.so: Error: Duplicate resources

i tried to add to my configuration:

packagingOptions{ pickFirst "*/armeabi/*.so" pickFirst "*/armeabi-v7a/*.so" pickFirst "*/x86/*.so" }

but this not work

是不是不能识别模块引用模块再引用模块?

porter] FAILURE: Build failed with an exception.
17:56:47.263 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
17:56:47.263 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
17:56:47.263 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':simulator:transformClassesAndResourcesWithProguardForRelease'.
17:56:47.263 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Job failed, see logs for details
17:56:47.263 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
17:56:47.263 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:

"joor" not found

I'm running into this error when trying to set this up:

screen shot 2018-02-14 at 11 19 43 pm

I'm using Gradle 3.0.1, which I suspect will later fail for other reasons, but probably isn't relevant to this particular error

Anyone else run into this and/or have a fix?

Error:Execution failed for task ':testapp:mergeDebugManifest'.

Error:Execution failed for task ':testapp:mergeDebugManifest'.

com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: D:\workspace_as\paysdk\PaySdk\testapp\build\intermediates\exploded-aar\PaySdk\MposDriverFrameworkBbposDriver\unspecified\AndroidManifest.xml (系统找不到指定的路径。)

android studio 2.3
com.android.tools.build:gradle:2.3.0
com.android.library
compileSdkVersion 25

Disable build-cache doesn't seem to work for supporting Android plugin 2.3.0

When I change the sample project to use 2.3.0, and disable the build cache in gradle.properties, I get:

Error:Execution failed for task ':library:mergeDebugManifest'.
> com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: ~/programming/fat-aar-plugin/example-android/library/build/intermediates/exploded-aar/example-android/aar-lib/unspecified/AndroidManifest.xml (No such file or directory)

This is the same error I see when I keep the build cache enabled. It seems that the setting did something, because the cleanBuildCache is no longer available, like the documentation says. It still has the build error though. Does 2.3.0 work on your computer with build cache disabled?

Please enable support for Android Studio 3.0 gradle plugin

Hi,

Currently the highest version of gradle plugin that works for our project is com.android.tools.build:gradle:2.3.3.

Can you take a look at the latest gradle plugin from Android Studio 3?
It throws the following exception:
Caused by: java.lang.RuntimeException: Can not find task prepareDebugDependencies!
at me.vigi.fataar.VariantProcessor.processVariant(VariantProcessor.groovy:36)
at me.vigi.fataar.VariantProcessor$processVariant$0.call(Unknown Source)
at me.vigi.fataar.FatLibraryPlugin.processVariant(FatLibraryPlugin.groovy:95)
at me.vigi.fataar.FatLibraryPlugin.this$2$processVariant(FatLibraryPlugin.groovy)
at org.gradle.internal.metaobject.BeanDynamicObject$GroovyObjectAdapter.invokeOpaqueMethod(BeanDynamicObject.java:579)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:506)
at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:80)
at me.vigi.fataar.FatLibraryPlugin$_apply_closure1_closure3.doCall(FatLibraryPlugin.groovy:30)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
at org.gradle.util.ConfigureUtil$1.execute(ConfigureUtil.java:123)
at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:136)
at org.gradle.api.internal.DefaultDomainObjectCollection.all(DefaultDomainObjectCollection.java:154)
at org.gradle.api.DomainObjectCollection$all.call(Unknown Source)
at me.vigi.fataar.FatLibraryPlugin$_apply_closure1.doCall(FatLibraryPlugin.groovy:29)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy32.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:75)

Thank you

Merge failure for .so files in jniLibs

I have three modules: A, B and C, where A depends on B and C, B depends on C, and C has a jniLibs that includes a .so file. All project dependencies use "embed" instead of "compile". But I get the following error when building:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':A:mergeReleaseJniLibFolders'.
> [arm64-v8a/libXXX.so] /Users/XXX/Project/A/build/intermediates/exploded-aar/Project/B/unspecified/jni/arm64-v8a/libXXX.so       [arm64-v8a/libXXX.so] /Users/XXX/Project/A/build/intermediates/exploded-aar/Project/C/unspecified/jni/arm64-v8a/libXXX.so: Error: Duplicate resources

com.android.manifmerger.ManifestMerger2$MergeFailureException: org.xml.sax.SAXParseException;

Hi @Vigi0303 !

I follow your suggestion and tried to use your repo instead of fat-add, but now I’m having this issue. Do you have any ideia?

Execution failed for task ':qLibAdsTest:processDebugManifest'.
> com.android.manifmerger.ManifestMerger2$MergeFailureException: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 222; the "tools" prefix "tools: overrideLibrary" associated with an "us-sdk" element type is not bound.

P.S.: The issue message is not exactly this, i translated it from my main langage.

Full stacktrace

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':qLibAdsTest:processDebugManifest'.
> com.android.manifmerger.ManifestMerger2$MergeFailureException: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 222; O prefixo "tools" do atributo "tools:overrideLibrary" associado a um tipo de elemento "uses-sdk" não está vinculado.

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':qLibAdsTest:processDebugManifest'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:236)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:228)
	at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:228)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:77)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:58)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113)
	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
	at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
	at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
	at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:196)
	at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:193)
	at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:193)
	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
	at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
	at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:50)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner$1.execute(RunAsBuildOperationBuildActionRunner.java:43)
	at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner$1.execute(RunAsBuildOperationBuildActionRunner.java:40)
	at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
	at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
	at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:75)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
	at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)
	at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
	at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.RuntimeException: com.android.manifmerger.ManifestMerger2$MergeFailureException: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 222; O prefixo "tools" do atributo "tools:overrideLibrary" associado a um tipo de elemento "uses-sdk" não está vinculado.
	at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:583)
	at com.android.build.gradle.tasks.MergeManifests.doFullTaskAction(MergeManifests.java:74)
	at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:82)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:163)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
	... 78 more
Caused by: com.android.manifmerger.ManifestMerger2$MergeFailureException: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 222; O prefixo "tools" do atributo "tools:overrideLibrary" associado a um tipo de elemento "uses-sdk" não está vinculado.
	at com.android.manifmerger.ManifestMerger2.loadLibraries(ManifestMerger2.java:688)
	at com.android.manifmerger.ManifestMerger2.merge(ManifestMerger2.java:130)
	at com.android.manifmerger.ManifestMerger2.access$600(ManifestMerger2.java:54)
	at com.android.manifmerger.ManifestMerger2$Invoker.merge(ManifestMerger2.java:1159)
	at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:544)
	... 86 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 222; O prefixo "tools" do atributo "tools:overrideLibrary" associado a um tipo de elemento "uses-sdk" não está vinculado.
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:308)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
	at com.android.utils.PositionXmlParser.parse(PositionXmlParser.java:183)
	at com.android.utils.PositionXmlParser.parse(PositionXmlParser.java:141)
	at com.android.utils.PositionXmlParser.parse(PositionXmlParser.java:103)
	at com.android.utils.PositionXmlParser.parse(PositionXmlParser.java:112)
	at com.android.manifmerger.XmlLoader.load(XmlLoader.java:59)
	at com.android.manifmerger.ManifestMerger2.loadLibraries(ManifestMerger2.java:680)
	... 90 more


BUILD FAILED

请问如何打出混淆的aar包

我引入了几个library,那几个库都需要混淆,我注意到使用您的插件打出了-debug包,内部的libs文件夹下有那些库的jar包,请问可以混淆那些jar吗,在各个库工程下可以设置吗

Getting ManifestMerger2 MergeFailureException on basic project

As mentioned in the other Issue, I'm having Manifest Merging issues, even on Android Gradle Plugin 2.2.3 and with build cache disabled.

I've attached a minimum reproducible example:
FatAarExample.zip

Here we have three Library projects (LibraryA, LibraryB, and LibraryC), and a fourth (FatLibrary) which tries to embed them.

Import this into Android Studio. Both Syncing and Building will fail with the given exception.

Please let me know if you have any questions.

混淆后添加dontnote, 仍然有warning

Warning: library class android.support.design.internal.NavigationMenuItemView$1 extends or implements program class android.support.v4.view.AccessibilityDelegateCompat

Library can not use R?

java.lang.NoClassDefFoundError: Failed resolution of: Lme/vigi/fataar/demo/aarLib/R$layout;
at me.vigi.fataar.demo.aarLib.AarLibActivity.onCreate(AarLibActivity.java:17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.