我下载了一个开源应用程序的源代码。它应该工作正常。我没有更改代码中的任何内容。我在应用程序中没有错误,但是当我尝试启动它时,它只会崩溃(在模拟器和真实设备上)。
这是整个LogCat:
03-05 17:29:30.521: E/AndroidRuntime(410): FATAL EXCEPTION: main
03-05 17:29:30.521: E/AndroidRuntime(410): java.lang.ExceptionInInitializerError
03-05 17:29:30.521: E/AndroidRuntime(410): at com.grafian.quran.App.loadFont(App.java:73)
03-05 17:29:30.521: E/AndroidRuntime(410): at com.grafian.quran.App.onCreate(App.java:41)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3272)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.app.ActivityThread.access$2200(ActivityThread.java:117)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.os.Looper.loop(Looper.java:130)
03-05 17:29:30.521: E/AndroidRuntime(410): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-05 17:29:30.521: E/AndroidRuntime(410): at java.lang.reflect.Method.invokeNative(Native Method)
03-05 17:29:30.521: E/AndroidRuntime(410): at java.lang.reflect.Method.invoke(Method.java:507)
03-05 17:29:30.521: E/AndroidRuntime(410): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-05 17:29:30.521: E/AndroidRuntime(410): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-05 17:29:30.521: E/AndroidRuntime(410): at dalvik.system.NativeStart.main(Native Method)
03-05 17:29:30.521: E/AndroidRuntime(410): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load render: findLibrary returned null
03-05 17:29:30.521: E/AndroidRuntime(410): at java.lang.Runtime.loadLibrary(Runtime.java:429)
03-05 17:29:30.521: E/AndroidRuntime(410): at java.lang.System.loadLibrary(System.java:554)
03-05 17:29:30.521: E/AndroidRuntime(410): at com.grafian.quran.text.NativeRenderer.<clinit>(NativeRenderer.java:42)
我的代码是:
public class App extends Application {
public static String PACKAGE_NAME;
final public Config config = new Config();
final public Bookmark bookmark = new Bookmark();
final public MetaData metaData = new MetaData();
final public QuranText quranText = new QuranText();
final public QuranText translation = new QuranText();
final public QuranWord quranWord = new QuranWord();
public static App app;
private int loadedFont = -1;
@Override
public void onCreate() {
super.onCreate();
PACKAGE_NAME = getPackageName();
app = this;
config.load(this);
bookmark.load(this);
loadFont();
}
private String getQuranTextPath() {
return new File(getExternalFilesDir(null), "quran-uthmani").toString();
}
private String getTranslationPath() {
return new File(getExternalFilesDir(null), config.lang).toString();
}
private String getQuranWordPath() {
return new File(getExternalFilesDir(null), "words_en").toString();
}
public boolean loadFont() {
if (loadedFont != config.fontArabic) {
String name;
switch (config.fontArabic) {
case Config.FONT_NASKH:
name = "naskh.otf";
break;
case Config.FONT_NOOREHUDA:
name = "noorehuda.ttf";
break;
case Config.FONT_ME_QURAN:
name = "me_quran.ttf";
break;
default:
name = "qalam.ttf";
}
try {
NativeRenderer.loadFont(getAssets().open(name));
loadedFont = config.fontArabic;
} catch (IOException e) {
e.printStackTrace();
loadedFont = -1;
return false;
}
}
return true;
}
public boolean loadAllData() {
return loadFont()
&& quranText.load(this, getQuranTextPath())
&& translation.load(this, getTranslationPath())
&& quranWord.load(this, getQuranWordPath());
}