是否可以创建包含android函数的jar?

时间:2012-07-11 09:18:29

标签: android jar obfuscation android-library

正如主题所示,我想创建一个使用一些Android功能(没有布局)的jar库,并将包含在Android项目中。 这可能吗?怎么样? 从我的研究中我设法包括一个使用纯Java(JAVA SE 1.6)的简单jar文件,但是 当我尝试创建一个jar文件时,当我尝试运行Andoid应用程序时遇到以下异常:
致命的异常:主要
java.lang.NoClassDefFoundError:mylib.pleasework.amen

我尝试在我的库中包含android.jar并删除java库,以便jar文件是针对android sdk构建的,但它不起作用。
我尝试将jar文件包含在/ libs文件夹下,因为它被认为是从ADT v17及之后导入Android项目中的jar的正确方法,但这也不起作用。
我想要创建的jar不会使用任何资源(xml布局,strings.xml)只是Log.d和WifiManager。
我知道Android库项目,但我的库源是敏感的,我担心它赢了如果在Android库项目中公开,则不安全。我正在考虑创建一个jar并使用ProGuard(http://developer.android.com/tools/help/proguard.html)对其进行模糊处理。 我想我提到了一切。任何帮助将不胜感激。

谢谢,
托马斯

2 个答案:

答案 0 :(得分:1)

  

正如主题所示,我想创建一个使用一些Android功能(没有布局)的jar库,并将包含在Android项目中。这可能吗?怎么样?

使用jar命令或<jar> Ant任务。我确信有从Eclipse中导出JAR的方法,但我个人从未使用它们。

例如,在this GitHub repo中,我有一个可重用的组件和一个子项目,它是一个示例应用程序。我的代理build.xml包含以下自定义任务:

<target name="jar" depends="debug">
    <jar
        destfile="bin/CWAC-WakefulIntentService.jar"
        basedir="bin/classes"
    />
</target> 

这会生成一个JAR文件,其他Android应用程序可以通过添加到libs/目录来使用它。

  

我知道Android库项目,但我的库源是敏感的,我担心如果在Android库项目中公开它将不安全。

它也不会被安全地暴露为JAR。您可以创建一个供公众使用的Android库项目,用库中src/中已编译的JAR替换libs/树的内容。

答案 1 :(得分:0)

我最终的方式是:创建一个Android库项目(在项目属性中选中isLibrary复选框)通过Eclipse导出它(右键单击project-&gt; export-&gt; jar文件,小心取消选择所有资源 - res文件夹,androidmanifest.xml,* .png等)并通过在/ libs文件夹下导入它将它放在你想要的项目中。
我不知道这是不是最好的解决方案,但它对我有用。
使用ADT r20,Eclipse 3.7.1,Android api 7级