繁体   English   中英

Android Studio:添加自定义jar作为依赖项

[英]Android Studio: add a custom jar as dependency

我有一个使用DTO类与Android Project通信的Java REST项目。

最初,我创建了在两个项目中都重复的DTO类,但是现在我有了一个具有此常见DTO类的新Java / JAR项目,并且我想在两个项目(Rest和Android)中都使用此库。

我将JAR文件粘贴到Android Studio的app/libs文件夹中。

我将此文件添加为Android Studio中的Jar依赖项。

build.gradle文件包含jar的参考编译文件('libs / my-custom-jar-1.0.0.jar')

dependencies {
    compile files('libs/my-custom-jar-1.0.0.jar')
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

我按照此处介绍步骤进行操作,但是不起作用。 JAR文件中打包的类不可用。

我也尝试“使缓存无效并重新启动” Android Studio

[]的

编辑

文件build.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    androidTestCompile 'com.google.code.findbugs:jsr305:3.0.2'
    compile project(':com.custom.dialog')
    compile project(':zxing_standalone')
    compile 'com.android.support:appcompat-v7:26.0.2'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.xxxxxxxx.android:library:1.0.23@aar', { transitive = true }
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'com.squareup.okhttp3:okhttp:3.9.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
    compile 'com.android.support:design:26.0.2'
    compile 'commons-io:commons-io:2.0.1'
    compile 'org.apache.commons:commons-lang3:3.5'
    compile files('libs/my-custom-jar-1.0.0.jar')
}

确保已将jar文件复制到您的项目中,但您引用的是一个很旧的帖子。 无需为jar文件添加额外的行,因为fileTree方法将包含libs文件夹中带有.jar扩展名的任何内容。

我将更新我的依赖关系:

dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
}

然后进行gradle同步,您的文件应该可以使用了。

编辑尽管真正的问题是参数的顺序。 您想将目录作为第一个参数传递。 fileTree构建一个ConfigurableFileTree,因此第一个参数需要为基本目录。

更新这是使用上述依赖关系和同步gradle构建.jar并将其粘贴到项目中之后的项目外观。 带.jar的libs文件夹

这可以从我的活动代码访问:

public class MainActivity extends AppCompatActivity {

    PersonDAO personDao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        personDao = new PersonDAO("John", "Smith", 50);
    }

    public void doSomething(View view){
        Toast.makeText(this, getString(R.string.greeting, personDao.getFirstName()), Toast.LENGTH_SHORT).show();
    }
}

A )仅添加以下行:

implementation fileTree(dir: "libs", include: ["*.jar"])

并删除此行:

compile files('libs/my-custom-jar-1.0.0.jar')

当添加两行时,最终将导致重复的依赖项。

B )和这一个本地AAR依赖项:

compile 'com.xxxxxxxx.android:library:1.0.23@aar', { transitive = true }

需要在根项目的build.gradle中将libs目录定义为flatDir存储库:

allprojects {
    repositories {
        ...
        flatDir { dirs "libs" }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM