为什么Eclipse在构建Android项目时会陷入构建工作区的无限循环......以及(重新)构建工作区......以及(重新)构建工作区...
这是一个已知的错误?
摆脱这个循环的正确方法是什么?
笔记:
Project > Build Automatically,它构建良好,甚至导出一个完美运行的签名版本APK.BuildConfig.DEBUG可能相关也可能不相关.但它没有在r18中修复???请不要"盲目拍摄":只有当你亲身经历过这种惊人的现象(并解决它)或者能够指出一篇经历过这种神奇现象(并解决了它)的文章时,才回答这个问题.
到目前为止,我一直专注于我的应用程序的编程,并且很少关注使构建过程更加智能.因此,我一直在手工操作("愚蠢的方式"),包括手动更新android:versionCode和android:versionNameAndroidManifest.xml.
我想现在自动(即在构建或出口时):
git包含构建和版本代码的最新标记/分支中获取.我找到了一些关于" 预构建步骤",构建器和build.xml的线索,但我不知道在哪里可以找到这些以及从哪里开始.
有关该主题的更多信息的任何提示或指示?(一步一步的教程是理想的)
更新1:我发现这个帖子暗示我:
Properties > Builders很好,但这里是该项目的蚂蚁构建文件?我在哪里找到它?
更新2:显然,可以将整个项目导出到Ant文件中.但我不确定这是我想要的.预构建步骤必须始终包含Ant构建文件吗?
更新3:正在构建一个Ant文件,仅用于预构建步骤,正确的方法吗?
在我的应用程序中,我发出以下声明:
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
Run Code Online (Sandbox Code Playgroud)
这对于运行Android 2.3.3的便宜的LG LS670非常有效,但在我拥有的所有其他手机上都没有,从Android 2.2.1到Android 2.3.4.
所以我知道操作系统版本在这里没有发挥作用(我还在文档中验证了它自API 1以来一直受支持).
此外,Ringer音量和媒体音量都设置为最大值,toneGenerator初始化为:
toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);
Run Code Online (Sandbox Code Playgroud)
我确认Settings.System.DTMF_TONE_WHEN_DIALING设置为1.
此不一致的行为(在不同的手机),百思不得其解,我检查了系统日志时发生这种情况,唯一的区别怀疑我能找到是谁的手机未能声音TONE_PROP_ACK在他们的日志这一行:
AudioFlinger setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121
Run Code Online (Sandbox Code Playgroud)
AudioFlinger的目的是什么TONE_PROP_ACK?它与静音有什么联系?
任何想法如何修复我的代码,使得TONE_PROP_ACK总会响起,无论手机型号的?
在我的onCreate()中,我设置了一个UncaughtException处理程序,如下所示:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
Log.e(getMethodName(2), "uncaughtException", throwable);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我想恢复系统向用户显示强制关闭对话框的默认行为.
如果我尝试KillProcess()用throw throwable编译器替换调用,抱怨我需要用try/catch包围它.
如果我用try/catch包围它:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
try {
Log.e(getMethodName(2), "uncaughtException", throwable);
throw throwable;
}
catch (Exception e) {
}
finally {
}
}
});
Run Code Online (Sandbox Code Playgroud)
编译器仍然抱怨throw throwable需要用try/catch包围.
我如何重新扔掉那个扔掉的?这样,除了信息量之外,Log.e()系统的行为与以前完全一样:因为我从未设置默认的UncaughtException处理程序.
有些设备(如三星Galaxy S3)预先安装了由Vlingo驱动的三星,而不是谷歌语音搜索.
在我的应用程序中,我想以编程方式覆盖要使用的语音识别引擎,以便我的应用程序始终使用Google语音搜索.
所以我的问题是:
帮助将不胜感激
我的应用程序导致一个强制关闭某个地方,但我没有在我的LogCat中获得通常(且信息量很大)堆栈跟踪的致命异常,我只收到以下4行:
06-27 07:08:54.546: D/dalvikvm(14351): GC_FOR_MALLOC freed 9923 objects / 657416 bytes in 21ms
06-27 07:08:54.769: W/dalvikvm(14351): threadid=20: thread exiting with uncaught exception (group=0x4001d7f0)
06-27 07:08:54.796: W/dalvikvm(14351): threadid=21: thread exiting with uncaught exception (group=0x4001d7f0)
06-27 07:08:54.796: I/Process(14351): Sending signal. PID: 14351 SIG: 9
Run Code Online (Sandbox Code Playgroud)
这是在DEBUG模式下,LogCat上没有应用过滤器!
更新:感谢下面的@assylias,我已经能够实现:
final UncaughtExceptionHandler subclass = Thread.currentThread().getUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.getStackTraceString(paramThrowable);
subclass.uncaughtException(paramThread, paramThrowable);
}
});
Run Code Online (Sandbox Code Playgroud)
这产生了这些增加的线:
06-27 08:24:47.105: D/dalvikvm(15475): GC_FOR_MALLOC freed 13865 objects / 1435952 bytes in …Run Code Online (Sandbox Code Playgroud) 我错误地将一个目录添加到git中,当我按照这里的提示撤消添加时git reset HEAD <file>,我惊恐地发现其中一个文件的当前工作副本,其中有很多更改(工作!),还原回到以前的版本!
结果我失去了几个小时的工作......:(
我认为git reset HEAD <file>只有"从当前索引中删除它而不改变其他任何东西.我错过了什么?
是git reset HEAD <file>应该还检查了从头部文件?
我怎样才能最大限度地减少将来再次出现这种情况的可能性?
我正在借助这本Apache CXF Web服务开发书学习CXF,但是,本书的一个示例项目甚至无法编译!
有问题的代码是第3章contractfirst,它不是拼写错误的问题,因为我从书的支持站点下载了逐字逐句使用的源代码.
3个编译错误实际上指向一个问题:
Chapter3\contractfirst\src\demo\order\OrderProcessService.java:52: cannot find symbol
symbol: constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[])
location: class javax.xml.ws.Service
super(WSDL_LOCATION, SERVICE, features);
^
Run Code Online (Sandbox Code Playgroud)
在OrderProcessService.java文件中.
初步重新搜索表明这可能是JAX-WS 2.2与2.1的问题,但我不知道如何使这个基于ANT的编译环境"支持"JAX-WS 2.2.
我尝试放入一个jaxws-api.jar,%JAVA_HOME%\lib\endorsed我尝试将该jar添加到项目的库列表中,但似乎没有任何帮助.
我没有使用Maven,因此我甚至无法将其列为依赖项,并希望这将被神奇地解决.
知道如何解决这个问题吗?这样我可以制作这个非常简单的项目吗?
一切进展顺利,包括从WSDL生成源代码,build-helper-maven-plugin但是当时间来"实现服务",RegistryResourceImpl.java即将生成的内容移动到正常的源文件夹时src/main/java,Eclipse开始抱怨某些符号(如界面RegistryResource)无法被识别.
意识到为普通src/main/java文件夹分配了不同的包名称,我只需在其所属RegistryResourceImpl.java的包的导入中添加RegistryResource.java:
import com.yourcompany.sample.ns.RegistryResource;
Run Code Online (Sandbox Code Playgroud)
但Eclipse目前的项目配置似乎是盲目的com.yourcompany.sample.ns,不知道在哪里找到它.
我尝试在Build Path中找到一个选项来指向生成的源,但没有尝试过我所帮助的.
我有一种感觉,我错过了一些非常微不足道的东西,但它是什么?
另外,不应该m2e(Eclipse的Maven插件)自动处理那种移动的实现文件?
更新(尝试@ Patrick建议的解决方案后):
target/generated/src/main/java 不存在,但检查"创建新文件夹"框,我能够创建它.Maven clean,它被删除(因此需要在每次清理后重新创建???)Maven install,在完全不同的树下创建生成源:generated-sources/cxf/com/yourcompany/sample/ns.为什么???RegistryResourceImpl.java模块仍然自动创建target/generated sources.在这一点上,我不再看到关于"未解决的包/进口/符号"的抱怨(奇怪).另一方面,如果我尝试添加作为"源文件夹"的实际生成的路径generated-sources/cxf/com/yourcompany/sample/ns(而不是不相关/不存在target/generated/src/main/java,生成的树target被移动(删除)到下面/src/main/java.我不明白这种行为日食.
最后,即使我在这里做了Maven> Update Project建议,从而摆脱了"Maven …
下面这个例子在另一个线程,我能够鸣叫任的网址:
String tweetUrl = "https://twitter.com/intent/tweet?text=PUT TEXT HERE &url="
+ "https://www.google.com";
Uri uri = Uri.parse(tweetUrl);
startActivity(new Intent(Intent.ACTION_VIEW, uri));
Run Code Online (Sandbox Code Playgroud)
显示为:
在此处输入文字https://www.google.com
或标签:
String tweetUrl = "https://twitter.com/intent/tweet?text=PUT TEXT HERE &url="
+ "https://www.google.com &hashtags=android,twitter";
Uri uri = Uri.parse(tweetUrl);
startActivity(new Intent(Intent.ACTION_VIEW, uri));
Run Code Online (Sandbox Code Playgroud)
显示为:
把文字放在这里#android #twitter
但由于某些原因,我无法证明两者的URL,并在推特箱的井号标签.
我究竟做错了什么?