我有几个项目,我建立了一个.aar.然后我将这个.aar导入到/ libs下的Android Studio中.此依赖项的build.gradle文件如下所示:
repositories{
flatDir{
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.google.android.gms:play-services:7.0.0'
compile 'com.android.support:multidex:+'
compile(name: 'customApi-debug', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
由于库非常大,我设置了multiDexEnabled = true.Android Studio查找库和自动填充功能.构建工作正常,但运行应用程序会出现以下错误:
java.lang.NoClassDefFoundError: com.companyx.android.api.ui.vision.metaio.MetaIoView
at com.companyx.android.api.ui.vision.metaio.MetaIoView$$InjectAdapter.<init>(MetaIoView$$InjectAdapter.java:29)
Run Code Online (Sandbox Code Playgroud)
我分别对.aar和dex文件进行了解压缩和反汇编,并验证了它所抱怨的类实际存在.我已经尝试过处理这个问题的现有方法,但没有一个能够工作.
有人经历过这个吗?提前致谢.
我正在使用Android Studio 1.4
我的项目中有一个模块,它在build.gradle中有下一个依赖项:
dependencies {
provided fileTree(dir: 'libs', include: ['*.jar'])
provided 'junit:junit:4.12'
apply plugin: 'com.google.gms.google-services'
provided 'org.apache.directory.studio:org.apache.commons.io:2.4'
provided 'com.google.android.gms:play-services:8.1.0'
provided 'com.fasterxml.jackson.core:jackson-databind:2.2.0'
provided 'com.fasterxml.jackson.core:jackson-core:2.2.0'
provided 'com.fasterxml.jackson.core:jackson-annotations:2.2.0'
}
Run Code Online (Sandbox Code Playgroud)
在构建projectn并同步gradle后,我在我的module/build/ouputs/aar文件夹中获取了lib-release.aar.比我尝试文件>新模块>导入JAR\AAR它.然后,添加后
compile project(':mylib-release')
Run Code Online (Sandbox Code Playgroud)
我在"外部库"树中只获得了没有声明依赖关系的包.如何通过仅填写我的库来启用这些软件包的自动安装?
这是我的开发项目结构:
projectFolder
|
+--App
|
+--MyLib
|
+--Libraries
|
+--LibA
MyLib依赖于LibA,我将MyLib打包为AAR并将其发布到Maven 仓库,但当我将MyLib作为远程aar依赖项包含在另一个项目(TestProj)中时,我得到了构建错误(无法解析LibA的依赖关系,LibA不包含在MyLib的发布中),这是TestProj的 app文件夹中的build.gradel :
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile ('xxx.xxxxxx:yyyyy:1.0-SNAPSHOT@aar'){
transitive = true
}
}
Run Code Online (Sandbox Code Playgroud)
这是MyLib的build.gradle :
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':Libraries:LibA')
}
Run Code Online (Sandbox Code Playgroud)
我如何能释放MyLib中与力霸已经打包在AAR?
我试图将生成的我的android库的aar文件发布到我的Apache Archiva Maven服务器,但我还没设法让它工作,因为这些示例都已过时或者它们是针对java而不是针对android
在注意到gradle示例的大多数方法都已弃用之后,我发现了这个新文档:
其中介绍了如何使用新的API,似乎将uploadArchives替换为发布等等....
所以这就是我到目前为止所得到的:
apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'maven-publish'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mycompany.mylibrary"
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:21.0.3'
compile 'com.android.support:appcompat-v7:21.0.3'
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
} …Run Code Online (Sandbox Code Playgroud) 我有一个相当最新版本的android studio,我在一个项目下创建了一个模块,基本上应该是一个库,当我构建它时,它会创建一个".aar"文件,我想要的是.jar文件,因为这个库也应该与eclipse一起使用.
该库还包含活动,有没有什么方法可以创建一个.jar文件,我可以在Eclipse和Android Studio上使用它?
我已经创建了这个模块并尝试构建,因此它生成了.aar文件,而不是.jar文件.
我现在正在做android自定义ROM开发.aosp的构建系统基于Android.mk,但我想包含一些aar库,是否有可能在Android.mk中包含aar库?
我在libs文件夹中有一个带有.aar文件的模块.我使用此处发布的解决方案[1]:http: //kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/将.aar文件添加为依赖项并能够正确编译模块.
现在我想将此模块用作项目中主模块的依赖项并进行编译.但是,当我尝试编译时,我确实看到一个错误,表示gradle无法找到特定的.aar文件.为什么我的主模块找不到我子模块的libs文件夹中的文件.想知道是否有人遇到过这个问题.
我的项目结构是这样的
--mainmodule
--build.gradle (submodule as a dependency)
--submodule
--libs
-- abc.aar
Run Code Online (Sandbox Code Playgroud)
这是错误gradle抛出: When unzipping library ':abc:, either group, name or version is empty
我想使用Flutter创建一个Android应用程序,该应用程序依赖于包含在aar文件中的第三方SDK .到目前为止,我只在Flutter中找到了文章访问平台和第三方服务.看来我必须使用Android Studio使用其他Java文件构建Flutter项目.这很复杂,不是我想要的.有没有办法在Dart代码中直接加载aar文件或*.so文件?像JNI的工作原理.
我有android library(aar)包含(并在构建模块时构建)本机代码:
apply plugin: 'com.android.library'
android {
compileSdkVersion 16
buildToolsVersion "25.0.0"
defaultConfig {
minSdkVersion 11
targetSdkVersion 16
versionCode 1
versionName "1.0"
ndk {
abiFilters 'armeabi-v7a'
}
}
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
jni.srcDirs = ['jni']
}
}
packagingOptions {
exclude '/lib/armeabi-v7a/libv8.cr.so'
exclude '/lib/armeabi-v7a/libv8_libbase.cr.so'
// TODO : generate dynamically from `SHARED_V8_LIB_FILENAMES`
}
}
Run Code Online (Sandbox Code Playgroud)
我修改了Android.mk文件,使其具有依赖于SHARED_V8_LIB_FILENAMES环境变量的不同配置:
...
# Report configuration
ifeq ($(SHARED_V8_LIB_FILENAMES),) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Android 库,我将把它分发给我的业务合作伙伴。我已经用我的密钥库对其进行了签名,并且我想在运行时验证签名以查看我的库是否是使用不同的签名重新编译的。但是验证签名的正常方式
PackageManager pm = ctx.getPackageManager();
(PackageInfo packageInfo = pm.getPackageInfo(ctx.getPackageName(),
PackageManager.GET_SIGNATURES);)
Run Code Online (Sandbox Code Playgroud)
如果 APK 不工作,因为它只返回应用程序的签名,而不是我为我的库签名的签名。有没有办法做到这一点?