我是Android Studio的新手,我想在我的一个项目中实现Urban Airship.我在他们的网站上使用.aar文件跟踪了示例,我最终得到了这个错误.
Error: [/Users/AndroidstudioProjects/MyApplication/app/build/intermediates/exploded-aar/com.urbanairship/urbanairship-lib/5.1.0/AndroidManifest.xml:8]
Invalid instruction 'overrideLibrary', valid instructions are : REMOVE,REPLACE,STRICT
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我,但这是否意味着他们的清单文件中存在问题?还是我完全是蓝色的?如果是这样,有没有人有一个如何实现它的好例子?
android android-manifest urbanairship.com android-studio aar
我正在使用android-maven-plugin的Maven项目构建Android应用程序.在这个项目中,我正在使用新的beta数据绑定库.
它包含在Android SDK的本地m2repository中(extras/android/m2repository).此存储库中的库打包为aar类型.
我可以像这样在我的pom中添加依赖项:
<dependency>
<groupId>com.android.databinding</groupId>
<artifactId>library</artifactId>
<version>1.0-rc1</version>
<type>aar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但构建失败了:
无法在项目演示中执行目标:无法解决项目com.simpligility.android:demo:apk:1.0.0的依赖项:未能在文件中找到com.android.support:support-v4:jar:21.0.3:/ // Users/eppleton/Java Libraries/android-sdk-macosx/extras/android/m2repository缓存在本地存储库中,直到android-local-extras的更新间隔已经过去或强制更新后才会重新尝试解析 - > [帮助1]
在本地存储库中没有support-v4:jar是正确的,因为API版本20有支持-v4:aar.
有没有办法让maven找到aar而不是jar?
Ps:对于我自己的本地构建,我有几个解决方法(例如重新打包为jar),但我更喜欢更通用的解决方案,因为我想在maven原型中共享配置,我不想要求用户做很多手工工作.现在这是我的最佳解决方案:
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>21.0.3</version>
<scope>system</scope>
<systemPath>${android.sdk.path}/extras/android/support/v4/android-support-v4.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但它不是很好,传递依赖性解决,因为aar会更好.
我正在尝试在Android Studio中构建一个arr包.此软件包包含Zendesk的dependecies:
allprojects {
repositories {
maven { url 'https://zendesk.artifactoryonline.com/zendesk/repo' }
}
}
compile (group: 'com.zendesk', name: 'sdk', version: '1.7.0.1') {
transitive = true
}
compile (group: 'com.zopim.android', name: 'sdk', version: '1.3.1.1') {
transitive = true
}
Run Code Online (Sandbox Code Playgroud)
我想为Unity3d项目构建这个包.此软件包应包含Zendesk的所有依赖项(transitive = true属性).当我打开aar文件时,Zendesk没有依赖关系.怎么了?
我开发了一个Android AAR库,其中包含客户所需的所有功能,我想在将其交付给客户之前在库上应用proguard,以便混淆代码,使代码不容易反编译。
在发布这个问题之前我用谷歌搜索了它,我发现库项目本身不运行 ProGuard,因此它们不使用任何配置,如此处提到的单击此处
我已经完成了以下配置,以便在我的库项目上应用 proguard。
buildTypes {
debug {
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
我已应用此规则proguard-rules.pro
-keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class * {
public protected *;
}
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements …Run Code Online (Sandbox Code Playgroud) 当我使用*.aar文件而不是使用Gradle 4.x的模块构建应用程序并遵循有关implements和api的文档时,我希望使用api包含的aar文件包含所有依赖项,但它没有.
当你这样做
git clone https://github.com/hannesa2/aar_dependency
./gradlew clean assembleDebug
Run Code Online (Sandbox Code Playgroud)
手段
dependencies {
api project(':mylibrary')
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但是当我使用lib-module的insted时,先前生成的*.aar文件作为依赖
dependencies {
api 'com.example.my.mylibrary:mylibrary-debug@aar'
Run Code Online (Sandbox Code Playgroud)
(在演示应用程序中)
git checkout with_aar
./gradlew clean assembleDebug
Run Code Online (Sandbox Code Playgroud)
我碰到了这个
任务:app:transformClassesWithDesugarForDebug线程"main"中的异常java.lang.TypeNotPresentException:在sun.invoke.util.BytecodeDescriptor的sun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:85)中输入不存在的io.reactivex.ObservableTransformer .parseMethod(BytecodeDescriptor.java:63)位于com.google.devtools的java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1067)的sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41).在org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)的org.objectweb.asm.MethodVisitor.visitInvokeDynamicInsn(未知来源)的build.android.desugar.LambdaDesugaring $ InvokedynamicRewriter.visitInvokeDynamicInsn(LambdaDesugaring.java:399)
因为我将这些aar工件上传到我们的Maven Nexus公司时遇到了这个问题,所以我创建了这个demo-repo以准确显示出错了什么.在演示应用程序或使用Maven我看到同样的问题.
有人知道我做错了吗?
我正在尝试在我的android项目中使用自定义aar。我在StackOverflow和Web中找到了许多示例。许多构建失败,没有一个起作用。最清晰的网址是
http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/
最接近工作的地方。
这就是我所做的
从Ref.java成功创建了一个非常简单的AAR(Ref.aar)
// Ref.java
package com.ramrod.Ref;
public class Ref {
// Square an integer
public static int
square(int val) {
return (val * val);
}
}
Run Code Online (Sandbox Code Playgroud)创建一个测试项目(RefTest)
修改后的build.gradle
// build.gradle (Module: app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.ramrod.RefTest"
minSdkVersion 11
targetSdkVersion 15
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
} …Run Code Online (Sandbox Code Playgroud)我正在使用Android Studio 1.0.1.
我设法在项目中配置Android库模块,因此它内置于AAR中.
我的问题是AAR档案里面没有我的班级.当我检查时,MyProject/MyModule/build/intermediates/classes/debug/my/package/mymodule我可以看到我的课程编译:MyClass.class
但是当我进入AAR(或解压缩它)时,同一个目录(我的意思是my/package/mymodule在classes.jarAAR文件里面)只包含一个文件:BuildConfig.class
为什么我的班级不包含在AAR中?
使用gradle构建aar文件时,如何将创建的版本复制到其他目录?(我不想仅仅为了复制发布文件而更改默认输出目录)
我正在尝试设置一个依赖于其他两个库模块的Android库模块.我们使用android.support.annotation框架在一些方法上添加注释.当我尝试构建aar时,这就是我得到的:
:hce_entry:extractReleaseAnnotations FAILED
Error:Execution failed for task ':hce_entry:extractReleaseAnnotations'.
> java.lang.NullPointerException (no error message)
Run Code Online (Sandbox Code Playgroud)
我尝试使用--stacktrace选项获取更多信息来执行gradle构建,这是输出:
...
:hce_entry:extractReleaseAnnotations FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':hce_entry:extractReleaseAnnotations'.
java.lang.NullPointerException (no error message)
Try:
Run with --info or --debug option to get more log output.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':hce_entry:extractReleaseAnnotations'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:62)
at …Run Code Online (Sandbox Code Playgroud) 我有一个带有一个类的android库,我想把它变成一个.aar库.当我设置minifyEnabled为true时,另一个android项目不能使用该库(如果minifyEnabled设置为false则没问题).我想问一下使用AAR库的proguard的正确配置是什么
HelloWorld.java
package com.example.hello;
import android.util.Log;
public class HelloWorld {
public static void Hello(){
Log.v("HelloWorld","Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
build.grandle
apply plugin: 'com.android.library'
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.0.0'
}
Run Code Online (Sandbox Code Playgroud)
proguard-rules.pro
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { …Run Code Online (Sandbox Code Playgroud)