安卓手机安装软件提示“您的设备不支持add-on属性”的解决方法

 更新时间:2016年9月20日 19:59  点击:1703
安卓手机安装软件提示“您的设备不支持add-on属性”的解决方法,有碰此此类问题的朋友可参考本文章来解决,

园子今天使用安卓手机安装游戏时,遇到了提示“您的设备不支持add-on属性”的情况,出现提示后软件就安装不了了。本文分享下使用安卓手机安装软件时出现“您的设备不支持add-on属性”的解决方法。

在网上搜索一番,发现有不少机友也出现了类似情况。出现这种错误提醒大多是因为安装的软件带有运动追踪器、基站定位等功能的软件,主要原因是因为手机中缺少谷歌的服务造成的。使用安卓手机的机友一般比较喜欢刷机,刷的ROM包很多都去掉了谷歌服务套件,部分软件中所带有的类似运动追踪的功能,缺少谷歌服务是无法运行的。下面的方法就是重新把安装此类软件所必须的谷歌服务文件恢复到手机中来解决的。

安卓手机安装软件提示“您的设备不支持add-on属性”的解决方法

1.首页需要 ROOT 你的手机,不清楚如何 ROOT 请自行搜索相关教程。

2.在本文下方下载运行该类软件所必须的谷歌的套件包,解压后得到三个文件。

3.使用RE管理器,把解压后的三个文件分别复制到相应的目录,如果没有,请新建该目录。三个文件对应的目录如下所示:

 代码如下 复制代码

/system/framework/com.google.android.maps.jar
/system/etc/permission/com.google.android.maps.xml
/data/app_s/NetworkLocation.apk

4.修改三个文件的权限,修改方法为:使用RE管理器,挂载读写权限,在对应文件上长按选择“权限”命令。修改后的权限应为:左边全选,中间最上面选上,右边全空。如下图所示:

安卓手机安装软件提示“您的设备不支持add-on属性”的解决方法

安卓手机安装软件提示“您的设备不支持add-on属性”的解决方法

5.重新启动手机,再次安装该类软件或游戏时,就可以完美安装运行了。

经过以上简单的五步,就完美解决了安卓手机安装软件时提示“您的设备不支持add-on属性”的问题,园子使用的手机型号为中兴U880,其他手机型号请各位自行测试,如遇到问题请留言给我。

本文章来给各位同学介绍Android自动弹出软键盘实例方法,有需要了解的同学可进入参考。

在AndroidManifest.xml文件,对应Activity处增加:android:windowSoftInputMode="stateVisible|adjustResize"

stateVisible:打开Activity时自动弹出软键盘 adjustResize:Acitivity根据屏幕中的软键盘而调整大小,可以让软键盘始终显示在屏幕下方,并且不会将操作按钮覆盖住。

本文章来给大家介绍Android的程序解码与XML文件解码详解,有需要了解的同学可参考参考。

首先,怀着无比激动的心情写下这篇日志.....
Googles真的很给力....让我有幸看到ANDROID应用程序的内部源码....
下面开始言归正传:
ANDROID的应用程序是由两部分组成的.
1.*.class文件
2.*.xml文件  解码时候需要使用到不同的工具...
下面开始介绍*.class(类文件的解码)
需要用到的工具:
dex2jar和JD-GUI
dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI下载地址:
windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz
 
A:将*.apk文件的后缀修改成*.zip,然后解压,会在文件夹内发现一个叫classes.dex的文件
B:将dex2jar解压后放到C盘根目录,然后将classe.dex放到这个文件夹中来
然后在开始运行中输入CMD,
将路径定位到dex2jar.bat所在的文件夹(dex2jar.bat为dex2jar解压后文件夹内存在的一个*.BAT文件)
然后输入:dex2jar.bat classes.dex
(这里有可能会报错,如果报错好好看一下JAVA的环境变量是什么,配置的对不对)
C:如果一切正常就会解码出来一个*.jar文件
D:用刚才提及到的JD-GUI来解码*.jar文件 (windows环境的直接拖上去可以)
E:很多公司开发出来的源码都是修改了类名,方法名的- -这个比较恶心,也没有什么好办法,只能费点眼神仔细看了....
 
下面是*.xml文件的解码
需要用到的工具:
apktool1.4.1.tar.bz2
apktool-install-windows-r04-brut1.tar.bz2
这两个工具可以在Google官方提供的URL地址:http://code.google.com/p/android-apktool/
上下载
然后解压,
A:两个压缩包内的所有文件都要放在同一个路径下,本人放的还是C盘根目录
B:将需要解码的*.apk文件放到和步骤A中解压的文件相同的路径下(本人放的依旧是C盘根目录)
C:开始--->运行输入CMD,然后定位到C盘,在命令提示框内输入:apktool d C:*.apk  C:***
(*.apk为需要解码的应用程序,***为文件夹名称)
D:解码后就能清晰的看到程序内所有用到的*.XML文件啦...包括布局文件和AndroidManifest.xml文件

ndroid的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它包括电话本身占用的和开发者可以使用的两部分。即使你没有占用全部内存的打算,你也应该尽量少的使用内存,以免别的应用在运行的时候关闭你的应用。Android能在内存中保持的应用越多,用户在切换应用的时候就越快。作为我的一项工作,我仔细研究了Android应用的内存泄露问题,大多数情况下它们是由同一个错误引起的,那就是对一个上下文(Context)保持了长时间的引用。

在Android中,上下文(Context)被用作很多操作中,但是大部分是载入和访问资源。这就是所有的widget都会在它们的构造函数中接受一个上下文(Context)参数。在一个合格的Android应用中,你通常能够用到两种上下文(Context):活动(Activity)和应用(Application)。活动(Activity)通常被传递给需要上下文(Context)参数的类或者
方法:

 代码如下 复制代码

@Override

protected void onCreate(Bundle state) {

super.onCreate(state);

TextView label = new TextView(this);

label.setText("Leaks are bad");

setContentView(label);

}


这就意味着那个View有一个对整个活动(Activity)的引用并且对这个活动(Activity)中保持的所有对象有保持了引用;通常它们包括整个View的层次和它的所有资源。因此,如果你“泄露”了上下文(Context)(这里“泄露”的意思是你保持了一个引用并且组织GC收集它),你将造成大量的内存泄露。如果你不够小心的话,“泄露”一整个活动(Activity)是件非常简单的事情。

当屏幕的方向改变时系统会默认的销毁当前的活动(Activity)并且创建一个新的并且保持了它的状态。这样的结果就是Android会从资源中重新载入应用的UI。现在想象一下,你写了一个应用,有一个非常大的位图,并且你并不想在每次旋转时都重新载入。保留它并且每次旋转不重新加载的最简单的办法就是把它保存在一个静态字段上:

 代码如下 复制代码

private static Drawable sBackground;


@Override

protected void onCreate(Bundle state) {

super.onCreate(state);


TextView label = new TextView(this);


label.setText("Leaks are bad");

if (sBackground == null) {


sBackground = getDrawable(R.drawable.large_bitmap);


}

label.setBackgroundDrawable(sBackground);

setContentView(label);

}

这段代码非常快,同时也错的够离谱。它泄露了当第一次屏幕角度改变时创建的第一个活动(Activity)。当一个Drawable被附加到一个View,这个View被设置为drawable的一个回调。在上面的代码片断中,这意味着这个Drawable对TextView有一个引用,同时这个TextView对Activity(Context对象)保持着引用,同时这个Activity对很多对象又有引用(这个多少还要看你的代码了)。

这个例子是造成Context泄露的最简单的一个原因,你可以看一下我们在主屏幕源码(查看unbindDrawables()方法)中是通过在Activity销毁时设置保存过的Drawable的回调为空来解决这个问题的。更为有趣的是,你可以创建一个context泄露的链,当然这非常的糟糕。它们可以让你飞快的用光所有的内存。

有两种简单的方法可以避免与context相关的内存泄露。最明显的一个就是避免在context的自身的范围外使用它。上面的例子展示了在类内部的一个静态的引用和它们对外部类的间接引用是非常危险的。第二个解决方案就是使用Application Context。这个context会伴随你的应用而存在,并且不依赖Activity的的生命周期。如果你计划保持一个需要context的长生命周期的对象,请记得考虑Application对象。你可以非常方便的通过调用Context.getApplicationContext() 或者 Activity.getApplication()获取它。

总之,为了避免涉及到context的内存泄露,请记住如下几点:

1.不要对一个Activity Context保持长生命周期的引用(一个对Activity的引用应该与Activity自身的生命周期相同)
2.尝试使用应用上下文(context-application)代替活动上下文(context-activity)
3.如果你不能控制它们的生命周期,在活动(Activity)中避免使用不是静态的内部类,使用静态类并且使用弱引用到活动(Activity)的内部。对于这个问题的解决方法是使用静态的内部类与一个弱引用(WeakReference)的外部类。就像ViewRoot和它的W内部类那么实现的。
4.垃圾回收器对于内存泄露来说并不是百分百保险的。

