标签: aar

无法访问本地aar库中的自定义视图?

我有一个包含自定义View类的本地aar文件(包括res / values / attrs.xml文件)。

我知道默认情况下本地aar尚未运行,并且我尝试了此处建议的所有变通方法:如何使用新的Gradle Android Build System手动包括外部aar软件包(Ran和Vipul的答案)。

但是,这些解决方案似乎都没有采用自定义View类。我的意思是它不会出现在布局编辑器的“自定义视图”下。

应该行吗?还是需要一些额外的gradle-fu伏都教徒?

android gradle android-studio aar

5
推荐指数
1
解决办法
293
查看次数

Android工作室@aar导入创建不正确的explosion-aar目录

所以,这就是问题,我有一个.aar文件,当我将它添加为依赖项时,如下所示:

compile('com.foo:bar:1.0.0@aar')

它生成以下文件:

build > intermediates > exploded-aar > com.foo > bar > bar-1.0.0

其中包含classes.jar,sources等.

但是,它应该做以下事情:

build > intermediates > exploded-aar > com.foo > bar > 1.0.0

有没有人知道为什么我的aar没有被正确导入?

这是一个问题,因为构建gradle时会发生以下错误:

com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: /build/intermediates/exploded-aar/com.foo/bar/1.0.0/AndroidManifest.xml (No such file or directory)

但是,它在bar-1.0.0目录中清晰可见.

编辑:更多信息

  • 在5台机器上测试过.全部运行AS 0.8.9,全新安装,新鲜克隆.
  • Jdk 1.6和1.7测试过
  • - 调用refresh-dependencies以确保已收集任何更改

什么都行不通.

android gradle aar

5
推荐指数
1
解决办法
4184
查看次数

如何在Android Studio中创建Android自定义视图库?

我已经创建了一个自定义视图,它扩展了我正在处理的项目的RelativeLayout.我认为它可能对其他人有用,所以我一直在尝试将其设置为库,以便其他人可以找到并使用它.

我还没有找到关于如何在Android Studio中进行设置的明确答案.

要清楚 - 我已经构建了视图并且它工作正常,我只想将其打包为库.

我是否创建了一个新项目并将我的代码放在那里,或者我是否也需要创建一个新模块?一旦我做了其中任何一件事,我需要更改清单和gradle文件的哪些部分?

最后,我是否需要以某种方式从文件中获取AAR,或者最好将其上传到GitHub并让其他人克隆它?

android jar android-library aar

5
推荐指数
1
解决办法
1114
查看次数

Android Studio无法找到AAR包

我遇到Android Studio识别本地导入的@aar库中的类的问题.

所以...我已经创建了一个库并导出了一个aar文件.在android工作室里面,我选择了Import Module他们Import .JAR or .AAR Package.

该项目编译并使用aar文件中的类,但Android工作室无法找到类或提供任何自动完成所有.

以下是一些截图:

screenshot1 在此输入图像描述 在此输入图像描述

使用相同方式导入的其他@aar库也会出现同样的问题: 在此输入图像描述

有什么建议?

编辑:

的build.gradle:

...
dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile project(':UpPlatformSdk')
   compile project(':simpleorm')
   ... // more libraries here
}
Run Code Online (Sandbox Code Playgroud)

settings.gradle:

include ':app', ':UpPlatformSdk', ':wear', ':simpleorm'
Run Code Online (Sandbox Code Playgroud)

java android android-library android-studio aar

5
推荐指数
1
解决办法
7632
查看次数

使用附加在artifactory repo上的javadocs发布.aar文件

我正试图通过神器gradle puglin将带有javadoc文件的AAR发布到我的maven repo.

aar文件正在上传成功,但我javadoc没有.我可以用哪个脚本上传我的javadocs?

这是我的build.gradle代码

apply plugin: 'com.android.library'
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'

def packageName = 'br.com.lexsis.libtest'
def libraryVersion = '0.0.1-SNAPSHOT'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
}

