欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android Studio 工程依赖

程序员文章站 2022-03-09 22:51:51
...

(一)添加依赖库项目

现在有两个工程,主工程Module A ,要依赖项目Module B。

1、首先我们确保Module B 依赖库工程,如果是,直接导入即可,如果Module B 是非库工程,则要改为依赖库工程,方法如下:

打开Module B的build.gradle文件,如果是 apply plugin: ‘com.Android.application’,我们要将application改成依赖库的属性 apply plugin: ‘com.android.library’。

作为一个库工程不允许设置applicationId,因此需要将builde.gradle —》 android —》defaultConfig中的applicationId删除;

2、导入过程:选择File ——》Project Structure...,弹出"Project Structure"对话框,选择Module A ,选中 Dependences,点击 ” + “ ,选择”Library dependency“,找到要添加的 Module B,添加即可。

Android Studio 工程依赖

3、添加成功后,在ModuleA的build.gradle文件中 dependencies标签中多 出新添加的库,格式如下:

compile project(':loadingview.library')

(二)添加第三方jar包

1、将项目结构切换至"Project", 选中项目名称,右击---》New --》 Directory,添加libs文件夹,(若项目已有libs,则无需添加),将jar包拷贝到libs目录下,如图

Android Studio 工程依赖

2、选中要添加的jar包,右击---》“Add As Library...”,弹出“Create Librarry”对话框,点击“ok”按钮即可

Android Studio 工程依赖

3、添加成功后,在Module的build.gradle文件中 dependencies标签中多 出新添加的jar包,格式如下:

compile files('libs/ShareSDK-QQ-2.7.10.jar')

(三)添加第三方so库

网上有两种方法可参考

  • 第一种 (测试可行)

1、将so文件拷贝到libs文件加下

Android Studio 工程依赖

2、在Module的build.gradle文件中添加配置

apply plugin: 'com.android.application'  
  
android {  
    compileSdkVersion 21  
    buildToolsVersion "21.1.0"  
  
    defaultConfig {  
        applicationId "com.wujay.footerballstar"  
        minSdkVersion 8  
        targetSdkVersion 21  
        versionCode 1  
        versionName "1.0"  
    }  
  
    buildTypes {  
        release {  
            runProguard false  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
        }  
    }  
  
    /*********添加so配置   begin***********/
    task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {  
        destinationDir file("$projectDir/libs")  
        baseName "Native_Libs2"  
        extension "jar"  
        from fileTree(dir: "libs", include: "**/*.so")  
        into "lib"  
    }  
  
    tasks.withType(JavaCompile) {  
        compileTask -> compileTask.dependsOn(nativeLibsToJar)  
    }  
  /*********添加so配置  end***********/

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


  • 第二种方法(待测)

1、将so文件拷贝到libs文件加下

2、在Module的build.gradle文件中添加配置

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.lance.ndkexample"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        // 不声明ndk标签,项目默认会创建一个libapp.so的文件
        ndk {
            // 声明创建so库的文件名,会自动添加lib前缀, 添加了前缀,不会自动添加
            moduleName "MathKit"

            //声明启用Android日志, 在c/c++的源文件中使用的#include <android/log.h> 日志将得到输出
            ldLibs "log"
            // 声明创建指定cpu架构的so库, 不声明的话, 默认(gradle 1.5.0)会生成4中架构 多一种mips架构
            // 具体cpu架构的区别请参考:
            // for detailed abiFilter descriptions, refer to "Supported ABIs" @
            // https://developer.android.com/ndk/guides/abis.html#sa
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

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

    sourceSets {
        main {
            // 1. 配置在根目录libs下可以加载第三方so库, (最好不要创建jniLibs, 在众多的开源库中可能会引起冲突,还没发现)
            // 2. 运行时会自动将libs目录下的so库拷贝到指定目录
            // 3. 如果自己创建的so不需要重新编译,可以将(app/build/intermediates/transforms)生成的so拷贝到这个目录
            jniLibs.srcDirs = ['libs']
        // 如果是单个文件夹 可以直接这样如下配置
        // jniLibs.srcDir 'libs'
        } 
   }
}

3、此外,要再 gradle.properties 文件中添加android.useDeprecatedNdk=true,重新编译工程即可。

备注:

对方法二,如果没有添加ndk标签,就不用第三步,直接在在Module的build.gradle文件中添加如下配置即可

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

转载于:https://my.oschina.net/fltsp/blog/900509