Android 生成签名的apk找不到公共超类
我正在尝试为我的应用程序生成已签名的apk,但每次尝试生成时都会出现此错误: 找不到[com/google/android/gms/internal/zzata](有1个已知的超类)和[java/lang/String](有2个已知的超类)的通用超类Android 生成签名的apk找不到公共超类,android,android-gradle-plugin,signed-apk,Android,Android Gradle Plugin,Signed Apk,我正在尝试为我的应用程序生成已签名的apk,但每次尝试生成时都会出现此错误: 找不到[com/google/android/gms/internal/zzata](有1个已知的超类)和[java/lang/String](有2个已知的超类)的通用超类 以前我可以使用不同的密钥库构建签名的apk,但现在我得到的只是这个错误。这看起来像是proguard设置问题,请参阅: 如果缺少的类是从您自己的代码中引用的,那么您可能忘记指定一个基本库。就像从头开始编译所有代码一样,必须直接或间接指定代码引用的所
以前我可以使用不同的密钥库构建签名的apk,但现在我得到的只是这个错误。这看起来像是proguard设置问题,请参阅:
如果缺少的类是从您自己的代码中引用的,那么您可能忘记指定一个基本库。就像从头开始编译所有代码一样,必须直接或间接指定代码引用的所有库。如果要处理库并将其包含在输出中,则应使用
-injars
指定库,否则应使用-libraryjars
指定库。看起来我发现了问题所在。在我的应用程序build gradle
中,我的依赖项如下所示:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':libcocos2dx')
}
//dependencies { compile 'com.google.android.gms:play-services-ads:15.0.1' }
dependencies { compile 'com.google.android.gms:play-services-analytics:12.0.1' }
dependencies { compile 'com.google.android.gms:play-services-auth:15.0.0' }
dependencies { compile 'com.google.android.gms:play-services-games:15.0.0' }
dependencies { compile 'com.google.android.gms:play-services-drive:15.0.0' }
上面提到的错误是,在
googlegms
名称空间中找不到库引用。原来这是因为我在'com.google.android.gms:play services analytics:12.0.1'
服务中使用的版本。我刚刚将版本从12.0.1
更改为15.0.0
,就像其他库一样,然后它工作并生成我的签名APK。感谢所有帮助,我希望这可以帮助任何有同样问题的人。您的apk版本的proguard设置如何?如果您需要,我可以发布proguard文件及其设置。今天早些时候,它一直在工作,直到我因为忘记密码而更改了密钥库。从proguard设置中删除-dontwarn
会抑制关于未解析引用的警告,这样您就可以获得更详细的错误/警告日志。好的,我现在就这样做并发布结果。我正在使用一个Cocos2DX项目,如果这会有什么不同的话,只是它在前面生成了一个apk,并且没有任何变化,除了一个不同的keystorecheck,看看它是否有帮助:您可以将依赖项合并成一个dependencies{}
并将所有编译
更改为实现
,以获得较新的gradle插件版本。