publishing {
    publications {
        aar(MavenPublication) {
            groupId packageName
            version = libraryVersion
            artifactId project.getName()

            // Tell maven to prepare the …
Run Code Online (Sandbox Code Playgroud)

android artifactory gradle maven aar

5
推荐指数
2
解决办法
5234
查看次数

如何忽略AAR库中的Proguard配置?

aar库可能包含proguard配置文件,并且proguard将在运行时使用它们。是否可以忽略这些文件并改用应用程序的配置文件?如果是,怎么办?

android proguard aar

5
推荐指数
0
解决办法
201
查看次数

Android maven插件:renameManifestPackage导致Resources $ NotFoundException

我遇到了以下问题:我实现的应用程序包含另一个项目作为依赖项(类型为aar).两个项目共享同一个父pom.依赖项包括应用程序正在使用的资源.要访问库项目中的资源,可以通过调用获取资源ID context.getResources().getIdentifier(resourceKey, resourceType, packageName).我通过调用getPackageName() 给定的context对象获取包名称.在使用之前更改项目的包名称之前

<renameManifestPackage>com.example.newpackagename</renameManifestPackage> 
Run Code Online (Sandbox Code Playgroud)

访问图书馆资源工作正常.但是在重命名应用程序的包名后我得到了一个,android.content.res.Resources$NotFoundException因为getIdentifier()调用仍然期望应用程序的旧包名称并且调用getPackageName()返回新的(正如预期的那样).
现在我想知道我是否遗漏了某些东西,或者这是android maven插件中的错误?https://github.com/simpligility/android-maven-plugin

android maven android-maven-plugin package-name aar

5
推荐指数
1
解决办法
233
查看次数

导入Android库AAR - 无类定义

我正在使用Android Studio.我正在写一个名为detector的Android库.它在创建它的项目中完美运行.

compile project(':detector')
Run Code Online (Sandbox Code Playgroud)

我想将它生成的AAR文件导入另一个项目.我这样做:

File > New > New Module > Import .JAR/.AAR Package
Run Code Online (Sandbox Code Playgroud)

然后我在新项目app build.gradle中添加相同的行:

compile project(':detector')
Run Code Online (Sandbox Code Playgroud)

清理和构建后,我运行应用程序并收到此错误:

11-18 06:32:14.151 21283-21283/testing.com.test D/ResourcesManager: For user 0 new overlays fetched Null
11-18 06:32:14.161 21283-21283/testing.com.test W/System: ClassLoader referenced unknown path: /data/app/testing.com.test-1/lib/arm
11-18 06:32:15.131 21283-21283/testing.com.test W/System: ClassLoader referenced unknown path: /data/app/testing.com.test-1/lib/arm
11-18 06:32:15.131 21283-21283/testing.com.test D/ContextRelationManager: ContextRelationManager() : FEATURE_ENABLED=true
11-18 06:32:15.131 21283-21283/testing.com.test D/RelationGraph: garbageCollect()
11-18 06:32:15.301 21283-21283/testing.com.test D/RelationGraph: garbageCollect()
11-18 06:32:15.501 21283-21283/testing.com.test W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have …
Run Code Online (Sandbox Code Playgroud)

java android android-library android-studio aar

5
推荐指数
1
解决办法
5288
查看次数

如何在不合并代码的情况下将第三方JAR包含在Android库AAR中

我有一个新要求,即将JAR文件包含在myspecial.jar我正在构建的Android库中。当我使用gradle构建AAR时,生成的包将我的类和类都包含myspecial.jar在一个名为的文件中classes.jar。我想让他们分开。

根据Android网站https://developer.android.com/studio/projects/android-library.html的说法,可以做到这一点。

此外,AAR文件可能包括以下一个或多个可选条目:

/资产/

/libs/name.jar

/jni/abi_name/name.so

/proguard.txt

/lint.jar

我已经尝试了所有有限的gradle-fu。我不知道。

我遇到了这个问题:https : //github.com/adwiv/android-fat-aar,但它似乎不适用于我。

TL; DR:需要gradle支持,以将第三方jar作为自己的文件捆绑在aar的libs目录中,而不能与我自己的代码一起编译成classes.jar

gradle android-library build.gradle android-gradle-plugin aar

5
推荐指数
1
解决办法
709
查看次数

Xamarin.Android绑定到具有依赖项的第三方SDK

我正在使用VS2015 Update3与当前/最新的Xamarin,我正在尝试创建一个绑定库来包装用Java编写的第三方SDK.我有一个C#/ .Net背景,到目前为止几乎没有Java经验.此SDK依赖于3个其他项目,可以作为AAR或通过NuGet获得.

我能够为父AAR创建一个绑定库,使用一些MetaData.xml tweato调整参数类型并返回类型并更正类访问器以满足其抽象基类,所有这些都最初阻止了生成的C#.Net Android来自建筑物的绑定库.现在父绑定程序集构建,但无法执行,因为它需要其他3个AAR依赖项.

需要的依赖关系("#"是下面帖子中提到的每个的别名):

  • "2" - > com.android.support:support-v4:25.1.1
  • "3" - > com.google.android.gms:play-services-location:10.2.0
  • "4" - > com.google.android.gms:play-services-gcm:10.2.0

在这种情况下,如果我需要创建一个绑定dll来包装依赖于3个其他AAR的父AAR:

我应该(A)创建4个绑定程序集 - 父绑定程序集Bind_AAR_1.dll,它依赖于Bind_AAR_2.dll,Bind_AAR_3.dll和Bind_AAR_4.dll?

或者,我是否应该(2)深入研究2个,3个和4个AAR文件并从每个文件中获取JAR文件,并使用"EmbeddedJar"(或其他属性/设置)将它们直接包含在Jars文件夹中的Bind_AAR_1.dll中?

或者,看到2,3和4实际上是通过NuGet可用的,我应该使用NuGet将它们引用到Bind_AAR_1项目吗?如果我使用NuGet引用/包含它们,那么AAR 1中的Javacode是否能够看到AAR 2,3和4中的代码?

我已经尝试了各种方法(A),(B)和(C)的变化,但没有运气,或导致更多工作的结果,这让我想知道什么是最好/正确的方法.

在相关主题中,最佳做法是使用Metadata.xml文件从生成的生成的包装器API中明确删除您未直接计划在Xamarin项目中使用的所有内容(类等)吗?似乎限制接口可能是好的,并且可能还减少绑定dll的构建大小(以及可能的构建时间).

任何帮助,将不胜感激!

柯蒂斯

================================================== =====================

4/11/2017 - 更新

很高兴得到@_JonDouglas之类的投入!但是......仍然无法使这个SDK工作.

我已经尝试了这些方法A,B和C中的每一个,并且已经能够构建我的绑定项目(通过transforming/MetaData.xml完成​​操作).第三方SDK被设计/记录为Java解决方案中的组件的一部分.根据供应商的说明文档,此解决方案将3个依赖项添加到其.gradle文件中,从而在整个Java解决方案中提供对这些项的引用.我没有Java历史,所以在这里展开它.

实际上,当我将SDK(单独使用或使用3种方法中的任何一种)与Visual Studio包装到Xamarin Android Binding Assembly中时,在运行时SDK会遇到ClassNotFound异常(由"未找到Google Play"证明)日志).从所需的Java依赖项中使用的类是以后期绑定的方式创建的,使用类名的字符串,如下所示: 使用上述3种方法中的任何一种在Visual Studio中构建绑定程序集似乎并不重要依赖项(使用项目引用,1个绑定中的1个AAR + 3个Nuget OR 1个AAR + 3个JAR或4个绑定中的4个AAR).在运行时,SDK似乎没有看到它们.也许这是有意义的,它不会 - 在SDK本身中没有指向它们的.gradle(如csproj文件)? try { Class.forName("com.google.android.gms.common.GooglePlayServicesUtil");
//more code here } catch (ClassNotFoundException e) { Log.e("3rd Party SDK", "Google Play not found."); }

我在想我需要做的是(更接近供应商的指令)创建一个Java解决方案,其中包含一个.gradle文件,该文件包含SDK以及Java项目中的3个依赖项,用于创建AAR文件.然后,我相信我可以为最终包含的AAR创建一个Xamarin绑定程序集.然后我将在我的解决方案中添加对此绑定程序集的引用到我的.Andriod程序集并继续.

理论(尚未证实):[失败.请参阅下面的4/12更新.]将Java SDK +编码的依赖项(在.gradle中显式)包装在模块/库中,然后将其包装在Xamarin Android Binding库中.然后,我需要做的就是从这个包装器模块/库中找出我需要使用的公共方法(并因此公开),添加这些公共方法并将调用转发给SDK.

大图:我正在尝试将其设计和编码为跨平台的Xamarin解决方案,但我正在使用特定于Android和IOS的SDK,这些SDK看起来都是应用程序/ …

.net c# xamarin.android xamarin aar

5
推荐指数
1
解决办法
2341
查看次数