问题标签 [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 - 如何“安装”Action Bar Sherlock?
我正在尝试使用 Action Bar Sherlock 构建示例项目“Action Bar Styled”。
我在这里http://actionbarsherlock.com/下载了包含 ABS 的 .zip 文件,但我不知道在哪里解压缩,以便它出现在 Project>Properties>Add library 上。
有人可以帮帮我吗?
另外,我在某处读到(现在找不到,抱歉)当前的 Android 兼容性库支持 3.0 之前版本的操作栏,因此它与操作栏 Sherlock 具有基本相同的“效果” - 有人可以证实这一点吗?我应该安装哪个库?
java - Android 应用程序和 (Android) 库架构
我正在设计一个 Android 应用程序,我有几个问题想听听你的意见。
现在,我正在考虑的架构如下:
- 用于用户界面的 Android 应用程序,
- 用于业务逻辑的库(Android 或“纯”Java?),
- 用于访问 SQLLite 数据库的 Android 库(将由业务逻辑使用),
- 用于访问 Wifi/BT 模块的 Android 库(将由业务逻辑使用)。
由于很可能在不久的将来可能会为 Win/Mac/Linux 开发此 Android 应用程序的基于 Java 的版本,因此我试图将业务逻辑与 Android 特定的 API 分开。
基本上,业务逻辑将需要使用嵌入式 SQLite DB 以及使用 BT 适配器并通过 Wifi 访问 Internet,例如,这可以使用两个专用的 Android 库来完成。问题是我希望业务逻辑只是一个“纯”Java 库,而不是建立在 Android 项目之上。根据这种架构是否可行,知道 Android 应用程序可能会有一个配置“模块”负责设置和配置,并在需要时启动两个基于 Android 的库。
当前选择的架构在您看来有意义吗?
您对此申请有何建议:
- 尽可能模块化,具有良好的抽象级别(在 DB 和 BT/Wifi 适配器上),
- 尽可能让业务逻辑与 Android API 保持清晰,
- 只需极少的更改即可使整个解决方案适应经典的 Java 应用程序。
提前感谢您的时间和意见。
android - Android 库项目:混淆并保留资源
我想用 Proguard 编译我的 Android 项目和一些额外的 Android 库项目。事实上,大部分代码和资源都在这些库中。
我已经在主项目的 project.properties 中添加了行“proguard.config=proguard.cfg”,我已经配置了 cfg 文件(-libraryjars ..\libs)。然后 - 右键单击,Android 工具 -> 导出签名的应用程序包。ADT 编译项目以供发布,但应用程序在第一次启动时崩溃:当我从日志中读取时,这是因为资源指针错误。
我反编译了项目,发现很奇怪:如果我在库中声明资源,那么它上面的资源指针就变成了0。
当我将行“proguard.config=proguard.cfg”添加到我所有的 Android 库项目的 project.properties 中时,问题并没有消失。
有什么解决办法吗?
编辑:查看 proguard.cfg 的片段:
android - Android 库项目 Jar + IntelliJ IDEA 11
我正在使用IntelliJ IDEA 11。
如何为我的 android 库项目创建 JAR 文件?
我有一个相同的 android 库项目及其 JAR 文件。我设法从Module Settings->Project Settings->Artifacs->+
我试图将我的 Jar 文件与原始文件进行比较,但内容不同。
任何人都可以确认我的程序是否正确?
android - 使用其他 3rd 方库的 Android 库项目
我有一个库 android 项目“Library”(包含活动和所有)和一个使用源代码中的“Library”的普通 android 项目“App”。库不是单独编译的。
一切正常。问题是使用第 3 方编译的罐子“外部罐子”。我的“图书馆”正在使用所有的“外部罐子”。“App”只能访问“Library”。“外部罐子”只能由“库”访问。
问题是“应用程序”需要在其构建路径中包含所有“外部罐子”,应用程序才能正常运行。那是什么必需品?“应用程序”不直接调用任何“外部罐子”。
所以我已经将罐子包含在“应用程序”和“库”中。有什么方法可以让“应用程序”在其构建路径中不必包含“罐子”?
我问这个是因为我担心额外的应用程序大小,并且因为我无法让 proguard 以这种方式工作。
java - Android 项目引用的 Android 库中的 Java 库抛出 NoClassDefFound
我有一个 Android 库项目(由我编写,我有源代码),我在我的 Android 项目中使用它——到目前为止一切都很好,没有问题。但是在那个库项目中,我引用了一个外部 .jar 文件(Bixolon 移动打印机的 SDK),它构建得很好,我可以在我的代码中引用 SDK 的方法。但是在运行时我得到这个:
这让我想知道,如果我在我的 Android 库项目中引用的 .jar 得到正确部署......我有一个来自 Bixolon 的示例项目,它直接包含他们的 .jar 文件(与我在我的 Android 库项目中引用的相同)和它工作正常。我已经确保在我自己的 Android 项目和我的 Android 库项目中是相同的(因为它在 Bixolon 提供的示例项目中定义)。所以我现在有点不知所措。不幸的是,我没有引用的 Bixolon SDK .jar 的源文件——只有 .jar。
java - 我们可以在android项目中使用任何jar文件(由java代码制作)吗?
我有一个使用导入的类,例如:
我们知道 Android 没有附带 java.awt.font.GlyphVector 或 font.FontRenderContext。
我可以为这个类“FontEx”制作jar文件并将其直接导入我的android eclipse项目并使用它吗???
..................................................... ………………………………………………………………………………………………………………………………………………………… ..................................................... ............
android - Android 库中复合组件的自定义样式
我想知道是否有一种方法可以为库中的 Android 复合控件(小部件)指定和样式。
我们已将库中的复合控件移动为可重用,但是当我们在 android 应用程序项目的活动中使用它们时,我们不知道如何指定自定义样式。
我们发现了这个有用的博客,可以做类似的事情,但它必须将自定义样式指定为应用程序主题,我们希望将一种样式直接应用于复合组件。
我已经尝试过这样的事情,但应用程序崩溃了。
android - 对于android库项目,是在清单中有意义吗?
这几乎都在标题中。尽管我在我见过<uses-sdk>
的所有示例库项目中都看到了指定,但AndroidManifest.xml
我觉得这无关紧要。
事实上,我怀疑这<uses-permission>
也是无关紧要的,除了 , 之外的所有属性也是<manifest>
如此package
。
任何人都可以确认吗?
android - 如何在 Android 上使用带有 c 和 java api 的库项目
我在 google android-ndk group 中问过这个问题,但没有得到任何答案。
我正在尝试通过单击“Is Library”在独立项目中构建一个通用模块是 Eclipse。本项目同时提供c api和java api。虽然其中一些 API 是相关的。(这意味着将它们分成 2 个项目并不是一个好主意)让我们将其命名为 common 和 libcommon.so。
当我在另一个项目中使用这个库时(假设 testcommon),我在项目资源管理器中将公共项目添加为 Eclipse 中的库 - > 属性 - > Android - > 库 - > 添加。但这只会让我有可能在库中使用 java api。
我还在 testcommon 项目的 android.mk 中添加 libcommon.so 作为 PREBUILT_SHARED_LIBRARY,以便我可以访问 c api。( 如下 )
这样,ndk-build 是成功的,但是当我运行它时,出现以下错误:
我认为这是因为对库和预构建共享库的引用都将 libcommon.so 添加到 testcommon 项目中。事实上,我测试过只引用该库或添加预构建共享库,它们都将 libcommon.so 复制到 testcommon。
问题是,如果我需要一个同时具有 c 和 java apis 的库,我该怎么办。(不仅是代码)
谢谢
阅读后共享库可以调用另一个共享库吗?,我找到了解决这个问题的方法,但仍然不太确定。
在 Android.mk 中使用以下行代替 PREBUILT_SHARED_LIBRARY 也可以使本机部分正常工作,并且不会以这种方式复制库。这样可以修复重复的副本。
这在我之前的测试中无法工作的原因是即使这样,两个库都应该在 java 中加载,而不仅仅是 libtestCommon。
我想我现在很清楚了。
LOCAL_SHARED_LIBRARIES 和 -L plus -l 都应该在 NDK 中正常工作。
问题是当我打电话时
它会尝试在 /data/data/$(app path)/lib (System.java::loadLibrary --> Runtime.java::loadLibrary --> DexPathList.java::findLibrary )找到so文件,但是当 libtestCommon 尝试要找到它的依赖项 libCommon.so,它只会在 /vendor/lib 和 /system/lib 中找到它,因为
如果我首先调用 System.loadLibrary("common"),dlopen 会将其加载到缓存中(Linker.c::alloc_info)。我猜这使得 libtestCommon.so 加载 libCommon.so 成功。所以一切正常。
我还注意到 ndk-r7 中 SYSTEM-ISSUES.html 末尾的这些词:
- 一个错误会阻止一个应用程序共享库依赖于另一个应用程序共享库。例如,如果您为您的应用程序同时构建 libfoo.so 和 libbar.so,并在 bar/Android.mk 中将 libfoo.so 列为 libbar.so 的依赖项(使用 LOCAL_SHARED_LIBRARIES := foo),那么加载 libbar.so 将总是失败,即使你已经在你的进程中加载了 libfoo.so。
有一点不同。如果我已经在我的进程中加载了 libfoo.so,那么 libbar.so 将会成功。
所以,最后的答案是:
- 如果您需要 android 库项目中的任何共享库,请使用 LOCAL_LDFLAGS := -Lxx -lxx。
- 您必须为所需的每个共享库调用 System.loadLibrary。这也是在一个库中使用另一个共享库的方法。
- /libs/ 的库路径放在/data/data//lib/。