Android 如何使用 Android Studio 和 gradle 创建包含 Altbeacon 库的库(jar)

Posted

技术标签:

【中文标题】Android 如何使用 Android Studio 和 gradle 创建包含 Altbeacon 库的库(jar)【英文标题】:Android how to create library (jar) containing Altbeacon library with Android studio and gradle 【发布时间】:2015-09-17 07:14:33 【问题描述】:

我是 android 的新手,尤其是 libs。

我使用的是 Android Studio 1.2.2

我正在尝试创建一个没有使用 AltBeacon 库的活动、资源等(只有代码)的 jar 库。完成后,我想将此 jar 包含在我的 APP 中,该 APP 必须通过我的 lib 使用信标。

好吧,使用 AltBeacon 指令,我可以使用 AltBeacon 库将 gradle 配置为具有“正常”(带有活动等)应用程序。但我无法创建一个包含 AltBeacon 的 jar 库。 我用谷歌搜索了很多,特别是在 SO,我发现了很多关于“图书馆内图书馆”的问题,但这对我不起作用。

我做了这个:

我使用 Studio 创建了一个空项目(空白活动) 然后我创建了一个新模块 -> Java 库并将其命名为 libmebeaconmanager,Studio 创建了一个新的 Java 类,我将其命名为 MeBeaconManager

我是这样修改库的build.gradle的:

应用插件:'java'

依赖 编译 fileTree(dir: 'libs', include: ['*.jar']) 编译'org.altbeacon:android-beacon-library:2+'

这是 Module:app: 的 build.gradle

apply plugin: 'com.android.application'

android 
    compileSdkVersion 22
    buildToolsVersion "23.0.0 rc2"

    defaultConfig 
        applicationId "me.padovame.libbeacontest"
        minSdkVersion 18
        targetSdkVersion 22
        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:22.2.0'

这是项目的build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript 
    repositories 
        jcenter()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:1.2.3'

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


allprojects 
    repositories 
        jcenter()
    

此时,在 lib 的 MeBeaconManager 类中,我尝试导入 AltBeacon 类但没有成功,因为导入行出现未定义符号错误,如下所示:

导入 org.altbeacon.beacon.Beacon;

我也尝试过将下载的android-beacon-library-2.3.aar插入到libmebeaconmanager的lib文件夹中

我做错了什么?

提前致谢。

编辑: 我试图在我的 libmebeaconmanager 中包含一个 jar(用 Picasso 尝试过)库并且它有效。所以问题似乎出在 aar 库上。

我要疯了……

编辑 2: 我从 AltBeacon aar 库中提取了 classes.jar 并将其用作其他 jar 并且它有效。

但我认为这是一种解决方法:我仍然不明白如何直接管理 aar 文件。所以感谢谁能帮助我。

【问题讨论】:

Android Library Gradle release JAR 的可能重复项 我认为这不是重复的。我需要在我的库中包含一个 aar 库 【参考方案1】:

似乎在将库插入项目结构时出现问题

您可以在此处查看用户 Sam Rad 提供的答案:How do I add a library project to Android Studio?

【讨论】:

不幸的是,导入模块选项在 Android Studio 中不再可用......并且该帖子用于将库添加到项目,而不是用于将库添加到库 关于@maxbeltra,我不知道您使用的是哪个版本的android studio。但我使用的是 Android Studio 1.0.1,并且有这种支持,实际上据我所知,这种支持是在 Studio 0.53 之后启用的 我使用的是 Android Studio 1.2.2 导入模块现在需要一个目录,而不是 aar 文件。我也尝试了新模块-> 添加现有的 aar/JAR。我给出了 albeacon aar lib 的路径,它以这种方式修改了 lib 的 build.gradle:dependencies compile fileTree(include: ['*.aar'], dir: 'libs') // compile 'org.altbeacon :android-beacon-library:2+@aar' compile project(':android-beacon-library-2.3') 但我得到了同样的错误

以上是关于Android 如何使用 Android Studio 和 gradle 创建包含 Altbeacon 库的库(jar)的主要内容,如果未能解决你的问题,请参考以下文章

Android jetpack room+ViewModel+liveData 数据自动更新

Android-XmlUtil工具类

android createTempFile 抛出权限被拒绝?

Android studio Unsupported major.minor version 52.0

Android Studio采坑记录

如何创建基于其他数据帧数据帧中的一个连接?