Android.mk 如下所示
LOCAL_PATH:= $(call my-dir)
$(shell mkdir -p $(TARGET_OUT)/app/Facebook/)
$(shell cp -rf $(LOCAL_PATH)/lib $(TARGET_OUT)/app/Facebook/)
$(shell cp -rf $(LOCAL_PATH)/Facebook.apk $(TARGET_OUT)/app/Facebook/Facebook.apk)
遇到了2个问题。
1.签名异常
使用 LOCAL_CERTIFICATE := PRESIGNED 编译后的apk签名异常。
apksigner verify --print-certs Facebook.apk
DOES NOT VERIFY
ERROR: JAR signer FACEBOOK.RSA: JAR signature META-INF/FACEBOOK.SF indicates the APK is signed using APK Signature Scheme v2 but no such signature was found. Signature stripped?
解决方法是使用cp的到目录下的方式去安装,不编译。
2.找不到so。
E/AppInitScheduler|Run: Exception in InitSharedLibraries
com.facebook.soloader.SoLoaderDSONotFoundError: couldn't find DSO to load: libsuperpack-jni.so
existing SO sources:
SoSource 0: ApplicationSoSource[DirectorySoSource[root = /system/app/Facebook/lib/arm flags = 1]]
SoSource 1: DirectApkSoSource[root = [/system/app/Facebook/Facebook.apk!/lib/armeabi-v7a]]
SoSource 2: DirectorySoSource[root = /vendor/lib flags = 3]
SoSource 3: DirectorySoSource[root = /system/lib flags = 3]
Native lib dir: /system/app/Facebook/lib/arm
这个需要把lib下的armeabi-v7a(apk改zip后缀解压后的lib目录下的文件是armeabi-v7a)改名为arm。它找不到arm会报错。
目录层级如下所示。
├── Android.mk
├── Facebook.apk
└── lib
└── arm
├── libachilles-jni.so
├── libandroidx.graphics.path.so
├── libappcomponentfactory-jni.so
├── libarcore_sdk_jni.so
├── libbreakpad_cpp_helper.so
├── libbreakpad.so
├── libc++_shared.so
├── libdistract-config.so
├── libfbunwindstack.so
├── libsuperpack-jni.so
└── libunwindstack_binary.so
参考链接:
预置v2签名的apk
Android13解决android_app_import内置第三方APK安装失败问题