我开发了一些可重用的android组件,它基本上是一个类。该类具有一些资源依赖性,例如一些png drawables,一些xml布局等等。所以这个类引用了自动生成的R文件。我想将这个代码分发到像jar文件这样的包中给其他开发人员,以便在他们的应用程序中使用。
我已经读过,唯一可行的解决方案是将代码与我的所有资源一起分发,其他人必须将其复制到“res”文件夹(source)。
所以我创建了一个jar文件,其中包含类文件(比如包含com.xyz.android.app
中的MyClass)和资源,并尝试在我的新应用程序中使用它。
所以我在eclipse中使用add external jars
选项将jar文件添加到我的新应用程序构建路径中,并将所有资源复制到我的新应用程序的res文件夹中。 (活动类说我的新应用程序的MainActivity在com.abc.myapplication
包中,只是对于它可能有用的情况)
但是当我运行这个新应用程序时,MyClass类中有java.lang.ClassCastException
。我试图调试应用程序,然后我发现在MyClass类中,存在“R无法解决”的问题。
然后我将MainActivity的包更改为com.xyz.android.app
(这不是其他开发人员乐意做的方式),但同样的问题也是如此。
但是当我只复制源java文件,使MainActivity.java和MyClass.java都在com.xyz.android.app包中时,应用程序运行正常。
因此,如果我需要分发其他用户不需要打扰这些包命名的东西, 我怎么能做到这一点?请帮忙!!
修改
在android.jar中,还有一些资源。它们如何在项目中引用?它们如何在android类中使用?还有android.R文件?
是不是可以做同样的事情,即为我的可重用代码制作像android.jar这样的jar文件?
答案 0 :(得分:3)
目前这并不容易。问题是使用你的jar的项目不知道在那里寻找drawables等。 好消息是它很快就会成为可能(希望SDK 2.2传闻将于下周在IO发布)。请参阅此博客文章http://mobilebytes.wordpress.com/2010/04/27/android-tools-version6-coming/
答案 1 :(得分:3)
正如Nic Strong所指出的那样,项目中没有任何内容可以用来管理它,目前有迹象表明即将对SDK工具进行的更改可能只会有所帮助。
我正在组织some other tools来帮助解决这个问题。我希望在几天内发布开发人员文档。
答案 2 :(得分:1)
我一直在http://github.com/commonsguy/cwac-parcel玩Mark Murphy的ParcelHelper课程。简而言之,它是一组方法,允许您通过名称访问“R”的组件,而无需在代码中导入“R”。
如果我理解你的问题,这正是你想要的。您可能仍需要将某些资源(例如样式)复制到项目中。