您好我正在构建自定义应用程序。 PRE:
所以我开始考虑一个构建脚本,它接受用户列表并创建20个apks(每个用户一个)并使用每个用户所需的自定义修改更新strings.xml文件。
但我真的不知道从哪里开始。有什么好的方法或教程我可以参考吗?
为了清楚,我希望有一个这样的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="$pname"
android:versionCode="1"
android:versionName="1.0">
<application>...</application>
</manifest>
然后使用ant替换$ pname。
答案 0 :(得分:1)
我将使用20个不同的半空默认活动(每个用户一个),位于20个不同的包中,扩展了1个真实活动,如:
mypackage.user01.MyMainActivity extends mypackage.MyMainActivity;
mypackage.user02.MyMainActivity extends mypackage.MyMainActivity;
mypackage.user03.MyMainActivity extends mypackage.MyMainActivity;
...
mypackage.user20.MyMainActivity extends mypackage.MyMainActivity;
然后是20个不同的androidmanifests.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackage.userXX">
<application
android:icon="@drawable/MyIcon"
android:label="@string/MyApplication"
>
<activity android:name=".MyActivity"
android:label="@string/MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="mypackage.MyActivity"
android:label="@string/MyActivity"/>
<activity
android:name="mypackage.user01.MyActivity"
android:label="@string/MyActivity"/>
<!-- etc. till user20 -->
</application>
</manifest>
将使用简单的Ant复制任务复制到实际任务 - 它很容易实现,虽然有点无聊:)
答案 1 :(得分:1)
也许你正在寻找aapt命令。它有一个额外的标志--rename-manifest-package。帮助说
Rewrite the manifest so that its package name is the package name given here. Relative class names (for example .Foo) will be changed to absolute names with the old package so that the code does not need to change.
答案 2 :(得分:0)
如果您在应用中存储20个代码,并为每个客户提供一个代码,则可能会更简单。然后给每个客户提供相同的应用程序。应用程序根据输入的代码更改其属性。
如果这听起来像是正确的方法,我会看看我是否可以编写一些特定的方面。如果不是您所采用的方法,请您再向我提供一些有关如何识别这20人的信息?
答案 3 :(得分:0)
您还可以使用一些唯一的设备标识符。在Android Developers Blog上有一篇有趣的文章。
如果要创建构建脚本,可以使用Ant。