java - 为 Android 项目创建和引用库(使用命令行和 gradle)

标签 java android linux opencv gradle

我需要创建一个使用 OpenCV 库的 Android 应用程序,我只想使用命令行 (linux) 来完成此操作。在我开始之前,我想感受一下如何创建使用库的项目,但我在引用我创建的示例库时遇到了麻烦。我可以构建默认的 Android HelloWorld 项目并在我的设备上运行它而不会出现问题,我只需要有关该库的帮助。

我为应用程序和库创建了根目录和文件夹:

mkdir 测试项目 mkdir 测试项目/TestApp mkdir 测试项目/TestLib

然后我创建了项目和库:

android create project --target 1 --gradle --gradle-version 2.4 --name TestApp --path ~/Projects/TestProject/TestApp/--activity MyActivity --package com.example.testapp

android create lib-project --target 1 --gradle --gradle-version 2.4 --name TestLib --path ~/Projects/TestProject/TestLib --package com.example.teSTLib

我将“settings.gradle”添加到根目录,在“settings.gradle”中我有 include 'TestApp', 'TestLib' 我不确定是否需要构建。 gradle 文件是否在这里。我还将“TestLib”依赖项添加到“TestApp/build.gradle”文件中:

dependencies {
    compile project(':TestLib')
}

如果我尝试使用 ./TestApp/gradlew assembleDebugadb install/TestApp/build/output/apk/TestApp-debug.apk 我的项目构建,我可以在我的手机上运行该应用程序(尽管有两个 Activity ,其中一个不起作用),但我认为此设置不正确。

如果我尝试在 MyActivity.java 中为 TestApp 导入库...

package com.example.testapp;

import android.app.Activity;
import android.os.Bundle;
import com.example.TestLib;

public class MyActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

}

我收到这个错误:

/TestProject/TestApp/src/main/java/com/example/testapp/
MyActivity.java:5: error: cannot find symbol
import com.example.TestLib;
                  ^
  symbol:   class TestLib
  location: package com.example
1 error
:TestApp:compileDebugJava FAILED

我猜我没有设置识别图书馆所需的东西。或者我没有正确创建库。我尝试按照 Google Android 教程从命令行添加库,但看起来他们使用 Ant 而不是 Gradle。我可能会尝试这样做,但我听说 Gradle 应该以某种方式让我的生活更轻松..

编辑:

我尝试过使用 Ant,但我什至无法构建项目。在我的项目目录中运行 ant debug install 后,我收到以下错误:

BUILD FAILED
/home/steven/Libraries/android-sdk-linux/tools/ant/build.xml:649: The
following error occurred while executing this line:
/home/steven/Libraries/android-sdk-linux/tools/ant/build.xml:694:
Execute failed: java.io.IOException: Cannot run program
"/home/steven/Projects/WorkPlz/${aapt}": error=2, No such file or
directory

最佳答案

我终于能够创建一个库并在我的 Android 项目中使用它了!以下链接很有帮助:

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Dependencies-Android-Libraries-and-Multi-project-setup

https://docs.gradle.org/current/userguide/multi_project_builds.html

http://www.petrikainulainen.net/programming/gradle/getting-started-with-gradle-creating-a-multi-project-build/

这整个过程让我明白了为什么大多数人只使用 Ecipse 或 Adnroid Studio。但是如果其他人想尝试这个,我将包含一个指向我的示例项目的链接。它应该阐明一切是如何运作的。

示例项目:https://drive.google.com/folderview?id=0B2nWL2e8v6g-fnVuaEJHMWYyeGd5RXBIT0M5bjc5M3hPaHdnalJpNXVhVXRQVkVHZ2JtOEU&usp=sharing

现在我终于可以开始工作了!

关于java - 为 Android 项目创建和引用库(使用命令行和 gradle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809264/

相关文章:

java - 将规范转换为查询谓词

java - GWT/Gin Presenter 实例化

java - 卡片 View 不可见

java - Admob 与布局内容重叠

c# - Plesk Linux ASP.NET Core ERR_CONNECTION_REFUSED

java - 尝试使用Java绘制圆弧

java - 为什么 RunListener 类 testRunStarted() 方法在 JUnit 中多次调用单个测试?

Android:如何在工具栏中居中标题

python - tail : `/home/user_a/my_log.log' has been replaced with a remote file. 放弃这个名字

如果其他字符串出现在 'n' 行之前,linux 替换字符串