限制共享安卓应用APK

4
我是一个新手安卓开发者。我正在制作一个应用程序,在其中我必须限制用户将应用程序的.apk文件与其他安卓手机持有人共享。
比如说,如果我把我的.apk文件放在自己的网站上,那么我希望用户可以从我的网站下载.apk文件,但不能与其他人分享同一个.apk文件。我想限制apk文件只能在一部手机上使用。每次用户想要安装该应用程序时,他/她都必须从Play商店或我的网站安装,但无法安装共享的.apk文件。
另外,我想问一下,我们是否可以区分应用程序是分发和安装还是从Play商店安装的。
所以,你能告诉我如何解决这个问题吗?
提前感谢。

1
开发者控制台提供了许可密钥功能,但我认为这对您的网站不适用。 - anthropomo
3个回答

4

1) 如果用户已经在存储中拥有apk,你不能阻止他们传递你的apk文件,但你可以在你的应用程序安装后删除它(你应该通过一些api搜索它并删除它),限制 :apk可以在安装之前共享。

此外,市场上存在一些工具/应用程序,声称可以将已安装的应用程序转换为apk文件,然后将其转发到其他设备。

关于apk的前向锁定的类似问题

2) 虽然你不能阻止用户转发你的apk,但如果他们从你的网站以外的其他来源获取此应用程序,则可以阻止其他用户使用它。之前我用客户端服务器通信实现过这个功能,其中基于移动设备 IMEI 在服务器上生成一个密钥,因此该应用程序将根据 IMEI 号码激活特定的移动设备。因此,如果其他用户尝试使用它,你可以检查这个 IMEI 是否被注册,然后相应地采取行动。


1
嗨 AND_DEV,我猜我们可以通过使用存储IMEI号码并在每次应用程序启动时检查它的Web服务来实现这一点,如果是新的IMEI号码,则不应安装。 - android_developer
1
你不能阻止用户安装,但是可以阻止他使用你的应用。这就是我在我的帖子的第二段所说的。 - AAnkit

0

除非用户使用USB电缆/类似Astro文件管理器的实用程序,在ROOTED手机上,否则他将无法提取apk并传输到另一部手机。而知道如何root设备的用户比例非常低。因此,这个问题不应该出现。

即使假设用户可以很容易地提取apk(普通用户无法做到),问题就变成了在每个apk上生成唯一标识符字符串,然后将其打包在此apk中。现在,当它被提取并安装到另一个设备上时,应用程序可以检查标识符并在显示“不允许复制”消息后关闭。

请注意,标识符应绑定到唯一字符串,例如设备IMSI号码、电话号码或两者的组合。并且需要将此字符串写入在复制apk时传输的文件中,我建议在apk内的assets文件夹中使用属性文件进行此操作。希望这有所帮助。


你好@Omermuhammed,我也在考虑同样的问题,但是我需要制作两个apk吗?一个用于安装,另一个用于检查设备的唯一编号或其他信息吗? - android_developer
你错了。阅读APK文件不需要ADB或root权限。虽然它们的存储位置不可浏览,但文件本身是可读的,并且设备上有可读的信息可以提供它们的确切位置。 - Chris Stratton

-1
如果我们设法将应用程序数据文件夹与该应用程序的APK文件连接起来,那么我们的问题将很容易得到解决。例如,如果您将应用程序的文件夹发送给某人,则应用程序将自动将您的数据加载到其他用户中。如果他无法分离应用程序的两个部分(APP的apk文件和数据文件夹),那么这将有助于您...也有助于我。

存储没有这样的链接。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接