Android Studio 添加 系统jar包

文章目录

  • 前言
  • 1、添加jar
  • 2、配置Dependency
  • 3、配置依赖Order
  • 4、配置编译Option
  • 5、导出apk

注意:这篇文章转载自 Andro-bot的博客


前言

使用eclipse添加framework.jar很简单,但Android Studio上却很麻烦,上一次遇到这个之前百度了两天才解决,但是也是属于一个个办法瞎碰。结果这次我又不知道怎么搞了,就继续百度呗!还好毕竟搞过了一次,还是有点记忆在的,并且运气好看到了这篇博客,它已经把步骤讲的很清晰了,我只做了些小小的改动,就解决了问题。吸取上一次的教训,我决定写这篇博客记录过程,免得下一次又要茫茫网络大海捞针。
开发环境为:Android Studio3.1 ,win7。


1、添加jar

将framework代码打包成classes.jar拷贝至libs文件夹下;将项目栏从Android模式转换为Project模式可以看到libs文件夹,如果没有可以在app文件夹下创建。
添加jar后,右键点击jar,选择 Add As Library选项,弹出弹窗选择ok。


2、配置Dependency

点击File,选择Project Structure,进入,点击最下面的app,看到Dependencies,下面已经有我们刚添加的jar了,将其的Scope从 implementation 改为 compileOnly,进入build.gradle文件,如果有implementation fileTree(include: [’*.jar’], dir: ‘libs’),注释掉,这个的意思是要implementation libs下的jar。
如果你的dependencies是下面这样的话,这一步骤就算完成了。

dependencies {
    //implementation fileTree(include: ['*.jar'], dir: 'libs') //看这句和最下一句 中间随意
    implementation 'com.android.support:leanback-v17:27.1.1'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.github.bumptech.glide:glide:3.8.0'
    compileOnly files('libs/classes.jar')
}

3、配置依赖Order

经过1、2步配置仍有SDK中找不到变量的错误,这是需要修改Module的.iml,打开app.iml文件,找到最下面的orderEntry部分,更改依赖顺序:

 
 //中间一长串是我的jar和项目地址,每个人都不一样

将其移动至


代码行前面,保存。
这时候执行sync,那些找不到的变量就不再报错,但是BuildAPK仍然会出错。
注意:这个iml的顺序每次在sync之后都会变回默认的,sync完记得再把对framework的Dependency移到SDK前面。这个iml文件依赖顺序仅仅是影响静态编译检查,不影响Build APK,也就是说下面的编译option配置正确,纵使有错误提示也不影响APK的生成。
: 在我把AS升级到3.3之后,发现这种方式失效了,虽然并不影响编译,但文件标红真的很影响观感。就在我犹豫要不要回滚3.2的时候,3.4更新到了,有趣的是,升到3.4之后这个问题又消失了。。。


4、配置编译Option

尽快前三步已经可以消除编译错误,但是在真正BuildAPK时仍会报错,这样就需要添加编译参数,在生成APK时优先使用framework.jar。
在Project的build.gradle中添加:

allprojects {
    repositories {
        google()
        jcenter()
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\classes.jar')
        }
    }
}

上面添加的路径: app\libs\classes.jar 为添加framework.jar相对路径。因为是windows下,所以路径采用\\分隔符。


5、导出apk

导出APK 可以参考 me_lwj 的《android studio导出apk》这篇文章。

你可能感兴趣的:(Android)