|
/

android7.1.6版本,修改应用ApplicationId后微信分享退出分享崩溃

A爱疯的猪小爷
发布于 5 年前
779
社会化分享 U-Share
移动统计 U-App
SDK集成与升级
功能使用

问题概述:

在之前的应用中已经集成过“集成微信、QQ的分享功能”本次修改是解决同意隐私条款后初始化友盟分享,微信分享→取消分享,APP崩溃。

使用了友盟7.1.6 SDK,用户同意三方隐私条款后,初始化友盟分享SDK,

崩溃信息如下:找不到“com.example.test.dev.wxapi.WXEntryActivity”

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test.dev/com.example.test.dev.wxapi.WXEntryActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.test.dev.wxapi.WXEntryActivity" on path: DexPathList[[zip file "/data/app/com.example.test.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.test.dev-1/lib/arm64, /data/app/com.example.test.dev-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1556)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6388)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:930)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:820)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.test.dev.wxapi.WXEntryActivity" on path: DexPathList[[zip file "/data/app/com.example.test.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.test.dev-1/lib/arm64, /data/app/com.example.test.dev-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
... 9 more
java.lang.ClassNotFoundException: Didn't find class "com.example.test.dev.wxapi.WXEntryActivity" on path: DexPathList[[zip file "/data/app/com.example.test.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.test.dev-1/lib/arm64, /data/app/com.example.test.dev-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1556)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6388)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:930)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:820)

详细描述:

项目结构

project
|-app
|-push
|-share

app src预制的applicationId为

com.example.test

我们build.gradle配置了dev环境的 applicationId为 com.example.test.dev

productFlavors {
app_dev {
dimension 'default'
applicationId "com.example.test.dev"
}
app_release{
dimension 'default'
applicationId "com.example.test"
}

参考文档【自动化集成】加载包依赖

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

api 'com.umeng.umsdk:share-core:7.1.6'//分享核心库,必选
api 'com.umeng.umsdk:share-board:7.1.6'//分享面板功能,可选

api 'com.umeng.umsdk:share-wx:7.1.6' //微信完整版
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9'//微信官方依赖库,必选

api 'com.umeng.umsdk:share-qq:7.1.6'//QQ完整版
api 'com.tencent.tauth:qqopensdk:3.53.0'//QQ官方依赖库,必选
}

在Application,进行预加载

public class MyApplication extends MultiDexApplication { 
@Override
public void onCreate() {
super.onCreate();
PushHelper.preInit(context);
}
}

在MainActivity同意用户协议后,初始化SDK

//友盟分享初始化
UMConfigure.init(context, "", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
UMConfigure.setLogEnabled(BuildConfig.DEBUG);
UMConfigure.setEncryptEnabled(BuildConfig.DEBUG);

PlatformConfig.setWeixin(BuildConfig.WECHAT_APP_ID, BuildConfig.WECHAT_APP_SECRET);
PlatformConfig.setQQZone(BuildConfig.QQ_APP_ID, BuildConfig.QQ_APP_KEY);

在com.example.test下创建 wxapi.WXEntryActivity文件

package com.example.test;
public class WXEntryActivity extends WXCallbackActivity{

.....
}

配置AndroidManifest.xml配置

<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
tools:replace="android:theme"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

<!-- 创建WXEntryActivity的别名-->
<activity-alias
android:name="${applicationId}.wxapi.WXEntryActivity"
android:exported="true"
android:targetActivity=".wxapi.WXEntryActivity" />

1、在使用app_release进行打包编译后, 微信分享进入分享页,点击返回按钮取消分享,可以正常取消分享!

2、在使用app_dev进行打包编译后, 微信分享进入分享页,点击返回按钮取消分享,出现崩溃

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test.dev/com.example.test.dev.wxapi.WXEntryActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.test.dev.wxapi.WXEntryActivity" on path: DexPathList[[zip file "/data/app/com.example.test.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.test.dev-1/lib/arm64, /data/app/com.example.test.dev-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1556)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6388)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:930)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:820)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.test.dev.wxapi.WXEntryActivity" on path: DexPathList[[zip file "/data/app/com.example.test.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.test.dev-1/lib/arm64, /data/app/com.example.test.dev-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
... 9 more
java.lang.ClassNotFoundException: Didn't find class "com.example.test.dev.wxapi.WXEntryActivity" on path: DexPathList[[zip file "/data/app/com.example.test.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.test.dev-1/lib/arm64, /data/app/com.example.test.dev-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1556)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6388)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:930)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:820)
7个回答
 
5 年前

解决办法:

我在代码中创建了两个WXEntryActivity,并注册到AndroidMainifest.xml中 如下,之前只写了一个

com.example.test.wxapi.WXEntryActivity这个activity,重新copy了一份一模一样的com.example.test.dev.wxapi.WXEntryActivity,

<activity
android:name="com.example.test.wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
tools:replace="android:theme"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

<activity
android:name="com.example.test.dev.wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
tools:replace="android:theme"
android:launchMode="singleTask"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

 
5 年前

onresp加下重载,确认下包名和微信开放平台一致吧, wxentryactivity也没写xml页面是吗

Loading ...
登录社区,分享你的经验