我从GitHub下载了Telegram源代码并编译它。起初,它给了我一些关于NDK_PROJECT_PATH = null
的错误,所以有人建议我改变:
sourceSets.main.jniLibs.srcDirs = ['./jni/']
externalNativeBuild {
ndkBuild {
path "jni/Android.mk"
}
}
到:
sourceSets.main {
jniLibs.srcDir 'libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
in gradle。
运行2 .so文件后生成libs\armeabi
和libs\armeabi-v7a
(两者都约4kb),我可以获得 LaunchActivity.java ,但是当我点击应用程序崩溃应用程序在运行可运行的ApplicationLoader.loadWallpaper();
(在LaunchActivity.java中)崩溃。我对它进行了修改,直到我到达uncaughtException
,如下所示:
找不到不满意的linkerror本地方法:org.telegram.messenger.Utilities.pinBitmap :( Landroid / graphics / Bitmap;)
之后我再次从命令提示符编译本机jni Manualy(我的意思是转到nji父文件夹并运行ndk-build.cmd)。
编译完成后,在nji父文件夹中创建了“obj”文件夹,再次生成了2个文件,但大小为14kb。
我将它们替换为libs文件夹中的旧文件。
在Clean和Rerun之后,我仍然有相同的错误(找不到原生方法......)。
任何人都可以帮我解决这个NDK的问题吗? 任何帮助将不胜感激 谢谢,MA。
答案 0 :(得分:0)
所有问题都是因为我的项目目录。 该目录包含空格,并且与NDK不兼容。 我将项目移动到另一个目录,然后编译。