Android Studio将自定义控件打成jar包

发布于 2022-09-02 11:39:43 字数 2248 浏览 40 评论 0

  1. 我写一个自定义控件,作为com.android.library想提供给别人使用。由于很多依赖我控件的项目需要在系统平台编译,因此我需要将自己的控件库打成jar包以静态库的形式提供给别人使用。

  2. 该项目的build.gradle代码如下:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 20160324
        versionName "1.0.0"
    }


    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/main/'
                exclude 'AndroidManifest.xml'
            }
            res {
                srcDir 'src/main/res'
            }
        }
    }
}

task clearJar(type: Delete) {
    delete 'build/libs/ArcScroll.jar'
    delete 'libs/ArcScroll.jar'
}

task makeJar(type: Copy) {
    from('build/intermediates/bundles/release')
    into('libs/')
    include('classes.jar')
    rename('classes.jar', 'ArcScroll.jar')
}

makeJar.dependsOn(clearJar, build)
  1. 我遇到的问题是:这个生成的Jar里我没有将R类打进去,导致demo程序使用这个自定义控件时,直接报错:

Suppressed: java.lang.ClassNotFoundException:com.watch.arcscroll.R$styleable                                              at java.lang.Class.classForName(Native Method)                                                                           at java.lang.BootClassLoader.findClass(ClassLoader.java:781)                                                                               at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)                                                                             at java.lang.ClassLoader.loadClass(ClassLoader.java:504)                                                                                 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
01-02 15:14:53.549 2403-2403/com.watch.arcscroll.example I/Process: Sending signal. PID: 2403 SIG: 9

我google搜索之后,没有搜到明确的解决方案,但是我认为应该是没有将R类打进jar包的缘故。所以求指导如何解决该问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风透绣罗衣 2022-09-09 11:39:43

jar包里面是没有.R的啊,即便你打进去了,还是一样找不到对应的文件的,想做这种包含资源的只能打成aar包才行。
或者直接做成工程依赖的lib。

掩耳倾听 2022-09-09 11:39:43

压缩工具看一下里面有没有R.class
clipboard.png

淡水深流 2022-09-09 11:39:43

1、我认为你应该打aar包的格式
2、maven push的时候,也应该推送aar包

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文