[英]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并将其粘贴到项目中之后的项目外观。
这可以从我的活动代码访问:
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.