这已被谈过几次,成功的状态各不相同,但我能找到的大部分答案都是过去几年。
基本上,我有一个应用程序已经移动到不与客户共享的点。客户希望扩展应用程序,但我们不希望他们访问原始代码 - 保护所有内容的IP。
布局,图像等......好吧,我们不关心那些,只有java代码。我可以轻松地将java代码编译成jar并分发它,但这只是答案的一半。 java代码仍然引用了一大堆内部资源。
我正在使用的场景是jar文件包含以下内容:
在Jar文件中 - MyActivity扩展了Activity - MyActivity中的onCreate()将jarView设置为jar文件中的R引用布局。
在客户端应用程序中 - MyClientActivity扩展了MyActivity
运行此命令时,我在MyClientActivity上获得了ClassNotFoundException。
我注意到的事情: - 如果我将jar代码作为库附加,而不是jar文件,它可以工作。 - 如果我在MyActivity中删除onCreate()中的R引用并重新制作我的jar文件,它就可以工作。
所以,显然,如前所述,R引用已死/无法访问。问题是,这个显然可以工作,不是吗?如果你创建一个Android应用程序并查看自动包含的API,那么android.jar文件就有一个R文件,内部布局/字符串/等......这些文件正在代码中引用。
正如其他人之前所说,这似乎是一个非常基本和明显的使用模式。它看起来似乎不起作用这一事实令人难以置信,导致人们相信它确实有效,但它并没有以明显的方式完成。
有没有人真正让它上班?
非常感谢,
-Cord Awtry