为什么不能在Android4.1,4.2中的Cocos2d-x中如此加载?

为什么不能在Android4.1,4.2中的Cocos2d-x中如此加载?,android,cocos2d-x-3.0,Android,Cocos2d X 3.0,背景 它无法加载Android4.1,4.2中Cocos2d-x上的第三个*.so文件 而在其他较新的android系统,如android 4.3等,我的项目可以正确加载*.so文件 错误日志 at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:148) at android.os.Binder.execTransact(Binder.java:351) at dalvik.system.N

背景

它无法加载Android4.1,4.2中Cocos2d-x上的第三个*.so文件

而在其他较新的android系统,如android 4.3等,我的项目可以正确加载*.so文件

错误日志

at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:148) at android.os.Binder.execTransact(Binder.java:351) at dalvik.system.NativeStart.run(Native Method) 02-03 12:52:37.521 24884-24884/? E/linker: load_library(linker.cpp:759): library "libhuanyu-sdk-jni.so" not found

02-03 12:52:37.521 24884-24884/? E/linker: soinfo_link_image(linker.cpp:1652): could not load library > "libhuanyu-sdk-jni.so" needed by "libwlgame.so"; caused by load_library(linker.cpp:759): library > "libhuanyu-sdk-jni.so" not found

02-03 12:52:37.521 24884-24884/? E/dalvikvm: dlopen("/data/app-lib/com.tencent.tmgp.weile.jiaxiangmj-1/> libwlgame.so") failed: Cannot load library: soinfo_link_image(linker.cpp:1652): could not load library > "libhuanyu-sdk-jni.so" needed by "libwlgame.so"; caused by load_library(linker.cpp:759): library > "libhuanyu-sdk-jni.so" not found

02-03 12:52:37.527 24884-24884/? E/AndroidRuntime: FATAL EXCEPTION: main java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1652): could not load library > "libhuanyu-sdk-jni.so" needed by "libwlgame.so"; caused by load_library(linker.cpp:759): library > "libhuanyu-sdk-jni.so" not found at java.lang.Runtime.loadLibrary(Runtime.java:372) at java.lang.System.loadLibrary(System.java:514) at weile.games.AppActivity.<clinit>(AppActivity.java:15) at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1319) at android.app.Instrumentation.newActivity(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268) at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403)

at android.app.ActivityThread.access$600(ActivityThread.java:165) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5415) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) 02-03 12:52:37.539 587-608/? E/AppErrorDialog: Failed to get ILowStorageHandle instance

02-03 12:52:37.569 587-24907/? E/ActivityThread: Failed to find provider info for > com.bbk.launcher2.timeline.provider 02-03 12:52:38.129 587-605/? E/AudioService: handleConfigurationChanged() createInstance IAudioServiceExt fail
android.content.ContentProviderNative.onTransact(ContentProviderNative.java:148)和android.os.Binder.execTransact(Binder.java:351)的dalvik.system.NativeStart.run(Native Method)02-03 12:52:37.521 24884-24884/?E/linker:load_库(linker.cpp:759):未找到库“libhuanyu sdk jni.so” 02-03 12:52:37.521 24884-24884/? E/linker:soinfo_link_image(linker.cpp:1652):无法加载库>“libwlgame.so”所需的“libhuanyu sdk jni.so”;由load_库(linker.cpp:759)引起:库>“libhuanyu sdk jni.so”未找到 02-03 12:52:37.521 24884-24884/? E/dalvikvm:dlopen(“/data/app lib/com.tencent.tmgp.weile.jiagiangmj-1/>libwlgame.so”)失败:无法加载库:soinfo\u link\u image(linker.cpp:1652):无法加载库>“libwlgame.so”所需的“libhuanyu sdk jni.so”;由load_库(linker.cpp:759)引起:库>“libhuanyu sdk jni.so”未找到 02-03 12:52:37.527 24884-24884/? E/AndroidRuntime:致命异常:main java.lang.UnsatifiedLink错误:无法加载库:soinfo_link_映像(linker.cpp:1652):无法加载库>“libwlgame.so”所需的“libhuanyu sdk jni.so”;由load_library(linker.cpp:759)引起:library>在java.lang.Runtime.loadLibrary(Runtime.java:372)的java.lang.System.loadLibrary(System.java:514)的weile.games.AppActivity(AppActivity.java:15)的java.lang.Class.newInstanceImpl(本机方法)的java.lang.Class.newInstance(Class.java:1319)的java.java位于android.app.Instrumentation.newActivity(Instrumentation.java:1125)处的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)处的 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403) 在android.app.ActivityThread.access$600(ActivityThread.java:165)在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)在android.os.Handler.dispatchMessage(Handler.java:107)在android.os.Looper.loop(Looper.java:194)在android.app.ActivityThread.main(ActivityThread.java:5415)在java.lang.reflect.Method.invokenactive(本机方法)位于java.lang.reflect.Method.invoke(Method.java:525) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 位于dalvik.system.NativeStart.main(本机方法)02-03 12:52:37.539 587-608/?E/AppErrorDialog:获取ILowStorageHandle实例失败 02-03 12:52:37.569 587-24907/?E/ActivityThread:未能找到>com.bbk.launcher2.timeline.provider 02-03 12:52:38.129 587-605/?E/AudioService:HandleConfiguration Changed()createInstance IAudioServiceText失败
Cocos2d如何加载*so文件?

  • 按AndroidManifest.xml提供的名称加载*so文件

    <!-- Tell Cocos2dxActivity the name of our .so -->
    <meta-data
        android:name="android.app.lib_name"
        android:value="MyGame" /> 
    
  • 不同Android系统中的动态文件依赖和加载机制

    是的。比Android4.1、4.2更新的系统具有更好的灵活性

  • 如何在Android4.1,4.2上修复它

    坚持:

    a、 不要添加间接库来生成本地_模块

    b、 首先加载依赖的库,然后再加载依赖模块。例如

    @凌驾 创建时受保护的void(Bundle savedInstanceState){ myProCoco2dx rtcnengine=myProCoco2dx.getInstance(); super.onCreate(savedInstanceState); init(getApplicationContext(),appId)

    }

    myProCoco2dx.getInstance();确保首先加载myProCoco2dx

  •     try {
    
            ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
    
            Bundle bundle = ai.metaData;
            String libName = bundle.getString("android.app.lib_name");
            System.loadLibrary(libName);
        } 
    catch (Exception e) {
    
            e.printStackTrace();
        }
    
    }
    
    @Override
    
    protected void onCreate(final Bundle savedInstanceState) 
    {
    
        super.onCreate(savedInstanceState);
    
        this.hideVirtualButton();
    
        onLoadNativeLibraries();
    
        sContext = this;
        this.mHandler = new Cocos2dxHandler(this);
    
        Cocos2dxHelper.init(this);
    
        this.mGLContextAttrs = getGLContextAttrs();
        this.init();
    
        if (mVideoHelper == null) {
            mVideoHelper = new Cocos2dxVideoHelper(this, mFrameLayout);
        }
    
        if(mWebViewHelper == null){
            mWebViewHelper = new Cocos2dxWebViewHelper(mFrameLayout);
        }
    
        if(mEditBoxHelper == null){
            mEditBoxHelper = new Cocos2dxEditBoxHelper(mFrameLayout);
        }
    
        Window window = this.getWindow();
        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    
        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    }