• Android项目如果要将自己写的类写成要单独打成jar包?


    需求条件:

    自己没做过android,公司android开发临时有事请假了,老板说让我研究研究,反正都是java。我心里“XXXXXX”。这篇用来自己做个记录,老手请略过,Android新手临时替岗而已。前提是自己的类中含有用到Android的类库

    解决方案:

    这module新建的时候选择,不要选择"Java Library"而要选择"Android Library",然后利用引入依赖后,用打包脚本排除相关类就可以了。Gradle的build脚本示例: ```java apply plugin: 'com.android.library'

    android {
    compileSdkVersion 28
    publishNonDefault true

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    }
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    

    }

    dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    /*新增*/
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.6'
    implementation 'com.google.code.gson:gson:2.6.2'
    

    }

    //Copy类型
    task makeJar(type: Copy) {
    //删除存在的
    delete '/libs/JXSDK.aar'
    //设置拷贝的文件
    from('/build/intermediates/packaged-classes/release/')
    //打进jar包后的文件目录
    into('/libs/')
    //将classes.jar放入build/libs/目录下
    //include ,exclude参数来设置过滤
    //(我们只关心classes.jar这个文件)
    //过滤不需要的class
    exclude "//BuildConfig.class"
    exclude "//BuildConfig$.class"
    exclude "/R.class"
    exclude "
    /R$
    .class"
    include('classes.jar')
    //指定打包的class
    include "com/test/**/*.class"
    //重命名
    rename ('classes.jar', 'JXSDK.jar')
    }
    makeJar.dependsOn(build)

    <p><h>注意要点:</h1></p>
    <p>1、最新情况,最新版本3.2.1的Android Studio中已经将“bundles”文件夹改为了“packaged-classes”文件夹,网上教程过时了</p>
    <p>2、打包脚本中可以用“gradlew build”在“output”文件夹中生成aar格式的包,如果需要也可以用</p>
    <p>3、打包脚本中可以用“gradlew makeJar”在执行gradle的打包脚本任务的时候,目录一定要按照自己的目录配置,Android的目录约束好像会变!</p>
    <p>4、如果现有程序中新建module,如果android版本不一致会有问题,这个时候最好新建一个项目将需要打包的类做个迁移</p>
    <p>5、打包过程中如果两个module的“AndroidManifest.xml”文件中的包名相同会报错,最好设置不同报名</p>
    <p>6、Android的依赖管理在module之间如果不引用是独立的,每个module的“gradle.build”文件中都可以单独定义“dependencies”并且打包路径也是相对于当前module的路径</p>
    <p>7、其他有的打jar包教程中说的需要在默认app项目的“gradle.build”中添加“compileproject(':sdk')”,现在要改为“implementation project(':sdk')”才可以</p>
    <p>纯手打发泄一下情绪,也希望对其他人有帮助转载请注明出处!</p>
  • 相关阅读:
    PHP-redis中文文档
    非关系型数据库Redis学习(3)
    非关系型数据库Redis学习(1)
    【Android】找不到类
    【leetcode】删除单向链表的节点
    【上海交大oj】数学题3(数位dp)
    【上海交大oj】括号匹配加强 (动态规划)
    【上海交大oj】纸来纸去(动态规划)
    【上海交大oj】1053 二哥的内存
    【上海交大oj】畅畅的牙签袋(改)(枚举+模拟)
  • 原文地址:https://www.cnblogs.com/jpfss/p/9883200.html
Copyright © 2020-2023  润新知