Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ant脚本构建不同的Android应用程序_Android_Ant - Fatal编程技术网

如何使用ant脚本构建不同的Android应用程序

如何使用ant脚本构建不同的Android应用程序,android,ant,Android,Ant,您好,我正在构建一个自定义应用程序。 前: 该应用程序将仅限于有限数量的用户。(比如说20个人) 每个用户的应用程序应该是唯一的,因此每个apk将只引用一个用户 每个应用程序应具有不同的程序包名称 所以我开始考虑一个构建脚本,它获取用户列表并创建20个APK(每个用户一个),并使用每个用户所需的自定义修改来更新strings.xml文件 但我真的不知道从哪里开始。有什么好方法或教程可以参考吗 我只想说清楚我想要一份这样的清单: <manifest xmlns:android="htt

您好,我正在构建一个自定义应用程序。 前:

  • 该应用程序将仅限于有限数量的用户。(比如说20个人)
  • 每个用户的应用程序应该是唯一的,因此每个apk将只引用一个用户
  • 每个应用程序应具有不同的程序包名称
所以我开始考虑一个构建脚本,它获取用户列表并创建20个APK(每个用户一个),并使用每个用户所需的自定义修改来更新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。

如果在应用程序中存储20个代码,并为每个客户提供一个代码,可能会更简单。然后给每个客户相同的应用程序。应用程序根据输入的代码更改其属性


如果这听起来是正确的方法,我将看看是否可以编写一些特定方面的代码。如果这不是你想要的方法,请你给我一些关于如何识别这20个人的更多信息。

你也可以使用一些独特的设备标识符。网上有一篇关于这件事的有趣文章


如果要创建构建脚本,可以使用。

我将使用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复制任务将其复制到真实任务中-实现起来很容易,但有点枯燥:)

也许您正在寻找aapt命令。它还有一个附加标志——重命名清单包。帮助说


是的,如果我能那样做,那将是个好主意。我无法解释为什么,但我确实需要用20个不同的包名和一些不同的字符串值构建20个不同的APK。问题是,使用十六进制编辑器可以很容易地操纵字符串。包名是什么意思?换句话说,如果在任何地方,用户会在哪里看到这个“包名”?Andrea,您对安全性有多担心?有人试图破解它的可能性有多大?有很多问题,也有很多方法。如果你能在你的帖子中提供更多信息,解释应用程序的性质和这些人,这将是非常有用的。谢谢你的回答。我想用蚂蚁。但是我真的不知道如何实现包名任务。(因为我可能是一个使用ant的新手)我不认为更改包名是归档这个包的好方法。看看你是否可以使用Device-ID。我已经试过了,但是客户不想听到关于这个话题的任何消息。他希望这样。谢谢@barmaley,用$pname之类的东西替换标记中的mypackage.userXX,并使用ant命令行:ant release-Dpname=mypackage.user00?从未尝试过。。。实际上,我在应用程序中使用的方法与我在文章中描述的方法相同——在lite和完整版本之间进行划分。当然,在清单中自动替换应用程序包会很好,但我不知道怎么做。我不是真正的安亭专家。。。
 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.