安卓4.4.2预置第三方apk,进行系统签名

来源:互联网 发布:单独的js文件怎么写 编辑:程序博客网 时间:2024/05/21 09:05

1.系统环境 : ubuntu14.04

2.android 源码版本 : 4.42

注意:如果Apk使用的不是系统签名,那么不能在Apk的AndroidMainifest.xml里面使用android:sharedUserId="android.uid.system",(通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。)否则的话apk虽然在out/target/product/xxx/system/app/目录下,但是不会显示,因为安装不了,系统签名不对。可以修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行 ,此处的作用就是获取系统签名

还有一种办法是使用目标系统的platform密钥来重新给apk文件签名。加入android:sharedUserId="android.uid.system"这个属性。 使用目标系统的platform密钥来重新给apk文件签名。在我的Android源码目录中的位置 是"build/target/product/security",下面的platform.pk8和platform.x509.pem两个文件。然后用 Android提供的Signapk工具来签名,在 在 android目录下/out/host/linux-x86/framework/signapk.jar 用法为:java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test_signed.apk。目标系统的platform密钥来重新给apk文件签名加入android:sharedUserId="android.uid.system"这个属性。 使用eclipse编译出apk文件,但是这个apk文件是不能用的。使用目标系统的platform密钥来重新给apk文件签名。在我的Android源码目录中的位置 是"build/target/product/security",
下面的platform.pk8和platform.x509.pem两个文件。然后用 Android提供的Signapk工具来签名,在 在 android目录下/out/host/linux-x86/framework/signapk.jar 用法为:java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test_signed.apk。还可以用IDE 中添加源码平台生成证书 platform.keystore生成平台platform.keystore文件。

安卓带源码的添加到系统apk

1.在 .../packages/apps/ 目录下新建文件夹 Test

2.将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen 目录

3.在  packages/apps/Test 下面创建文件 Android.mk,文件内容如下:
4.在 Test 目录下创建一个名为 Android.mk的文件,内容如下:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := Test

include $(BUILD_PACKAGE) 

4.切换到 .../build/target/product/ 目录,找到 generic_no_telephony.mk 文件 并编辑添加 Test 目录,并保存:

PRODUCT_PACKAGES += Test

5.重新 build 整个工程


安卓无源码添加系统apk:

步骤:

1.在 .../packages/apps/ 目录下新建文件夹 Test

2.在 Test目录下 添加 要预置的 apk文件,并且新建一个 Android.mk 文件

3.将从Test.apk解压出来的 so库拷贝到.../out/target/product/${Project}/system/lib/目录下,若无 so 库,则去掉此步;
4.在  packages/apps/Test 下面创建文件 Android.mk,文件内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Module name should match apk name to be installed

LOCAL_MODULE := Test

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := PRESIGNED

include $(BUILD_PREBUILT)


切换到 .../build/target/product/ 目录,找到 generic_no_telephony.mk 文件 并编辑添加 Test 目录,并保存:

PRODUCT_PACKAGES += Test

最后 Build 安卓源码

参考网站:http://blog.csdn.net/sergeycao/article/details/8198205

http://www.jianshu.com/p/63d699cffa1a
http://blog.csdn.net/lei1217/article/details/73694722


原创粉丝点击