阅读:4655回复:3

apk编译打包过程及app原码移植到系统需要注意事项

楼主#
更多 发布于:2021-04-16 22:51
打包过程如图,需要注意的是第三方jar会编译到dex中。


注意事项:
1. 第三方jar:
mk关键字
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES
LOCAL_STATIC_JAVA_LIBRARIES
LOCAL_STATIC_JAVA_AAR_LIBRARIES


AS gradle中implementation 第三方的jar都能在本地找到,直接cp到app的libs下就可以使用。


2. apk找不到第三方库的类:
java.lang.RuntimeException: Unable to start ... can not find a class named...


通常是由于混淆(proguard)导致的
解决办法:禁用proguard: LOCAL_PROGUARD_ENABLED := disabled


或者禁止混淆该包中的类:大概如下:

LOCAL_PROGUARD_ENABLED := full
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
在proguard.flags中添加:
基本的:(网上搜一下)
-keep public class * extends android.app.Activity
....
该jar/aar中的类:

-libraryjars libs/xxx.jar
-dontwarn xxx.*
-keep class xxx
enum, interface, ...


大概就是这样了

最新喜欢:

zhaoyf13zhaoyf... VastStarGamesVastSt...
沙发#
发布于:2021-04-19 09:44
AS依赖的远程库需要把jar包下载下来放在libs目录,Android,mk文件导入,是这样吗
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
板凳#
发布于:2021-04-19 09:46
我们客户通常是需要把源码里面的apk导入到AS里编译
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
地板#
发布于:2021-04-19 12:55
zhaoyf13:AS依赖的远程库需要把jar包下载下来放在libs目录,Android,mk文件导入,是这样吗回到原帖
把系统中的app package引用到AS: 先import project,把res, src, manifest导进来,再用gradle配置jar和so,开源的jar可以直接在gradle中implement,自己编译的jar放在libs目录,然后implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
游客

返回顶部