导出android库项目,无需源代码即可重用

时间:2012-12-28 21:03:13

标签: android library-project

出于安全原因,我需要导出没有源代码的库项目。不幸的是,库项目中生成的jar文件不包含资源。我不能指望这个库的用户可以处理库所需的任何资源。

这个帖子有类似的帖子,但我还没有看到解决方案。

2 个答案:

答案 0 :(得分:8)

以下配方曾经有用过,虽然我最近没有尝试过:

步骤1:让图书馆项目按原样运行。我将把这个项目的目录称为$ORIG

步骤2:如果您还没有这样做,请使用$ORIGandroid update project中创建Ant构建脚本。

步骤3:向创建JAR文件的$ORIG/build.xml添加任务,如:

<target name="jar" depends="debug">
  <jar
      destfile="bin/YOUR-LIBRARY-NAME-GOES-HERE.jar"
      basedir="bin/classes"
  />
</target>

步骤4:将整个图书馆项目从$ORIG复制到另一个目录,我称之为$DIST

步骤5:删除src/ 中的$DIST树,但除了src/目录本身。

第6步:将bin/YOUR-LIBRARY-NAME-GOES-HERE.jar移至$DIST/libs/。这有效地将src/中的源代码替换为其编译的等效代码。

步骤#7:摆脱不再需要的$DIST/bin/

$DIST现在拥有一个相当于$ORIG的Android库项目,但src/树已替换为libs/YOUR-LIBRARY-NAME-GOES-HERE.jar

由于SDK管理器中的Google Play服务包是以这种方式打包的,因此我不仅假设配方仍然有效,而且看起来似乎得到了合理的正式认可。

请注意,工作中有新的构建系统可能会为我们提供更多选项。如果您正在阅读2014年的问题,请务必检查是否有更好的选择。

答案 1 :(得分:0)

我听说过的一个想法是使用一个常规的L​​ibrary项目,引用一个Jar文件,这是你放置所有专有代码的地方。所有资产都需要在您的库项目中,并且您的库的用户可以读取这些资产。 请注意,apktool的任何人都可以从最终的APK中提取这些文件。

但是,JAR中的代码不可读,并且您的用户需要对它们进行反向工程,这可能很困难,尤其是如果您对其进行模糊处理。