当前位置: 首页 > 编程笔记 >

Android Studio多工程引用同一个library项目配置的解决方法

马祺
2023-03-14
本文向大家介绍Android Studio多工程引用同一个library项目配置的解决方法,包括了Android Studio多工程引用同一个library项目配置的解决方法的使用技巧和注意事项,需要的朋友参考一下

在使用Android Studio开发的时候,如遇到多个项目引用同一个library的情况时,会遇到在每个项目中都要有一套library的代码的情况,对于还在开发和维护中的Library需要频繁的修改,这对同步就很麻烦,为了解决这个问题,出现了下面的解决方案。

首先:新建一个类库工程,工程名为AppLibs.Dev。

在该类库中包含一个公共的类库appLibs的Module,Module下面的build.gradle配置如下:

/** 声明是Android类库 */ 
apply plugin: 'com.android.library' 
android { 
 /** 为了能够支持该库中的包 */ 
 useLibrary 'org.apache.http.legacy' 
 /** 编译SDK的版本 */ 
 compileSdkVersion 25 
 /** build tools的版本 */ 
 buildToolsVersion "25.0.2" 
 defaultConfig { 
  minSdkVersion 9 
  targetSdkVersion 25 
  versionCode 100 
  versionName "1.0.0" 
  testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
 } 
 buildTypes { 
  debug { 
   // debug模式 
  } 
  release { 
   // 是否进行混淆 
   minifyEnabled false 
   // 混淆文件的位置 
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
  } 
 } 
 /** 移除lint检查的error */ 
 lintOptions { 
  abortOnError false 
 } 
} 
dependencies { 
 /** compile fileTree将libs文件夹中所有的jar文件全部编译。该方式和compile files方式选一种即可。 */ 
 // compile fileTree(include: ['*.jar'], dir: 'libs') 
 /** compile files将libs文件夹中单一的jar文件编译 */ 
 compile files('libs/jsch-0.1.53.jar') 
 compile files('libs/commons-net-3.3.jar') 
 compile files('libs/okhttp-3.2.0.jar') 
 compile files('libs/okio-1.6.0.jar') 
 /** 测试编译 */ 
 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
  exclude group: 'com.android.support', module: 'support-annotations' 
 }) 
 /** 编译指定包名下面模块 */ 
 compile 'com.android.support:appcompat-v7:25.2.0' 
 compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7' 
 /** 单元测试编译 */ 
 testCompile 'junit:junit:4.12' 
} 

这样一个类库工程就建好了,接下来就是引用包含该类库的工程。

其次:引用该类库工程。通过Android Studio新建一个TestProject的工程,如下图。

在该工程中需要做以下三件事:

1、在project的settings.gradle里面增加红框圈住部分的代码。

2、在module的build.gradle文件中增加红框圈住部分的代码:

如果该类库工程中包含多个module,那么在settings.gradle文件中原有代码后面增加下面的代码即可:

include ':AppLibs.Dev:moduleName'

同时在APP module中build.gradle增加相应的模块代码即可:

compile project(':AppLibs.Dev:moduleName')

3、点击Android Studio的菜单中的Build->Clean Project,完成Clean以后就看到如下图。

完成如上图所示以后,表示类库工程已经被APP工程引用进去了,这样以后再修改类库工程中的源码,其他引用该类库的工程中源码也就同步修改了。

总结

以上所述是小编给大家介绍的Android Studio多工程引用同一个library项目配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 引用 Library 项目与引用其他项目一样: dependencies { compile project(':libraries:lib1') compile project(':libraries:lib2') } 注意: 如果要引用多个 Library,那么引用的先后顺序将非常重要。这类似于旧的构建系统的 project.properties 文件中的依赖顺序。

  • 引用一个库项目的方法与引用其它项目的方法一样: dependencies { compile project(':libraries:lib1') compile project(':libraries:lib2') } 注意:如果你要引用多个库,那么排序将非常重要。这类似于旧构建系统里面的project.properties文件中的依赖排序。

  • Gradle 项目可以通过多项目配置依赖于其它 Gradle 项目。通常使用多项目配置会将所有库项目(如 lib1、lib2)添加到指定的根项目(如 libraries)。例如,给定以下项目结构: MyProject/ + app/ + libraries/ + lib1/ + lib2/ 我们可以找出3个项目。Gradle 将会按照以下名字进行映射: :app :librar

  • 在之前提到的多项目配置中,:libraries:lib1 和 :libraries:lib2 可以是 Java 项目,并且 :app 这个 Android 项目将会使用它们输出的 jar 包。然而,如果你想这部分代码能够访问 Android APIs 或者使用 Android 的资源,那么这些 Library 项目就不能是 Java 项目,只能是 Android Library 项目。

  • 是否有可能为我的Unity应用程序配置多个Firebase项目,而无需深入Android或iOS代码?我尝试简单地切换google-services.json文件,但这未能将我的Unity应用程序指向正确的Firebase应用程序。理想情况下,我希望能够做这样的事情: 或者更好的方法是从Resources文件夹传递适当的google-services.json。

  • 问题内容: 我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。 Module1使用Sqlline取决于 jline 2.10 Module2使用OtherLib取决于 jline 0.9.94 并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而M