Android项目导出jar包的小技巧

我们知道,可以通过如下设置将一个普通的Android工程转换成Android Library工程

android_library_project

设置前后工程变化如下

project_properties

使用Ant编译时(通过android.bat update project 命令生成 build.xml),普通的Android工程会生成apk文件,而Android Library工程只生成jar文件。由于要生成dex并打包apk资源,前者比后者要耗时不少。

有时我们需要从普通工程中导出部分代码生成jar包,可以手动完成

export_jar

或者,按照上面的做法,先将一个普通的Android工程转换成Android Library工程,再执行 ant release 或 ant debug

其实,还有一种更简单地方法:使用如下方式执行 ant release

ant release -Dandroid.library=true

编译后将生成一个classes.jar,编译输出如下

...
-compile:
      [jar] Building jar: F:\xxx\bin\classes.jar

-post-compile:

-obfuscate:

-dex:
     [echo] Library project: do not convert bytecode...
...

最后,我们还可以通过添加一个 custom_rules.xml 文件来对生成的jar文件进行更灵活地控制

<?xml version="1.0" encoding="UTF-8"?>
<project name="tinyUtils" default="help">
    <target name="-post-compile">
        <!-- copy from <sdk>\tools\ant\build.xml '-compile' task -->
        <if condition="${project.is.library}">
            <then>
                <echo level="info">Creating my library output jar file...</echo>
                <property name="out.mylibrary.jar.file" location="${out.absolute.dir}/my_classes.jar" />
                <if>
                    <condition>
                        <length string="${android.package.excludes}" trim="true" when="greater" length="0" />
                    </condition>
                    <then>
                        <echo level="info">Custom jar packaging exclusion: ${android.package.excludes}</echo>
                    </then>
                </if>

                <propertybyreplace name="project.app.package.path" input="${project.app.package}" replace="." with="/" />

                <jar destfile="${out.mylibrary.jar.file}">
					<!-- 自定义 -->
                </jar>
            </then>
        </if>
    </target>
</project>

总结

  1. ant命令中添加 -Dandroid.library=true 参数从普通Android项目中导出jar包
  2. 添加一个 custom_rules.xml 文件来对生成的jar文件进行更灵活地控制

转载于:https://my.oschina.net/apm/blog/278484

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值