出于安全原因,我需要导出不带源代码的库项目。不幸的是,库项目中生成的jar文件不包含资源。我不能期望这个图书馆的用户能够处理图书馆所需的任何资源。导出android库项目以供重用,无需源代码
已经有类似的帖子这一个,但我还没有看到一个解决方案。
出于安全原因,我需要导出不带源代码的库项目。不幸的是,库项目中生成的jar文件不包含资源。我不能期望这个图书馆的用户能够处理图书馆所需的任何资源。导出android库项目以供重用,无需源代码
已经有类似的帖子这一个,但我还没有看到一个解决方案。
以下配方中使用的工作,虽然我还没有尝试过最近:
第1步:获取库项目工作原样。我将把该项目的目录称为$ORIG
。步骤#2:如果您还没有这样做,请使用android update project
在$ORIG
中创建您的Ant构建脚本。
第3步:将任务添加到$ORIG/build.xml
,创建一个JAR文件,喜欢的东西:
<target name="jar" depends="debug">
<jar
destfile="bin/YOUR-LIBRARY-NAME-GOES-HERE.jar"
basedir="bin/classes"
/>
</target>
第4步:您的整个库项目从$ORIG
复制到另一个目录,我会打电话给$DIST
。
步骤#5:$DIST
摆脱src/
树除了根src/
目录本身。
步骤#6:将bin/YOUR-LIBRARY-NAME-GOES-HERE.jar
成$DIST/libs/
。这有效地将src/
的源代码替换为其编译的等效代码。
步骤#7:摆脱$DIST/bin/
,因为它不再需要。
$DIST
现在拥有一个Android库项目,该项目相当于$ORIG
,但src/
树被替换为libs/YOUR-LIBRARY-NAME-GOES-HERE.jar
。
由于SDK管理器中的Google Play服务包是以这种方式打包的,我不仅假设配方仍然有效,而且看起来似乎得到了官方认可。
请注意,作品中有新的构建系统,可能会给我们更多的选择。如果你在2014年阅读这个问题,一定要检查是否有更好的选择。
一个想法我听说过提及使用具有JAR文件这是你会把所有的专有代码的引用的规则库项目。所有资产都需要在您的图书馆项目中,并且可以由您的图书馆用户阅读。 请记住,任何拥有apktool的人都可以从最终的APK中提取这些文件。
然而,在JAR代码将无法读取和您的用户将需要逆向工程他们这是很困难的,特别是如果你混淆了。
这看起来不错,我会在今年的第一个之后尝试一下。 – RaiderJ