【问题标题】:Preparing Android API for distribution准备 Android API 以进行分发
【发布时间】:2011-08-17 22:56:09
【问题描述】:

我正在为 Android 开发一个 API,它运行良好,但我不确定如何打包/分发它。我已经将 API 的“内容”放入了一个 jarfile - 这是res/values/attrs.xml 中的所有类和一个 XML 文件(我不确定是否有一种方法用户可以引用它而无需复制我的 attrs.xml进入他们的 /values 文件夹,但这是另一个问题。

在测试用例中尝试我的 API 时,我已将我的 .jar 添加到构建路径中,如果我愿意,我可以成功导入一个类,但我不想:P 我的 API 允许用户实现自定义 View 到他们自己的 XML 文件中,所以没有在代码中实例化。

问题:用户如何在我的 API 中引用自定义视图?例如,如果我的视图名为 FooView 并且位于包 com.myfoo 中,则无法加载以下 XML:

<com.myfoo.FooView
android:layout_width="fill_parent"
android:layout_height="100dp"
/>

【问题讨论】:

    标签: android xml api distribution


    【解决方案1】:

    这是否必须打包到一个 jar 中,正如我看到的 facebook android sdk 他们给出了源代码。我将它设置为一个新的 android 项目,并从我的 android 项目中将其作为库引用。在这种情况下,我可以访问所有暴露的 apis

    【讨论】:

    • 它没有“必须”放在 jar 中。我只是认为 jarfile 对于新手开发人员来说会更容易,因为您需要做的就是将它添加到构建路径中。假设这是可行的,那就是。
    • 虽然我们谈到了这个话题:在你的例子中,你将如何在 xml 中引用来自 facebook 库的内容?没看过。。是com.facebook.SomeView这么简单吗?
    • 不,你不能直接访问 xmls,因为它是一个库,它会暴露一组 api,我们可以访问这些。如果你想提供一些元素,你可以在你的类中创建一个可以访问的方法并在我使用时归还。这有意义吗?
    • 检查设置部分,它会告诉你如何去做android10.org/index.php/articleslibraries/…
    【解决方案2】:

    您可能想查看Android Library Projects。这些基本上都是普通的android项目,可以作为库来引用。这意味着您可以像往常一样定义类、布局和资源,并在您的主应用程序(在本例中为您的客户端应用程序)中使用它们,就好像它们是在同一个项目中定义的一样。这允许您像上面通过 &lt;packagename.classname ... /&gt; 尝试的那样引用 XML 中的视图。

    虽然有一个巨大的缺点(这在您创建自定义视图时尤其重要):
    styleable-resources 根本不起作用。这是一个错误。 根据this question 的说法,它将在下一个 devtool 版本中修复。

    考虑到这一点,我建议使用测试库项目设置一个小型测试项目,看看您需要的一切是否正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2012-09-18
      • 2013-07-02
      相关资源
      最近更新 更多