zoukankan      html  css  js  c++  java
  • 【Android端】代码打包成jar包/aar形式

    Android端代码打包成jar包和aar形式:

    首先,jar包的形式和aar形式有什么区别?

    1、打包之后生成的文件地址:

    *.jar:库/build/intermediates/bundles/debug(release)/classes.jar

    *.aar:库/build/outputs/aar/libraryname.aar

    区别:jar包只包含了classes文件,不包含资源文件;aar不仅包含了classes文件,还包含资源文件

    并且,aar的这个可以发布到maven库,然后使用者直接通过更改版本号就可以获取到最新的aar文件

    有一篇文章讲的还不错,但是对于更详细的内容可能有点少,导致踩坑了,具体链接见:http://www.voidcn.com/blog/q610098308/article/p-6059440.html

    然后,jar包打包方式及最终打出来之后的具体使用

    首先需要进入到的目录是:

    然后这里其实就是:首先进入到主目录-build-intermediates-classes-debug目录中,直接调用jar cvf 生成的jar包名称 要添加的.class文件

    具体如上面所示:jar cvf classes.jar com/ganji/android/LeakUploadService* com/ganji/android/UploadThread.class,其中classes.jar就代表 要生成的jar包名称;然后后面跟的com/ganji/android/LeakUploadService*代表要添加的class文件(可能存在LeakUploadService.class,如果有内在函数的话,可能还会存在LeakUploadService$1.class这样的形式,可以通过*来作为通配符进行匹配),如果有多个文件可以通过加空格进行多个文件的区分,就类似上面的格式,jar cvf classes.jar A.class B.class C.class

    然后之后会在debug这个目录下生成你需要的jar包,如果需要配置版本号的话,后面查询相关资料再做补充

    最后,aar包打包方式及最终打出来之后的具体使用:

    aar形式的打包,首先在Android工程里面通过File-New-New Module

    之后选择:

    之后可以把module的这个名字改成自己想要的即可,比如test:

    之后你看到的这个android library的这个test的module的结构是这样的:

    然后自己的需要,在java-main下面将需要最终构建成aar包的文件放进去之后,然后这里记得,要把AndroidManifest.xml中的文件,将android:label="@string/app_name"这一项内容去掉,否则其他APP在调用这个的时候,就会遇到AndroidManifest.xml的文件会存在冲突(和其他的app自己的AndroidManifest.xml文件);同时如果需要用到

    之后build-Rebuild Project,编译整个工程就会自动生成aar包,具体路径就在:新建的Module-build-outputs-aar的这个目录下,如下方的图所示:

     

    ——————————————————————————————————————————》》》

    aar打包结束之后,就是其他的app使用这个aar文件,首先,将这个aar的文件拷贝到libs目录下,然后在工程主目录的build.gradle里面配置dependencies文件,配置例如:

    compile(name:'test-1.0', ext:'aar'),这个test-1.0就是导入到libs下面的这个名字,上面生成的aar的名字其实是可以修改的,完整的build.gradle文件如下:

    apply plugin: 'com.android.application'
    
    repositories {
        flatDir { dirs 'libs'} // 引入AAR
    }
    dependencies {
        compile fileTree(include: '*.jar', dir: 'libs')
        compile(name:'leakupload-1.0', ext:'aar')
    }
    android {
        compileSdkVersion ANDROID_BUILD_SDK_VERSION as int
        buildToolsVersion '21.1.2'
    
        compileOptions {
            encoding "UTF-8"
        }
        defaultConfig {
            // Enabling multidex support.
            applicationId "com.ganji.mytest"
        }
    
        lintOptions {
            checkReleaseBuilds false
            abortOnError false
        }
    
        dexOptions {
            jumboMode = true
            javaMaxHeapSize "2g"
            //preDexLibraries = false
        }
    
    
        buildTypes {
            debug {
                signingConfig signingConfigs.release
            }
            release {
                signingConfig signingConfigs.release // 签名
                shrinkResources true // 去除未使用资源
                minifyEnabled true // 混淆、去除未使用类
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
            }
        }
    }

    然后:会提示sync now,或者直接点击:这个按钮,点击同步之后,就会将这个aar的内容同步出来,在java-main中的代码里有import这个aar的,import正确的话代码的错误提示就会消失,同时在External libraries中也会出现这个aar文件的结构。

    出现的aar结构见下方:然后就说明添加成功了,具体调试和使用就是后话了

    ——————》》将aar发布到maven上,比如发布到maven私服上之后具体如何调用,见下方:

  • 相关阅读:
    狄慧201771010104《面向对象程序设计(java)》第十六周学习总结
    狄慧201771010104《面向对象程序设计(java)》第十五周学习总结
    狄慧201771010104《面向对象程序设计(java)》第十四周学习总结
    201771030122-王瑞梅 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告
    201771030122-王瑞梅 实验一 软件工程准备—<初读《构建之法--现代软件工程》>
    软件工程学习总结
    团队项目在GitHub合作开发管理流程
    2020 软件工程—— 中期获“衣”有感
    201771010131-王之泰 实验四 软件项目案例分析
    数据库连接和导出excal
  • 原文地址:https://www.cnblogs.com/keke-xiaoxiami/p/7230258.html
Copyright © 2011-2022 走看看