我想将android库项目安装到本地maven存储库.这是build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android-library'
apply plugin: 'maven'
version = "1.0.0-SNAPSHOT"
group = "com.example"
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 18
}
}
Run Code Online (Sandbox Code Playgroud)
当我跑:
gradle install -i
Run Code Online (Sandbox Code Playgroud)
它被困在这里:
Executing task ':project:installTest' due to:
Task has not declared any outputs.
Starting process 'command 'd:\android-sdk-windows\platform-tools\adb.exe''. Working directory: D:\Projects\java\....... Command: d:\android-sdk-windows\platform-tools\adb.exe install -r D:\Projects\java\.......\build\apk\project.apk
An attempt to initialize for well behaving …Run Code Online (Sandbox Code Playgroud) 编辑:
这个问题似乎以某种方式消失了,可能是由于新的Gradle构建系统变得更加成熟.
我有两个独立的Android项目:
第一个项目是使用Gradle的'android-library'插件的Android库,它取决于support-library-v4:r18.来自build.gradle中的依赖项的片段:
compile 'com.android.support:support-v4:18.0.0'
Run Code Online (Sandbox Code Playgroud)
从支持库是牵强的Android支持库通过安装的Android SDK管理器作为解释在这里.然后通过运行以下内容构建该项目并将其发布到maven本地存储库:gradle uploadArchives
我验证了,然后库.aar随后在本地maven存储库下可用.
第二个项目是一个Android应用程序,使用Gradle的'android'插件,它引用第一个项目生成的库的maven依赖.这是build.gradle的一个片段:
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:18.0.0'
compile 'com.example:cool-lib:1.0.0-SNAPSHOT'
}
Run Code Online (Sandbox Code Playgroud)
注意:这两个项目完全分开.这意味着,它们不是同一个根项目的子项目.
当我尝试通过运行来构建第二个项目时: gradle assemble
我收到以下错误:
Could not find com.google.android:support-v4:r18.
Required by:
com.example:app-project:unspecified > com.example:cool-lib:1.0.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
我在我的本地maven repo文件夹下检查了cool-lib的.pom文件,我发现它有以下依赖项:
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>18.0.0</version>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,Gradle试图从maven中央存储库获取lib-project的支持库-v4 r18 …
我的本机库包含我想在编译时删除的日志.日志由限定所述预处理器宏所示ENABLE_DEBUG在LOCAL_CFLAGS像这样:
include $(CLEAR_VARS)
LOCAL_MODULE := native-stuff
LOCAL_SRC_FILES := Native.cpp
LOCAL_LDLIBS := -llog
LOCAL_CFLAGS := -DENABLE_DEBUG
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
我正在通过Android Studio使用Gradle构建应用程序,我希望有另一个Android.mk文件,不需要LOCAL_CFLAGS := -DENABLE_DEBUG发布版本,有效地禁用日志记录.
我尝试通过创建下面的文件夹并在没有CFLAGS的情况release/jni下src放置Android.mk的副本来实现.它成功构建和部署,但我仍然看到日志.这是我的build.gradle:
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 17
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
sourceSets {
main {
//Tell Gradle where to put the compiled shared library
jniLibs.srcDir 'src/main/libs'
//disable automatic ndk-build call
jni.srcDirs = [];
}
release {
jni.srcDirs …Run Code Online (Sandbox Code Playgroud) java-native-interface android android-ndk android-studio android-gradle-plugin
我有以下XML:
<ns2:Person name="John" age="20" />
Run Code Online (Sandbox Code Playgroud)
我想将它解组为从XSD生成的JAXB对象Person.
这是我正在运行的代码:
JAXBContext context = JAXBContext.newInstance(PersoEntity.class);
Unmarshaller um = context.createUnmarshaller();
StringReader sr = new StringReader(xml);
Person p = (Person)um.unmarshal(sr);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是我得到以下异常:
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: The prefix "ns2" for element "ns2:Person" is not bound.]
Run Code Online (Sandbox Code Playgroud)
我该如何解决?谢谢
android ×3
gradle ×2
maven ×2
android-ndk ×1
build ×1
install ×1
java ×1
jaxb ×1
namespaces ×1
prefix ×1