在进行Android界面开发的时候,你想给TextView加个边框,找了半天发现没有这个属性,是不是有点蛋疼呢。下面就总结一下有哪些方法能够实现边框效果。

1.嵌套一层,利用内容的margin或者padding的留白加容器的背景来实现边框效果。

其实这个道理很简单,很早的时候那时候我们还用table做html页面布局的时候,我们就是使用cellspacing来实现table的边框的。现在我们也利用同样的想法来实现。

Android下实现边框效果 方案一

Android下实现边框效果 方案一

其中padding产生留白,就形成类似边框的效果。

<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2px" android:background="#f00">
    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello world!" android:background="#000"></TextView>
</LinearLayout>

当然内部的容器也是需要有颜色的,如果想实现内部透明的效果则需要将内部View的背景色跟背景的颜色保持一致,这是不太方便的地方。

2.使用9-patch(九宫格)的背景图片来实现边框效果。

做一个有边框的9-patch图片,作为要有边框的View的背景图即可。这样你还可以控制哪边有边框,哪边无边框,这种方法是比较好的一种方法,而且没有多余的View嵌套。另外你还可以实现圆角边框等效果。

Android下实现边框效果 方案二

Android下实现边框效果 方案二

如果你还不了解关于9-patch的内容,请移步。你需要做一个有边框的png图片,使用sdk的tools文件夹下的draw9patch.bat工具,你可以轻松生成9-patch图片。工具用起来很简单。左侧和顶部的线用于扩展重复显示的内容,右侧和底部的线用于控制内容显示的位置。在这里我要先感谢国家,我们现在已经可以自由的访问Android开发者站点。

3.利用shape的stroke来实现边框效果。

当然你可以使用shape中的stroke来实现border的效果。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <stroke android:width="1dp" android:color="#f00" />
</shape>

然后你可以引用这个shape作为背景就可以实现边框效果。关于更多关于shape的内容请移步。

最终的效果展示:

当然还有很多其他的变通方法,比如你也可以添加一个view把宽度设置为1dp,作为边框。这个就需要你在实际开发中变通使用了。

[!--infotagslink--]

相关文章

  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • 破解安卓手机上的九宫格锁方法步骤

    很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事 安卓手机的图形锁(九宫格)...2016-09-20
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • 总结android studio注意事项及打不开等问题解决方法

    经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20
  • MySQL ERROR 2013 (HY000)错误解决方法

    当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15
  • IE6-IE9中tbody的innerHTML不能赋值的解决方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07
  • Mysql修改datadir导致无法启动问题解决方法

    centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
  • Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法

    首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14
  • 小米解锁验证失败怎么办 小米解锁工具登录失败解决方法

    小米手机如果想要刷机就必须要先解锁验证才可以,那么,如果遇到小米解锁验证失败以及小米解锁工具登录失败的现象怎么办呢?对此,本文就为大家进行解答,有需要的朋友来看看。...2016-12-21
  • photoshop字体显示乱码解决方法

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来详细的说一下软件的字体出现了乱码这一问题的解决方法,那么各位有出现这个问题的,下面就来跟着小编一起看...2016-09-14
  • Ubuntu15下mysql5.6.25不支持中文的解决办法

    apt-get install 安装的,不是源码包安装的mysql1 修改mysql的配置文件/etc/mysql/conf.d/mysql.cnf在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有【mysql】)no-auto-rehash default-character-set=utf8/etc/...2015-10-21
  • 51安卓模拟器启动失败解决方法

    有部分小伙伴表示自己遇到了51模拟器程序不能打开的情况,那么51模拟器打不开怎么回事?下面我就来为大家分享一下解决的方法,有需要的小伙伴就来看一看吧。 &#8195;&...2017-07-06
  • CentOS下php使用127.0.0.1不能连接mysql的解决方法

    php代码很简单:复制代码 代码如下: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$link) { die('Could not connect: ' . mysql_error().mysql_errno()); } lin...2015-03-15
  • PHP is_subclass_of函数的一个BUG和解决方法

    is_subclass_of的作用:复制代码 代码如下:bool is_subclass_of ( object object, string class_name )如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。注: 自 PHP 5.0.3 起也可以用一个字符...2014-06-07
  • mysql too many open connections问题解决方法

    曾经以为在my.cnf写入max_connections = 2000就可以改变mysql的最大并发量,今天查到一个命令,发现服务器的mysql最大连接数为151.控制台,连接上mysql复制代码 代码如下:show variables;这条命令可以看到所有基础配置如果...2014-05-31
  • mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    这篇文章主要介绍了mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法,涉及MySQL语句的使用技巧,需要的朋友可以参考下...2016-01-15