【问题标题】:AAR class library stored in bintray doesn't link to the extended class存储在 bintray 中的 AAR 类库未链接到扩展类
【发布时间】:2015-06-02 20:06:57
【问题描述】:

我创建了一个由名为 WordUtils2 的类创建的 Android 库,该类扩展了 Java 类 WordUtils。 整个项目可以在 github 中找到: https://github.com/dequadelisonz/WordUtils2

我还将生成的 aar 文件发布到 BinTray 中,以便能够通过 Gradle 在其他 Android 项目中使用它。 该项目构建良好,似乎没有问题。

但是当我通过在模块的 gradle.build 文件中添加这一行来将它包含在其他 Android 项目中时: 编译(组:'it.code.martin',名称:'wordutils2',版本:'1.0.0',分机:'aar') 我在 gradle 消息中收到以下错误:

错误:(56, 36) 错误: 无法访问 WordUtils 类文件 org.apache.commons.lang3.text.WordUtils 未找到

看起来无法访问我扩展课程的原始 Wordutils 课程。

下面我报告Activity代码:

package code.martin.it.wordutilstest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import it.code.martin.WordUtils2;


public class MainActivity extends Activity implements View.OnClickListener {

    private EditText mEditText;
    private TextView mTextview;
    private Button mOkBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mEditText=(EditText)findViewById(R.id.editText);
        mTextview=(TextView)findViewById(R.id.textView);
        mOkBtn=(Button)findViewById(R.id.button);
        mOkBtn.setOnClickListener(this);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View v) {
        String response= WordUtils2.wordToNumberIt(mEditText.getText().toString());
        mTextview.setText(response);
    }
}

以及 build.gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'

    defaultConfig {
        applicationId "code.martin.it.wordutilstest"
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile(group: 'it.code.martin', name: 'wordutils2', version: '1.0.0', ext: 'aar')
}

当然,如果需要,我可以发送我的代码的更多详细信息。

我做错了什么? Android Studio 已更新至最新版本。 感谢您的帮助。

【问题讨论】:

    标签: android android-gradle-plugin build.gradle aar bintray


    【解决方案1】:

    看起来传递依赖项不起作用。尝试用这个替换 build.gradle 中的依赖项

        dependencies {
            compile fileTree(include: ['*.jar'], dir: 'libs')
            compile(group: 'it.code.martin', name: 'wordutils2', version: '1.0.0', ext: 'aar’){
        transitive=true}
    }
    

    如果这不起作用,我建议下载正确的 apache commons Jar 并使用它构建库,而不是使用 gradle 依赖项。

    【讨论】:

    • 好的,我会试试这个我们告诉你。感谢您的建议。
    猜你喜欢
    • 2020-06-26
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2021-08-21
    • 2020-06-22
    • 2016-12-04
    相关资源
    最近更新 更多