似乎最新的Android SDK工具仍然不能正确支持包含链接库项目的应用程序的测试.
我有一个项目,具有以下设置:
TestLib(android库项目)< - TestMain(android项目)< - TestMainTest(android单元测试项目)
我在eclipse中创建了所有这些项目,然后用于android update (test-/lib-)project ...生成build.xmlet.人.
一旦你在TestMain(InheritAddition.java在我的例子中)中有一个继承自TestLib(Addition.java)中的类并且你想在单元test(InheritAdditionTest.java)中引用这个类的类,问题就会开始.
public class Addition {
public int add2(int o1, int o2) {
return o1 + o2;
}
}
Run Code Online (Sandbox Code Playgroud)
public class InheritAddition extends Addition {
public int sub(int p1, int p2) {
return p1 - p2;
}
}
Run Code Online (Sandbox Code Playgroud)
public class InheritAdditionTest extends AndroidTestCase {
public void testSub() {
Assert.assertEquals(2, new InheritAddition().sub(3, 1));
}
}
Run Code Online (Sandbox Code Playgroud)
在命令行上构建时,结果如下:
W/ClassPathPackageInfoSource(14871): …
我在一个库项目(LIB)中有一些java代码(很好地为Android编译),我想在另一个Android项目(A)中使用它.
由于LIB的代码不太可能发生太大的变化,我选择将其作为jar添加到A中.它工作正常.
我有另一个项目是Android检测项目,测试第一个Android项目(B).
所以我们现在拥有的是A,包括LIB作为外部jar,以及B测试A.
当我想从LIB编写的B代码访问时,问题就开始了.从我看到的情况来看,除非我将LIB作为外部jar添加到B,否则它拒绝编译(也就是说,它无法访问A中包含的LIB jar中的代码).
我不愿意将LIB作为外部jar添加到B中,因为:1.感觉不对,2.运行测试时,它失败了:
java.lang.IllegalAccessError:预验证类中的类ref已解析为意外实现
我找到了迈克的问题,但他的解决方案只涉及使用ant脚本进行编译,我目前更喜欢将Eclipse IDE用于此项目.
知道如何解决这个问题?
我有一个应该正确编译的andorid项目文件.
我安装了最新的eclipse和Andriod ADT插件.
然后我导入了项目并右键单击build.xml以作为ANT构建运行.但是我在一些基本代码上遇到了错误,我确信这些错误源于我错误配置的设置.
我还尝试从命令行使用ANT运行它.两次我都遇到了同样的错误
怎么了 ?
Buildfile: /Users/admin/Downloads/moshe-5/build.xml
init:
process.annotations:
[javac] Compiling 9 source files to /Users/admin/Downloads/moshe-5/build/classes
[javac] /Users/admin/Downloads/moshe-5/src/ti/moshe/CustomAdapter.java:7: package android.app does not exist
[javac] import android.app.Activity;
[javac] ^
[javac] /Users/admin/Downloads/moshe-5/src/ti/moshe/CustomAdapter.java:8: package android.content does not exist
[javac] import android.content.Context;
[javac] ^
[javac] /Users/admin/Downloads/moshe-5/src/ti/moshe/CustomAdapter.java:9: package android.graphics does not exist
[javac] import android.graphics.Color;
Run Code Online (Sandbox Code Playgroud) 我有一个名为MyApp的模块,另一个名为MyAppTests的模块,它依赖于MyApp.两个模块都生成APK,一个名为MyApp.apk,另一个名为MyAppTests.apk.
我通常在IntelliJ或Eclipse中构建它们,但我想为它们创建一个ant构建文件,以便持续集成.
我使用"android update"为MyApp创建构建文件,并且由于commonsware对我之前的问题的回答,我已经能够使用ant成功构建它.
我现在想用ant构建MyAppTests.apk.我像以前一样使用"android update"构建了构建文件,但是当我运行它时,我得到一个错误,表明它没有在MyApp中找到任何类.
从我之前的问题中得到一个问题,我尝试将MyApp.apk放入MyAppTests/libs,但不幸的是,这并没有奇迹般地解决问题.
当它依赖于另一个APK中的类时,使用ant构建测试应用APK的最佳方法是什么?
$ ant debug
Buildfile: build.xml
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 1.5
[setup] API level: 3
[setup] WARNING: No minSdkVersion value set. Application will install on all Android versions.
dirs:
[echo] Creating output directories if needed...
resource-src:
[echo] Generating R.java / Manifest.java from the resources...
aidl:
[echo] Compiling aidl files into Java classes...
compile:
[javac] Compiling 5 source files to /Users/mike/Projects/myapp/android/MyAppTests/bin/classes
[javac] …Run Code Online (Sandbox Code Playgroud) 我最近将我的SDK工具和ADT插件更新到最新版本(也获得了Android 2.3).这需要我的配置中的一些更改(主要是我添加proguard.config=procfg.txt到default.properties我可以使用proguard的内置支持),并从中删除旧的proguard配置build.xml.现在,我的问题是Eclipse给出了一个相当冗长的错误(我将在问题的最后嵌入)问题是我最近没有添加任何库.再次,使用ant预期的工作进行编译:
$ ant debug
Buildfile: /home/felix/workspace/XXX/build.xml
[setup] Android SDK Tools Revision 8
[setup] Project Target: Android 2.3
[setup] API level: 9
[setup]
[setup] ------------------
[setup] Resolving library dependencies:
[setup] No library dependencies.
[setup]
[setup] ------------------
[setup]
[setup] WARNING: Attribute minSdkVersion in AndroidManifest.xml (4) is lower than the project target API level (9)
[setup]
[setup] Importing rules file: tools/ant/main_rules.xml
-debug-obfuscation-check:
-set-debug-mode:
-compile-tested-if-test:
-dirs:
[echo] Creating output directories if needed...
-pre-build:
-resource-src:
[echo] …Run Code Online (Sandbox Code Playgroud) 我正在尝试Android使用的项目运行我的UI测试Robotium,但每当我尝试从命令行或Eclipse运行它时,它会给我这个错误:
INSTRUMENTATION_RESULT: longMsg=java.lang.IllegalAccessError:
Class ref in pre-verified class resolved to unexpected implementation
Run Code Online (Sandbox Code Playgroud)
在logcat中,它还给出了一个错误,指出:
java.lang.NoClassDefFoundError: com.bridgepointeducation.talon.TalonModule
Run Code Online (Sandbox Code Playgroud)
即使我没有com.bridgepointeducation.talon.TalonModule.
有谁知道如何解决这个问题?谢谢!