我有一个项目,我试图将一个java源文件树中的单个文件包含到一个库项目中.无论我做什么,我都不能只包含那个文件.我在另一个项目中取得了成功,排除了除一个文件之外的所有文件,但只有在从库项目运行gradle时才有效.从应用程序目录运行时,包含所有文件.在尝试创建一个复制问题的简单项目时,同样排除所有问题也不起作用.
示例文件树很简单:
application - android app that includes the two libraries
library1/
build.gradle
src/main/AndroidManifest.xml
library2/
build.gradle
src/main/AndroidManifest.xml
java/src/com/company/product/
/pkg1
Source1.java, Source2.java, Source3.java
libraryoneonly/Library1Source.java
/pkg2
Source1.java, Source2.java, Source3.java
Run Code Online (Sandbox Code Playgroud)
library1 build.gradle看起来像这样.下面的工作既不包括也不包括在内.
LIBRARY1 /的build.gradle
apply plugin: 'com.android.library'
android {
sourceSets {
main.jni.srcDirs = []
main.jniLibs.srcDir 'src/main/libs'
main.java {
srcDir "../../java/src"
exclude { FileTreeElement elem ->
println "Searching for files, found: " + elem.relativePath
!(elem.isDirectory() || elem.name.equals('Library1Source.java'))
}
//include ("**/libraryoneonly/**")
//include ('com/company/product/pkg1/libraryoneonly/Library1Source.java')
}
}
dependencies {
compile project(':library2')
}
Run Code Online (Sandbox Code Playgroud)
和library2 build.gradle.令人惊讶的是,下面的未注释排除确实有效.
library2 /的build.gradle
apply …
Run Code Online (Sandbox Code Playgroud) 我有一个项目,其中包括两个外部第三方库。当尝试构建项目时,这两个库的类文件名都被混淆了,并且 gradle barfs 了。
Duplicate class a.a.a.a.a.b found in modules...
Run Code Online (Sandbox Code Playgroud)
我无法排除任何类,因为它们不是重复的,我也没有看到 gradle 为名称添加前缀的方法。
有什么简单的解决办法吗?
我有一个简单的 Android 浓缩咖啡测试,在切换 Activity 之前它可以正常工作。该测试通过登录运行,按类从 Web 视图中选择元素,然后在成功登录后,活动切换。一旦进入新的 Activity,我无法在新的 Web 视图中找到任何内容,无论是通过类、CSS 选择器还是通过 x_path。
我知道它隐藏在 html 中,我可以看到它并在 chrome insepctor 中搜索它:
<div _ngcontent-c9="" class="tile-title" title="Pay">Pay </div>
Run Code Online (Sandbox Code Playgroud)
但我无法用这个 CSS_SELECTOR 找到它:
onWebView(allOf<View>(isDisplayed(), isJavascriptEnabled()))
.withElement(findElement(Locator.CSS_SELECTOR, "div[title=Pay]"))
Run Code Online (Sandbox Code Playgroud)
同样,我也尝试过使用 X_PATH 字符串,甚至使用类名(不是唯一的),但它仍然失败。
我们确实创建了多个 Web 视图,但只有一个可见。
我该怎么做才能更清楚地了解这一点并找出为什么我无法选择有问题的 div?
更新
看来我在日志中遗漏了一些内容,这些内容揭示了我的部分问题。AmbiguousViewMatcherException
我在日志中看到了一个。
查看代码,我们有一个具有名称的 FrameLayout web_container
,并通过调用将 3 个 webview 附加到该视图addView()
。所以这个组件最终有 3 个子组件。
我更改了测试以使用withParent()
并isDisplayed()
匹配网络视图。该调用之前曾引发异常,但现在已通过。
onWebView(allOf(withParent(withId(R.id.web_container)), isDisplayed())).forceJavascriptEnabled()
Run Code Online (Sandbox Code Playgroud)
鉴于此成功,我仍然无法在该 webview 中找到任何内容,这里是修改后的 onWebVeiw 语句:
onWebView(allOf(withParent(withId(R.id.web_container)), isDisplayed())).forceJavascriptEnabled()
Log.d("FeatureTest", "passed forceJavaScriptEnabled()")
onWebView(allOf(withParent(withId(R.id.web_container)), isDisplayed()))
.withElement(findElement(Locator.CSS_SELECTOR, "div[title=Pay]")).perform(webClick())
Run Code Online (Sandbox Code Playgroud)
我在日志中看到的错误:
09-21 09:19:19.490 9481 9529 …
Run Code Online (Sandbox Code Playgroud) 我在Android上使用Ormlite并启用了ObjectCache,在使用UpdateBuilder和ColumnExpression更新表后,我恢复了旧数据.我已经阅读了文档,并没有警告不要在启用缓存的情况下使用UpdateBuilder.
设置表最多只能有1-5行.updateColumnExpression似乎是一种简单的方法,只允许其中一行为true.
这是预期的行为吗?
public void setActiveSetting(String id)
{
try {
UpdateBuilder<Settings, Integer> updateBuilder2 = getHelper().getSettingsDao().updateBuilder();
updateBuilder2.updateColumnExpression("active", "id = " + id );
updateBuilder2.update();
} catch (SQLException e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这是返回过时数据的调用:
public List<Settings> getSettings()
{
List<Settings> settings = null;
try {
settings = getHelper().getSettingsDao().queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return settings;
}
Run Code Online (Sandbox Code Playgroud)
并设置DAO:
public Dao<Settings, Integer> getSettingsDao()
{
if (null == settingsDao) {
try {
settingsDao = getDao(Settings.class);
settingsDao.setObjectCache(true);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
return …
Run Code Online (Sandbox Code Playgroud) 我有一段时间试图在ORMLite中使用'或'子句,我得到以下例外:
Caused by: java.lang.IllegalStateException: Expecting there to be a clause already defined for 'OR' operation
at com.j256.ormlite.stmt.Where.pop(Where.java:702)
at com.j256.ormlite.stmt.Where.or(Where.java:381)
Run Code Online (Sandbox Code Playgroud)
我已搜索周围和RTFM,但我不能完全明白我在做什么错.我查看了抛出异常的行,看起来堆栈是空的,当它期待某些东西存在时.
我尝试过更改一下查询,以下三个示例如下:
List<Contacts> list = new ArrayList<Contacts>();
Dao<Contacts,Integer> dao = DatabaseManager.getInstance().getDaoForClass(Contacts.class);
final QueryBuilder<Contacts, Integer> queryBuilder = dao.queryBuilder();
nameFilter = "%" + nameFilter + "%";
// Tried this way:
queryBuilder.where().or(queryBuilder.where().like(Contacts.FIELD_NAME_FIRST_NAME, nameFilter),
queryBuilder.where().like(Contacts.FIELD_NAME_LAST_NAME, nameFilter),
queryBuilder.where().like(Contacts.FIELD_NAME_PHONE_NUMBER, nameFilter));
// And then this way:
queryBuilder.where().like(Contacts.FIELD_NAME_FIRST_NAME, nameFilter);
queryBuilder.where().or();
queryBuilder.where().like(Contacts.FIELD_NAME_LAST_NAME, nameFilter);
queryBuilder.where().or();
queryBuilder.where().like(Contacts.FIELD_NAME_PHONE_NUMBER, nameFilter);
// And this way
queryBuilder.where().like(Contacts.FIELD_NAME_FIRST_NAME, nameFilter);
queryBuilder.where().like(Contacts.FIELD_NAME_LAST_NAME, nameFilter);
queryBuilder.where().like(Contacts.FIELD_NAME_PHONE_NUMBER, nameFilter); …
Run Code Online (Sandbox Code Playgroud)