我希望在运行时访问(读取)我在NDK中构建的.so文件 检查其哈希值。
为此,我使用了AAssetManager_open()函数,但总是失败。
const char* filename = "/data/data/com.mycompany.app/lib/libmyndk.so"; // failed with this.
const char* filename = "assets/libmyndk.so"; // Also failed with this.
AAsset* asset = AAssetManager_open(mgr, (const char*) filename, AASSET_MODE_UNKNOWN);
请让我知道为什么它会一直失败。
答案 0 :(得分:1)
我解决了这个问题。我们不需要使用AssetManager来进行简单的访问。
在NDK(c / c ++文件)中使用fopen()。
例如,
void initNDK()
{
const char* filename = "/data/data/com.company.app/lib/libmyndk.so";
FILE* fp = fopen(filename, "rb");
if(fp)
TRACE("Success");
else
TRACE("Failure");
}
谢谢大家。
答案 1 :(得分:0)
你在应用程序启动时加载了.so文件。
通过
static {
System.loadLibrary("libpacman");
}
比您可以访问文件。
我希望这对你有所帮助。
答案 2 :(得分:0)
你试过了吗?
const char* filename = "libmyndk.so";
答案 3 :(得分:0)
最重要的是,我成功地使用AAssetManager_open()读取/访问assets文件夹中的某些文件。 但是这个AAssetManager_xxxx()函数似乎只能用于访问assets文件夹中的文件。
我想要做的是访问我在NDK中构建的.so文件。仍在寻找答案。
答案 4 :(得分:-1)
如果你想使用原生文件,你需要使用android NDK。
如果您使用Eclipce,此链接将为您提供帮助:How do I import a native library (.so file) into Eclipse?
这适用于Android Studio:http://www.kylethielk.com/blog/include-native-so-library-in-apk-with-android-studio/
我希望它有助于解决您的问题。