我有一个Java REST项目,可以使用DTO classes与Android Project通信。
最初,我创建了在两个项目中都重复的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')
}
我遵循了steps described here,但是没有用。 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')
}
答案 0 :(得分:1)
确保已将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();
}
}
答案 1 :(得分:0)
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 }
需要在根项目的libs
中将flatDir
目录定义为build.gradle
仓库:
allprojects {
repositories {
...
flatDir { dirs "libs" }
}
}