簡體   English   中英

在Android Studio Project中缺少allheaders.h

[英]Missing allheaders.h in Android Studio Project

我正在按照這個tesseract教程中的教程進行操作,並且在我實際運行Java代碼之前一切順利。 當我嘗試

new TessBaseApi();

它會引發以下錯誤

Error Code: 2
Output:
In file included from tesstwo/src/main/jni/com_googlecode_leptonica_android/box.cpp:17:0:
tesstwo/src/main/jni/com_googlecode_leptonica_android/common.h:22:24: fatal error: allheaders.h: No such file or directory
 #include <allheaders.h>
           ^
compilation terminated.
make: *** 

我查看了/jni/com_googlecode_leptonica_android/src/src並在那里找到allheaders.h文件。 我有一種感覺,我的路徑是錯的,但我幾乎嘗試了一切,但沒有用。 有什么問題?

我也遇到過Android Studio這個問題。 谷歌搜索后,我發現了這個問題。 https://code.google.com/p/android/issues/detail?id=74132

顯然,NDK插件會生成自己的Android.mk文件,並忽略任何現有的文件,因此推薦的方法是運行ndk-build來生成本機.so文件。

當我在tess-two目錄中使用ndk-build時,它編譯得很好並且創建了.so文件。

本文將介紹如何在gradle和android studio中包含本機庫: 使用Android Gradle插件0.7.3在項目中添加預先構建的.so文件

這對我有用https//coderwall.com/p/eurvaq/tesseract-with-andoird-and-gradle

但是不要刪除libs目錄!

compileSdkVersionbuildToolsVersionminSdkVersiontargetSdkVersio設置為與項目buil.gradle相同的值

我還將classpath 'com.android.tools.build:gradle:0.9.+'更改為classpath 'com.android.tools.build:gradle:1.0.+'

在某些時候Android Studio建議設置jni.srcDirs = []

導致在我的tess-two庫項目的gradle.build中跟隨sourceSets

sourceSets.main {
    manifest.srcFile 'src/main/AndroidManifest.xml'
    java.srcDirs = ['src/main/java']
    resources.srcDirs = ['src/main/java']
    res.srcDirs = ['src/main/res']
    jni.srcDirs = []
    jniLibs.srcDirs = ['src/main/libs']
}

在這里輸入正確的src路徑,這個實際工作

我不確定它是否適合你,但就我而言,這就是我所做的:

1.在common.h中:將#include <allheaders.h>更改為#include <src/src/allheaders.h>

2.在庫項目build.gradle中:添加此項

 sourceSets{ main { manifest.srcFile 'AndroidManifest.xml' jni.srcDirs = [] jniLibs.srcDirs = ['src/main/jniLibs'] resources.srcDirs = ['src'] res.srcDirs = ['res'] } } 

Ppl,經過一天的努力......終於得到了解決方案

在build.gradle的tess-two模塊中添加以下代碼:

  sourceSets.main {
    manifest.srcFile 'src/main/AndroidManifest.xml'
    java.srcDirs = ['src/main/java']
    resources.srcDirs = ['src/main/java']
    res.srcDirs = ['src/main/res']
    jni.srcDirs = []
    jniLibs.srcDirs = ['src/main/jniLibs']
}

主要是請手動檢查天氣以上代碼中指定的所有文件路徑存在於tess-two模塊!!

檢查tess-two庫中存在“liblept.so”和其他“.so”文件的路徑。 對我來說,它位於/ tesstwo / src / main / jniLibs / armeabi-v7a中。 因此我在上面的代碼中創建了jniLibs.srcDirs = ['src / main / jniLibs']。 希望能幫助到你 !!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM