【Android系统】记录我一次系统内置app碰到的问题

背景:
    
    内置一个爱奇艺的app, 是pad版,一个语音公司发给我们的,用于语音唤醒调用它播放视频资源。

遇到的问题:

    这个app内置到/system/app, /system/priv-app都有问题,问题是能联网,但是播放不了视频。

    app内提示"播放出错了,看看其他视频吧[null]"




------------------
测试与发现问题:
    Android.mk里的签名是PRESIGNED, 保留原有签名。(实际platform也试了,一样的现象)
    机器启动后,用adb install -r覆盖安装,app就能播放视频了...    

    我感觉很奇怪,以前内置都可以,不知道为什么这个app不行,是缺库 ? 或者安装时出了问题 ?



问题解决:
    
    时间急,一时想不到解决这个安装包内置什么时候出了问题。

    想了另一个办法,用一个开机脚本,开机启动时system("pm install -r /sdcard/temp/iqiyi.apk"),然后删除目录。这么搞。
上代码吧:
#define SOCKET_NAME "fstiService"
#define LOGD(...)   __android_log_print(ANDROID_LOG_DEBUG, "itv_assistance_native", __VA_ARGS__)
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include <errno.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/un.h>
//#include <cutils/sockets.h>
#include <android/log.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>
#include <pthread.h>
#include <string.h>
#include <fcntl.h>
#define LOGD(...)   __android_log_print(ANDROID_LOG_DEBUG, "itv_assistance_native", __VA_ARGS__)

#define UNUSED(x) ( (void)(x) )
//qyc add 2019/1/22 for serialno
#include <sys/system_properties.h>
//

void backlight_connect_cmd(char* p, char* str1);
void led_connect_cmd(char* p, char* str1, char* str2);

void *run(void *arg)
{
	if (!access("/sdcard//sdcard/temp/iqiyi_speaker.apk", 0)) 
	{
		system("pm install /sdcard/temp/iqiyi_speaker.apk");
		system("rm -rf /sdcard/temp");
	}
}

int main(int argC, char **argV) 
{
	int fun;			//argv[1], it is used as function code
	int value;			//argv[2], it is used as value 
	char cmd[80];
	int err;
	
	pthread_t th;
	err = pthread_create(&th, NULL, run, NULL);
	if (err != 0)
	{
		printf("failed: %d\n", err);
		exit(-1);
	}
	
	if (argC > 5) {
		LOGD("argC is not right..\n");
		return 0;
	}
	
//	fun = atoi(argV[1]);
//	value=atoi(argV[2]);
	

	
	LOGD("qyc, I'm in ledtest.. argV[2]=%s, fun=%d, value=%d\n", argV[2], fun, value);
	
	//system("pm install /sdcard/temp/iqiyi_speaker.apk");
	//system("rm -rf /sdcard/temp");
	
	return 0;
}

void backlight_connect_cmd(char* p, char* str1)
{
	strcpy(p, "echo ");
	strcat(p, str1);
	strcat(p, " ");
	strcat(p, " > /sys/class/leds/lcd-backlight/brightness");
	//strcat(p, " >/sys/devices/soc/soc\\:qcom,dsi1_bridge/dsi1_bl_value");
}

void led_connect_cmd(char* p, char* str1, char* str2)
{
	strcpy(p, "echo "); 
	strcat(p, str1);
	strcat(p, " ");
	strcat(p, str2);
	strcat(p, " >/sys/class/leds/aw9106_led/reg");
	
}
这几天一直搞这个蠢事,搞得脑壳疼。

以前mk是在device下rc文件里面写,试了两天以为自己的语法或者什么文件权限,selinux权限问题,一直启动不了。我是服了,心累

今天还是无目的的搜博客看,偶尔看到一篇是在system下的rc文件里面写的。

自己也没办法,我还以为这份系统源码有问题,device下的rc怎么就不能生效 ??以前都是可以的

没办法,自己又在system下的rc里面写了,一会儿就启动了。

-------------------
真的,android源码里的device和system目录就是乱的,乱七八糟的,什么rc文件,
selinux的te文件,真的一点规则没有,位置随便乱写,根本没讲究,里面大量冗余
代码,跟自己的平台一点关系没有。不知道为什么这样,让人挺迷惑的。

2021.08.16

        先拷贝到sdcard,在执行安装。这个逻辑上可行,但是实际/sdcard/目录挂载非常后,在android起来后才挂载,这个可执行文件早就执行了。

然后,我又去找目录,存放。。。最后放在/system/etc下

/system/etc/ 的权限是755

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值