[英]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目錄!
將compileSdkVersion
, buildToolsVersion
, minSdkVersion
和targetSdkVersio
設置為與項目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.