当前位置:   article > 正文

Android Studio 导入framework.jar的两种方式_android studio 引入framework

android studio 引入framework

第一种:把framework的jar包放到工程目录外

1、把framework.jar包放到当前工程以外的地方。例如我放到SDK目录下。如下图

 2、在项目根目录的gradle中引入jar包

  1. String SDK_DIR = System.getenv("ANDROID_SDK")
  2. if (SDK_DIR == null) {
  3. Properties props = new Properties()
  4. props.load(new FileInputStream(project.rootProject.file("local.properties")))
  5. SDK_DIR = props.get('sdk/platforms.dir');
  6. }
  7. ...
  8. compileOnly files("$SDK_DIR/framework.jar")

 导入后我们可以在项目中导入的包 External Libraries 中找到“Gradle D”的包。是因为我的SDK在D盘下,framework包放在SDK包下。

3、引入后我们去使用会发现不会优先使用framework下的api。这是因为在项目中会默认优先使用android.jar的api。所以我们需要把framework包使用优先级排到前面。在根目录下的gradle中添加配置,在Xbootclasspath中添加framework.jar。然后添加prebuild配置使framework优先级在最前面。

  1. gradle.projectsEvaluated {
  2. tasks.withType(JavaCompile) {
  3. options.compilerArgs.add("-Xbootclasspath/p:$SDK_DIR/syslibs/framework.jar")
  4. }
  5. }
  6. preBuild {
  7. doLast {
  8. def imlFile = file(project.name + ".iml")
  9. println('Change ' + project.name + '.iml order')
  10. try {
  11. def parsedXml = (new XmlParser()).parse(imlFile)
  12. def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
  13. parsedXml.component[1].remove(jdkNode)
  14. def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
  15. new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
  16. groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
  17. } catch (FileNotFoundException e) {
  18. }
  19. }
  20. }

第二种:把framework的jar包放到工程目录下,如放到单独的目录或者lib目录都可以。(这里介绍放到单独新建的目录)如下

1、在项目目录下新建一个目录如 syslibs (名称随意)

 2、在项目根目录的gradle中引入jar包

compileOnly files("$rootProject.rootDir/syslibs/framework.jar")

 3、重复第一种的第三步,如下

  1. gradle.projectsEvaluated {
  2. tasks.withType(JavaCompile) {
  3. options.compilerArgs.add("-Xbootclasspath/p:$rootProject.rootDir/syslibs/framework.jar")
  4. }
  5. }
  6. preBuild {
  7. doLast {
  8. def imlFile = file(project.name + ".iml")
  9. println('Change ' + project.name + '.iml order')
  10. try {
  11. def parsedXml = (new XmlParser()).parse(imlFile)
  12. def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
  13. parsedXml.component[1].remove(jdkNode)
  14. def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
  15. new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
  16. groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
  17. } catch (FileNotFoundException e) {
  18. }
  19. }
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/985869
推荐阅读
相关标签
  

闽ICP备14008679号