(我已经解决了我的问题,所以编辑它看起来更像是博客文章 - 最终的工作解决方案已被放置为下面的"答案".)
我想将我们的BB库(v4.5或v5.0)打包成JAR格式,因此我们可以将应用程序源代码提供给客户端而不提供库源代码.
目前,我的SDK和我的应用程序都使用源代码进行设置,作为同一工作区中的不同项目.所有项目都要编译 我的SDK设置为库项目,我的应用程序作为应用程序.
在每个应用程序中,我将SDK项目添加到构建路径.
Eclipse完美地处理构建,创建各种COD文件.我将COD文件复制并解压缩到同一文件夹中,运行updatejad
以组合JAD文件,最终得到完美安装的许多COD文件.
问题是 - 库必须是源代码.
关于此,有许多相互矛盾的信息来源.这个过程很简单,但没有很好的记录.在某些尝试中,我遇到了以下问题:
不幸的是,似乎从RIM引用的主文档不正确 - 详情如下.
(我希望可以将这个问题与以下长链接列表交叉引用?)
StackOverflow链接:
这个给出了其他链接 - 非常有用:
这些不太有用:
轮缘:
我正在创建一个除了显示一些静态信息之外什么都不做的基本小部件(这是我的教程演示练习).
我的widget提供程序XML看起来像:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialKeyguardLayout="@layout/widget"
android:initialLayout="@layout/widget"
android:minHeight="72dp"
android:minWidth="294dp"
android:updatePeriodMillis="60000" >
<!-- NOTE 1: -->
<!-- Widget sizing is done in terms of "blocks" on the screen. -->
<!-- Each block is 74dp square. -->
<!-- NOTE 2: -->
<!-- OLD & WRONG FORMULA used to be: size = (n*74) - 2 -->
<!-- NOTE 3: -->
<!-- NEW FORMULA has been UPDATED: size = (n*70) - 30 -->
<!-- Based on new formula, the size should be …
Run Code Online (Sandbox Code Playgroud) 这是一个特定于棒棒糖的问题,因为API已经发生变化.要了解如何在早期版本上执行此操作,请参阅相关问题:
我想知道如何在状态栏中打开/关闭系统警报图标,如下图所示:
从版本1.3开始,及时闹钟控制Lollipop上的此图标.在该版本之前,代码使用了相关问题中详述的私有API.
他们使用的新技术适用于运行v5.0.1的无根Nexus 5.
看起来这个新API还有很多,而不仅仅是更改图标.锁定屏幕现在还显示我为其设置闹钟的时间.
android alarm alarmmanager undocumented-behavior android-alarms
更新:这是一篇旧帖子,下面对破损aapt
版本的引用将会过时.
根据之前的反馈,我将自定义文本字段存储在我的应用程序的assets目录中.
我将使用资产文件中的默认用户详细信息编写应用程序,并且客户端希望为每个用户重建应用程序,包括资产文件中该用户的详细信息.
(我知道这种方法有一些严重的缺点,但客户仍然热衷于这样做 - 请参阅APK文件中的嵌入登录详细信息,每个用户(或其他选项?)不同)
这个问题与我重建APK文件时遇到的麻烦有关,一旦我解压缩它,并更新了自定义资产文件.我确信我错过了一些小的东西,然而,我在这些方法上找到的文档和帖子对于新手来说是没有用的.
aapt - Android sdk工具:不幸的是,Android文档[下面的链接2]上的"使用aapt"的android文档是非常有限的.控制台命令-help显示更多信息.当尝试使用它只是将文件添加到test.apk时,它最终会删除原始文件,并创建一个新文件test.apk.zip,其中只包含我尝试添加的文件.我无法找到正确的命令行组合来获取解压缩的apk并重新打包 - 这将是我的第一奖.
apkbuilder - Android sdk工具:首先,这个工具已被弃用,这是一个负面因素.我也无法使用它在解压缩文件夹中的工作.我想我错过了一个apkbuilder之前的步骤,因为apkbuilder请求资源zip存档,我有一个资源文件夹.
ant - build工具:其他类似的帖子说用ant构建,而不是使用android工具.我无法上班.获取Ant与Android合作的一个特定链接[下面的链接3]看起来很有希望,但看起来它是针对不同的android sdk(我的build.xml由android生成看起来与他不同).不幸的是,我对蚂蚁知之甚少,而且很难成为足以解决我当前问题的专家.
继下面的NickT解决方案 - 运行ant脚本给我错误
taskdef类com.android.ant.SetupTask无法使用类加载器AntClassLoader []找到.
我在网上找到了一些关于这个错误的引用,已经确认local.properties有一个指向我的android sdk安装文件夹的sdk.dir设置(sdk.dir =/Applications/android-sdk-mac_86).
?????:可能还有其他一些我未列出/发现的选项,我有兴趣听到.
我意识到深入研究通常由我的ide所掩盖的齿轮会导致困难.但我知道很多SO用户可以做很多这样的事情,我希望我能引起其中一些人的兴趣.谢谢你的帮助.
(Mac Snow Leopard 10.6 64位上的Eclipse 3.6)
PS,我还不能发布超过1个超链接,所以我已经包含这些地址以显示更多信息给我的问题.
(1):stackoverflow.com/questions/4783160/embed-login-details-in-apk-file-different-for-each-user-or-other-options
(2):developer.android.com/guide/developing/tools/aapt.html
(3):www.disgruntledrats.com/?p = 27
我无法为我们的生产应用程序创建Ant构建脚本.
我一直在阅读很多关于Ant和bb-ant-tools的文章.我已经关注了很多关于Ant和BB的stackoverflow问题(在评论中引用以"链接"问题).我想帮助一个比通常的"Hello World!"更复杂的脚本.风格的应用.我当前的构建过程完全在Eclipse中运行,并手动完成.
对于这个问题,我想问一下如何使用Ant来构建一个使用2个(或更多个)不同库项目(也需要构建)的项目,而根本不使用Eclipse?
我安装了Ant,bb-ant-tools.我已经在设备上构建并部署了一个基本的Hello World,使用这些工具遵循基本示例.我创建了一个构建脚本和一些属性文件; 但是当我运行脚本时,最终产品不能在手机上运行(手机用户界面在启动屏幕上冻结).
我有3个构建脚本,每个库一个,主应用程序一个.这些是相同的,除了项目名称(并且可以在某个时候组合成一个通用的导入脚本).3个java项目中的每一个都有一个与之相关的Ant属性文件.我还使用3个常用属性文件来定义常量,在JDE上存储信息和代码签名密码.
common.properties:
jde.home=C:/development/tools/bb-jde/jde4.5/components
sigtool.jde = ${jde.home}
sigtool.password = xxx_pass_xxx
Run Code Online (Sandbox Code Playgroud)project.properties(用于SOAP库):
output=MySOAP
type=midlet
Run Code Online (Sandbox Code Playgroud)project.properties(用于内部SDK库):
output=MySDK
type=midlet
Run Code Online (Sandbox Code Playgroud)更新1:我已经更新了自初始发布以来的库属性文件.以前我设置type=library
(基于RIM文档).根据我在这篇文章中概述的研究(BlackBerry - 在自己的项目中使用自己的JAR文件),我尝试改为type=midlet
.这样可以获得更好的结果(至少在我的平台BB JDE 5.0上).
project.properties(对于我的应用):
output=MyApp
title=App
type=cldc
vendor=Richard
version=1.0.7
description=A nice app
icon=icon.png
Run Code Online (Sandbox Code Playgroud)build.xml(除了顶部的名称外,所有相同的,并且2个库脚本没有在import.jars中声明的文件集):
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyApp" default="build">
<!-- BLACKBERRY ANT TOOLS -->
<property name="bb-ant-tools.home" location="C:/development/tools/bb-ant-tools" />
<taskdef resource="bb-ant-defs.xml" classpath="${bb-ant-tools.home}/bb-ant-tools.jar" />
<!-- CONFIG FILES -->
<property file="${common.basedir}/common.properties" />
<property prefix="project" file="project.properties" />
<!-- FOLDERS …
Run Code Online (Sandbox Code Playgroud)这是后续行动:BlackBerry - 在自己的项目中使用自己的JAR文件和BlackBerry - 用于更复杂应用程序的Ant构建脚本.现在已经在下面解决了这个问题.
我想要:
重要的是使用Ant来完成构建的最后阶段.
我找到的针对此问题的所有帖子都使用Eclipse进行最终构建阶段(BlackBerry的详细信息- 在自己的项目中使用自己的JAR文件).
我可以用Ant构建最终项目.但生成的COD文件不包含我的库中的任何运行时代码.
我读过的很多帖子都展示了如何使用库的额外COD文件来完成这项工作.我想避免这个.
如何使用Ant将JAR包含到没有外部依赖项的项目中?我相信这是可能的,因为我可以使用Eclipse来做到这一点.
我目前的解决方法是将我的SDK /库项目作为源代码(根据esaj的答案)包含在内,而不是作为JAR文件.这比JAR方法有一些缺点,但我有一个成功运行在设备上的构建.
(我希望可以将这个问题与以下长链接列表交叉引用?)
StackOverflow链接:
这个给出了其他链接 - 非常有用:
这些不太有用:
我需要允许用户在设备锁定时使用我的应用程序快速捕获图像.我认为用户执行此操作的最快方式是通过锁定屏幕上的按钮/小部件 - 虽然我不确定如何构建它.
我发现的大多数参考文献都与音乐播放和RemoteControlClient的使用有关(可能只是Android 4.4?).在它最基本的时候,我只想要一个按钮来表示"捕获".有关如何做到这一点的任何帮助?
我在设备模拟器上调试我的BlackBerry应用程序,使用MDS模拟器访问Web.
今天我运行了一个Wireshark跟踪来捕捉我的应用程序的调用.我在流量开始之前看到了MDS模拟器发出的2个电话,希望有人可以向我解释.
他们似乎为模拟器返回了一些设置.
这些要求是什么?
我也想知道这些调用是否与我经常处理的MDS模拟器性能不佳有关 - 如果这个服务器没有响应,MDS模拟器会继续工作吗?
希望这对这里的BB专家之一有意义 - thx.
我已经定制了我的SeekBar - 我使用自定义图像作为背景,并使用自定义图像作为拇指(如何在Android中为搜索栏创建自定义布局?以及如何自定义Android中SeekBar的外观?).
我们的想法是制作一个看起来像这个图像中的SeekBar:
当progress
值设置为0或100(满分100)时,我希望拇指图像完美地适合圆角条.
为了正确定位拇指(即不与条形末端重叠),我将paddingLeft
&paddingRight
值设置 为拇指宽度的一半(Android:Seekbar不会一直滚动到结束).
.../RES /布局/ main.xml中:
<SeekBar android:id="@+id/frequency_slider"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100" android:progress="0"
android:progressDrawable="@drawable/seekbar_no_visible_progress"
android:thumb="@drawable/seekbar_thumb" <!-- this is an image -->
android:background="@drawable/hos_bar" <!-- this is an image -->
android:paddingLeft="24dp"
android:paddingRight="24dp">
</SeekBar>
Run Code Online (Sandbox Code Playgroud)
这适用于Android 2.1.
在Android 2.2中,这会产生不同的效果:
经过进一步调查(并以完全默认的方式尝试此操作后,SeekBar
我发现拇指图像的位置已从2.1变为2.2.我改变paddingLeft
&paddingRight
不是问题的黑客.
我想我需要创建一个自定义的java类来处理这类事情.在这个问题中(可以在自定义Progressbar progressDrawable中执行圆角?),开发人员使用a ClipDrawable
来生成正常的进度条.
我会使用什么类型的可绘制对象,以及如何正确定位我的拇指?
该templateMergeStrategy
属性在Android资源中的含义是什么?
例如,在Google Maps API密钥文件中
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">
AIza.......some...secret...key...
</string>
Run Code Online (Sandbox Code Playgroud)
我本来期望一个简单的谷歌(或duckduckgo)搜索给我结果,但不幸的是它似乎只给了我谷歌地图API问题.
不幸的是,该部门也缺乏关于"字符串资源"的Android开发人员文档.