问题标签 [android-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何使用为 1.6 以上的 Android 制作但针对 2.3.3 的库?
我正在尝试在我的项目中使用一些 Android 库,但我遇到了最低 SDK 版本和目标 SDK 版本的问题。我正在谈论的库是这个 ActionBar。它在自述文件中说“该项目旨在为 Android 1.6 和最高 3.0 提供可重用的操作栏组件”。
我想将我的应用程序定位为 1.6(如果我碰巧需要一些更高的 API,我会在必要时对其进行更改),因此我为 ActionBar 创建了一个 Eclipse 项目,构建目标为 API 级别 4 (1.6)。尽管库minSdkVersion
设置为 4(并targetSdkVersion
设置为 10),但该项目无法编译。确切地说,我认为属于 API 级别 10 (2.3.3) 的错误有 3 个,其中至少一个我肯定知道,因为它正在尝试使用Build.VERSION_CODES.GINGERBREAD
,而 API 级别 4 上不存在。
这个库为什么支持“Android 1.6 和最高 3.0”,甚至没有考虑到 1.6 编译,因为它使用了更高 API 的东西?
好吧,我想,让我们将 API 级别设置为 10,看看会发生什么。错误消失了,现在我只有一个警告,就像这个一样。我可以忍受,这没什么大不了的(但如果有任何方法可以从 Eclipse 中删除它,请告诉我)。
然后我创建了面向 1.6 的项目,我将库引用到我的项目中,但我无法编译/运行它,因为与上面相同的错误也适用于此。
我该如何解决这个问题?如果该库据称支持"Android 1.6 and up to 3.0",我该如何在针对 Android 1.6 的项目中使用?
android - 从 Android 库调用非库代码
自从 Android 引入库项目以来,我一直在将我的应用程序转换为库,以便我可以制作几个经过适当调整的版本(例如,使用相同代码库的免费版和专业版,但改变了一些东西)。
我最初在允许库项目的代码访问我的子项目中的字段时遇到了麻烦。换句话说,我的免费版和专业版都有一个类,其中包含一些常量,库项目将使用它们来区分某些特性。
在子项目中,我扩展了库的主要活动并添加了一个静态初始化块,它使用反射来更改库中字段的值。
在这段代码中,ConstantsHelper 在库中,我从我的子项目中提供了 Constants.class。这将初始化库项目中的常量。
我的方法效果很好,除了一个特定的用例。当应用程序有一段时间没有使用并且被操作系统“停止”时,ConstantsHelper 中的静态字段会被遗忘。
常量应该由主要活动重置(如上所示),但主要活动甚至没有启动,因为操作系统恢复了不同的活动。这样做的结果是常量的初始化被忘记了,我无法重新初始化它们,因为恢复的活动在库中(它不知道子项目)。
如何“告诉”库中的其他活动在恢复时从子项目中调用代码?或者,有没有办法确保我的子项目中的某些代码在每份简历上都被调用?
android - 生成的 R 冲突
我有一些我正在集成的 Android 项目。
这类似于:
(Lib 项目) Android_Commons RichReader FacReader WWReader
主项目是 ReaderShelf,并将所有这些项目作为库添加到它的路径上。
但是链接的源代码存在编译错误,在 R 类上找不到库中的 id。
我打开了所有的 R 文件,它们是所有原始 R 文件的合并。
但是从源代码打开时会出现错误:
他们打开了正确的文件,但没有 r_sections 和 r_navigate。
PS:不给出错误的 r_search 是一个常见的 id,它也出现在 Main 项目中
实际上,我发现了另一个奇怪的行为,注释有问题的行,代码编译,但是打开时,DPReaderActivity 在所有 findViewById 上返回 null。
编辑:我看到了构建项目的日志,我发现了这个,我不知道它是否有帮助
java - 无法启用探头/传感器
我正在使用funf框架来访问用户手机上的 SMS。
该框架由几个包组成。提供的探针都扩展了抽象类 Probe。
为了利用该框架,我编写了以下类:
因为 SMSProbe 类的方法被声明为受保护,所以我编写了 SMSmessage 类:
但是当我运行此代码时,它应该打开探针时失败,请参阅此错误:
抽象类 Probe 中的方法 enable():
我做错了什么?因为我的类 SMSmessage 最终继承自 Probe,所以我认为这是有效的。
我希望 Funf 的开发者之一能读到这篇文章。
谢谢你。
android - 如何让 Proguard 忽略外部库?
我想使用 Proguard 主要是出于混淆的原因。
我的问题是我有三个库,Twitter4J 和两个路标库。当我尝试创建签名的 APK 时,这些库会导致错误。为了克服这个问题,我将以下内容放入proguard.config
文件中......
虽然这消除了控制台中的错误,但当我将签名的 APK 加载到手机上时,它立即崩溃了。DDMS 说这是由于 Twitter4J 中没有的类。
摆脱"dontwarns"
上述没有帮助。也没有添加dontshrink dontoptimise
。
我希望 Proguard 完全忽略这些库(因为它们无论如何都是开源的)。这可能吗?
android - 有没有办法在一个项目中使用 Roboguice 和 ActionbarSherlock?
我想在一个项目中使用标题中提到的库。
但是,两者都需要我的活动从一个特殊的活动类扩展:对于 Roboguice,它是 RoboAcitivity,它是 ActionbarSherlock 的 FragmentActivity。
ActionbarSherlock 扩展了兼容性库,很好,因为我还需要使用片段,并且项目级别 s < API 级别 11。
有没有人成功做到这一点?由于Java不支持多重继承(这通常是一件好事),所以我尝试在ActionbarSherlock项目中制作FragmentActivity来扩展RoboActivity而不是标准Activity。但我不能让它以这种方式编译。
控制台输出的一部分是:
android - 如何覆盖(或隐藏)Android 库项目中定义的样式属性?
我有一组类似的应用程序。我将公共资源和代码提取到库项目中,而应用程序只是覆盖了他们需要的东西。在我的库中定义了以下样式:
如您所见,它包含android:layout_toRightOf
属性,因为此样式将应用于 ListView 行中的文本,该行应显示在该行中图像的右侧。
但是,在我的一个应用程序中,我想在图像下方显示文本。应如何定义该应用程序中的ListItemText
样式以覆盖android:layout_toRightOf
属性值并将其替换为android:layout_below
?
如果我将其定义为:
它在图像的右侧和下方显示文本,有效地总结了库和应用程序样式 XML 的属性。
ps:我的问题的一种可能的解决方案是摆脱android:layout_toRightOf
样式并将其移至布局xml。然后在目标应用程序中可以重新定义/覆盖这个布局。但我正在寻找基于样式的解决方案,因为它可以提供更简单直接的属性覆盖方式。
(我也可以将继承的样式与parent
属性一起使用,但这将再次需要在应用程序中覆盖布局,我尽量避免)。
android - Android Library 目标编译和 Android 以后版本中的对象
我正在构建一个 Android 库,并且有一种方法可以获取有关设备的一些信息。我们的目标是支持 2.2 及更高版本,但想知道是否有一种方法可以收集更高版本中引入的信息(例如 2.3 中的设备序列号)并让应用程序设置为 2.2 版本进行编译。
在四处搜索后,我发现人们使用如下代码:
但是,由于存在此代码,当将构建目标设置为 8 时,使用我们的库的示例应用程序无法构建。有什么建议,或者我们是否必须与将目标设置为 9 的客户一起获取此信息?
android - Can't compile with Android Library Projects
I have two Android Library Projects in Eclipse (yes, "Is library" is selected in both of them). One of those is ActionBarSherlock, the other one is ViewPagerIndicator
Now, ViewPagerIndicator must include ActionBarSherlock as a library dependence, so I add it under the "Android" settings of the project. Problem is, in the moment I add the library dependence, if I go to Java Build Path of the same project I can see that the dependence .jar of the added library is required but not present (of course, as it is a library project, no jars are created!).
What can be the problem? Furthermore, I have to add both libraries as dependences to an Android application, which presents the same issue.
android - 更新到 ADT 14 后“转换为 Dalvik 格式失败,出现错误 1”
更新到最新的开发人员工具 ADT 14 后,我的包含库项目的 Android 项目将不再运行并产生错误:
使用包括删除和重新添加项目的解决方案描述此问题的其他线程不起作用。