从哪里看安卓编译脚本变量定义
一:下载并解压ffmpeg源码
使用git或wget下载ffmpeg源码到/root/ff目录,安装git或wget后执行命令解压。
检查解压后的文件。
使用tar命令解压ffmpeg-3.4.tar.bz2文件。
使用unzip命令解压NDK压缩包。
查看目录结构。
安装make工具,用于自动化编译工作,提高效率。
二:配置编译脚本
定义环境变量,包括NDK目录、架构下的so库和头文件、交叉编译工具、CPU类型和输出路径。
使用env命令查看环境变量。
解决NDK版本r19后gcc兼容问题,通过修改cc路径使用clang。
执行make命令进行编译,使用-j参数指定并行任务数,编译完成后执行make install安装。
在指定路径下生成输出文件。
三:创建Shell脚本
创建并编辑android.sh文件,实现自动化交叉编译流程。
调整脚本参数实现动态配置。
重新执行脚本,生成编译结果。
㈡ 编译android 源码需要sdk环境吗
下面是android学习手册,可以查看编译源码,360手机助手中下载,
编译环境:ubuntu9.10,widnows平台目前不被支持。
1)安装必要的软件环境
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
官方推荐的就是上面这些,如果在编译过程中发现某些命令找不到,就apt-get它。可能需要的包还有:
$ sudo apt-get install make
$ sudo apt-get install gcc
$ sudo apt-get install g++
$ sudo apt-get install libc6-dev
$ sudo apt-get install patch
$ sudo apt-get install texinfo
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install valgrind
$ sudo apt-get install python2.5(或者更高版本)
需要注意的是,官方文档说如果用sun-java6-jdk可出问题,得要用sun-java5- jdk。经测试发现,如果仅仅make(make不包括make sdk),用sun-java6-jdk是没有问题的。而make sdk,就会有问题,严格来说是在make doc出问题,它需要的javadoc版本为1.5。
因此,我们安装完sun-java6-jdk后最好再安装sun-java5-jdk,或者只安装sun-java5-jdk。这里sun-java6-jdk和sun-java5-jdk都安装,并只修改javadoc.1.gz和javadoc。因为只有这两个是make sdk用到的。这样的话,除了javadoc工具是用1.5版本,其它均用1.6版本:
$ sudo apt-get install sun-java6-jdk
修改javadoc的link:
$ cd /etc/alternatives
$ sudo rm javadoc.1.gz
$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
$ sudo rm javadoc
$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc
2)设置环境变量
$ emacs ~/.bashrc
在.bashrc中新增或整合PATH变量,如下:
#java 程序开发/运行的一些环境变量
JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
保存后,同步更新:
source ~/.bashrc
3)安装repo(用来更新android源码)
创建~/bin目录,用来存放repo程序,如下:
$ cd ~
$ mkdir bin
并加到环境变量PATH中,在第2步中已经加入。
下载repo脚本并使其可执行:
$ curlhttp://android.git.kernel.org/repo>~/bin/repo
$ chmod a+x ~/bin/repo
4)初始化repo
repo是android对git的一个封装,简化了一些git的操作。
创建工程目录:
$ mkdir android
$ cd android
repo初始化:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
在此过程中需要输入名字和email地址。初始化成功后,会显示:
repo initialized in /android
在~/android下会有一个.repo的隐藏目录。
5)同步源代码
$ repo sync
这一步要很久很久。
6)编译android源码,并得到~/android/out目录
$ cd ~/andoird
$ make
这一过程很久。
7)在模拟器上运行编译好的android
编译好android之后,emulator在~/android/out/host/linux-x86/bin下,ramdisk.img,system.img和userdata.img则在~/android/out/target/proct/generic下。
$ cd ~/android/out/host/linux-x86/bin
增加环境变量
$ emacs ~/.bashrc
在.bashrc中新增环境变量,如下
#java 程序开发/运行的一些环境变量
export ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic
ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};
最后,同步这些变化:
$ source ~/.bashrc
$ cd ~/android/out/target/proct/generic
$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
最后进入android桌面,就说明成功了。
8)编译模块
android中的一个应用程序可以单独编译,编译后要重新生成system.img。
在源码目录下执行
$ . build/envsetup.sh (.后面有空格)
就多出一些命令:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
可以加—help查看用法。
我们可以使用mmm来编译指定目录的模块,如编译联系人:
$ mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/proct/generic/data/app/ContactsTests.apk
out/target/proct/generic/system/app/Contacts.apk
可以使用
$ make snod
重新生成system.img,再运行模拟器。
9)编译SDK
直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发android了。
a)修改/frameworks/base/include/utils/Asset.h
‘UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024’ 改为 ‘UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024’
原因是eclipse编译工程需要大于1.3M的buffer;
b)编译ADT
由于本人不使用eclipse,所以没有进行这步;
c)执行make sdk
注意,这里需要的javadoc版本为1.5,所以你需要在步骤1中同时安装sun-java5-jdk
$ make sdk
编译很慢。编译后生成的SDK存放在out/host/linux-x86/sdk/,此目录下有android-sdk_eng.xxx_linux- x86.zip和android-sdk_eng.xxx_linux-x86目录。android-sdk_eng.xxx_linux-x86就是 SDK目录。
实际上,当用mmm命令编译模块时,一样会把SDK的输出文件清除,因此,最好把android-sdk_eng.xxx_linux-x86移出来。
此后的应用开发,就在该SDK上进行,所以把7)对于~/.bashrc的修改注释掉,增加如下一行:
export PATH=${PATH}:~/android/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86/tools
注意要把xxx换成真实的路径;
d)关于环境变量、android工具的选择
目前的android工具有:
A、我们从网上下载的Android SDK,如果你下载过的话( tools下有许多android工具,lib/images下有img映像)
B、我们用make sdk编译出来的SDK( tools下也有许多android工具,lib/images下有img映像)
C、我们用make编译出来的out目录( tools下也有许多android工具,lib/images下有img映像)
那么我们应该用那些工具和img呢?
首先,我们一般不会用A选项的工具和img,因为一般来说它比较旧,也源码不同步。其次,也不会用C选项的工具和img,因为这些工具和img没有经过SDK的归类处理,会有工具和配置找不到的情况;事实上,make sdk产生的很多工具和img,在make编译出来out目录的时候,已经编译产生了,make sdk只是做了而已。
e)安装、配置ADT
略过;
f)创建Android Virtual Device
编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过android工具查看:
$ android list
创建AVD:
$ android create avd -t 1 -n myavd
可以android –help来查看上面命令选项的用法。创建中有一些选项,默认就行了。
再执行android list,可以看到AVD存放的位置。
以后每次运行emulator都要加-avd myavd或@myavd选项:
$ emulator -avd myavd
10)编译linux内核映像
a)准备交叉编译工具链
android代码树中有一个prebuilt项目,包含了我们编译内核所需的交叉编译工具。
b)设定环境变量
$ emacs ~/.bashrc
增加如下两行:
export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
export ARCH=arm
保存后,同步变化:
$ source ~/.bashrc
c)获得合适的内核源代码
$ cd ~/android
获得内核源代码仓库
$ git clone git://android.git.kernel.org/kernel/common.git kernel
$ cd kernel
$ git branch
显示
* android-2.6.27
说明你现在在android-2.6.27这个分支上,也是kernel/common.git的默认主分支。
显示所有head分支:
$ git branch -a
显示
* android-2.6.27
remotes/origin/HEAD -> origin/android-2.6.27
remotes/origin/android-2.6.25
remotes/origin/android-2.6.27
remotes/origin/android-2.6.29
remotes/origin/android-goldfish-2.6.27
remotes/origin/android-goldfish-2.6.29
我们选取最新的android-goldfish-2.6.29,其中goldfish是android的模拟器模拟的CPU。
$ git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
$ git branch
显示
android-2.6.27
* android-goldfish-2.6.29
我们已经工作在android-goldfish-2.6.29分支上了。
d)设定交叉编译参数
打开kernel目录下的Makefile文件,把CROSS_COMPILE指向刚才下载的prebuilt中的arm-eabi编译器.
CROSS_COMPILE ?= arm-eabi-
把
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,
$(call ld-option, -Wl$(comma)–build-id,))
这一行注释掉,并且添加一个空的LDFLAGS_BUILD_ID定义,如下:
LDFLAGS_BUILD_ID =
e)编译内核映像
$ cd ~/android/kernel
$ make goldfish_defconfig
$ make
f)测试生成的内核映像
$ emulator -avd myavd -kernel ~/android/kernel/arch/arm/boot/zImage
㈢ 在电脑上为android设备编写Python脚本的好用编译器
Android模拟器上安装Python解释器
我了解的有两种方法可以下载并安装Android软件。一个是通过Android直接访问网络,下载安装;另一个是通过PC下载,然后通过模拟器工具ADB安装。这里介绍第二种方式。
下载Python for Android解释器;
解释器框架,点击下载:http://code.google.com/p/android-scripting/downloads/detail?name=sl4a_r3.apk&can=2&q=
python解释器,点击下载:http://code.google.com/p/android-scripting/downloads/detail?name=PythonForAndroid_r4.apk&can=2&q=
安装Python for Android解释器;
设置环境变量,加入Android模拟器工具 adb.exe所在的路径。
打开cmd运行界面,输入adb。你会看到如下信息:
输入adb device。
输入adb install –s <解释器框架所在路径>;比如adb install –s c:/sl4a_r3.apk。安装完毕后,在你的android中就会出现SL4A图标。
同上的步骤,再把python解释器安装上。比如adb install –s c:/PythonForAndroid_r4.apk。安装完毕后,在你的Android中就会出现Python for Android图标。
在Android中点击Python for Android。进去后,有一个install的button,点击安装。这个程序会通过网络,下载到所需要的所有程序包。
测试Python for Android解释器;
当一切安装妥当后,在Android中点击SL4A图标。
在出现的列表中点击hello_world.py(或者其他的脚本);界面左上角会出现一个小的SL4A的图标,同时界面也会出现“hello world!”
如果你的Android运行结果如上所述,证明你的安装成功了,继续下一步。
Step4 : 编写可在Android模拟器运行的Python Script并执行
编写Python Script For Android;
传递Python Script到Android模拟器;
假设你编写的python脚本存放在c:/Hello_world.py中
打开cmd界面,运行adb push <local> <remote>;例如,adb push c:/Hello_world.py /sdcard/sl4a/scripts/Hello_wold.py
在Android模拟器上运行Python Script;
在Android上运行脚本,你会看到“Hello world!”出现在屏幕上。 (如同step3的结果)
如果你的运行结果如上所述,那么恭喜你,你已成功上传并运行了你的第一个android python脚本,继续下一步。
㈣ R软件的全局变量怎么定义
你需要调用的局部变量return()出来就可以了
另外一种方法是在脚本最外层定义变量,在脚本函数中用 <<- 给变量赋值就可以了
㈤ Android make 基础
Android编译演进过程:
build/ 目录下
source build/envsetup.sh
输入指令hmm 就可以查看信息
lunch 2
通过soong执行编译构建,这里执行make命令时,main.mk文件把一些环境变量和目标都配置好后,会执行envsetup.sh中的make()进行编译。
build/soong/soong_ui.bash --make-mode
------->
soong的编译过程:
soong_ui.bash 调用流程:
可以看到include 了main.mk文件,从main.mk开始,将通过include命令将其所有需要的.mk文件包含进来,最终在内存中形成一个包括所有编译脚本的集合,这个相当于一个巨大Makefile文件。Makefile文件看上去很庞大,其实主要由三种内容构成: 变量定义、函数定义和目标依赖规则,此外mk文件之间的包含也很重要。
5.工具链的关系
REF
https://blog.csdn.net/yiranfeng/article/details/109082489
㈥ 什么是脚本
一、啥叫脚本呢?
其实就是一段代码,作用就是:这些代码通过你的浏览器来鼓捣一下你的机器。这样,你就能通过点一下鼠标就可以发点欢迎词、发点情话啥地了。
二、怎么在聊天室放脚本呢?
<script src=您的脚本存放地址></script>
把这段代码放你右下角链接里就可以了。
三、你浏览器咋会知道你放脚本了呢?
因为每段脚本务都放在<script>和</script>之间了。一见到<script>字样,浏览器就会当成脚本来分析了。纯属浏览器的条件反射之一。
四、我从寒江脚本里学到啥了?
1、定义一个变量:
var a=1 的意思就是:定义一个变量a,并给a赋值为1
2、为啥要定义变量呢?
这话说的,干活不用人哪行啊?其实定义变量就是事先找几个人来,留着以后派给任务。
3、定义一个数组变量
var a_name_filter = new Array(。。。);
其实数组变量也是相当于找人,只不过这个人可以干好几样活而已(属于能人类型的)。
4、定义功能函数
function a(){}
这相当于各项任务。事先定义的变量一般会在这里体现出来。当你在脚本里写上a()之后,浏览器就会条件反射了(执行a功能函数中的语句)。
五、脚本的说明文字
啥东西都得有个说明书不是,脚本也得有呀,而且这个说明书最好要写在代码里(要不过后自己都看不明白了,多丢人啊。)
那么怎么写说明呢?
1、某行代码的说明可以放在此行代码的最后面,在行尾打上//然后再写入文字说明就可以了。
例如:
var room_name="悠悠柠檬情"; //聊天室名字
2、如果文字太多,一行写不下那咋办啊?
在此特殊说明一下,其实尽管代码一般都是英文字符,但说明文字绝对可以兼容现代汉语以及文言文的,(←废话)
如果是多行说明文字,可以这样写
//---------------------------------------------
//孤鹤脚本0.9999版just for my Love
//
//失去,也是一种笃定。
//
//就算拥有的时光,是那麽短暂;
//
//能够无怨无悔地为一个人付出,就是幸福。
//---------------------------------------------
看着感觉还不错吧?(^!-)
当然,还有更方便的写法,就是在说明文字的第一行写上/*,再在最后一行写上*/。例子如下:
/*
孤鹤脚本0.9999版 just for my Love
小薇啊,你可知道我多爱你,
我要带你飞到天上去
看那星星多么美丽
摘下一颗,轻轻送给你。。。
*/
本人强烈建议,不要在脚本里写歌词,因为有可能导致看脚本人的情感波动。:-)
六、数据类型
数据类型包括:字符串、数值、布尔三种类型。
javascript带有数据类型强制转换功能,这对编写者(尤其是对喝完酒写代码的人)来讲是一个大大的好事。要不你还得记好多的数据转换函数。
七、JScript的运算符
关于运算符的讲解,将会涉及很多很多的知识,请小学没有毕业的同志自学完成小学课程之后再看。
计算 符号 位运算 符号
-------------------------------------
负值 - 逻辑非 !
递增 ++ 小于 <
递减 -- 大于 >
乘法 * 小于等于 <=
除法 / 大于等于 >=
加法 + 等于 ==
加法 + 不等于 !=
减法 - 逻辑与 &&
等于 =
例一:
x=1+2
=======
答案:x被赋值为3
例二:
if (mylove=="小薇") {
document.write("回答正确,您属于多愁善感型的")
} else {
document.write("回答错误!您属于没事找抽型的")
} ======
运行结果:
如果变量mylove的值为“小薇”,那么,程序会执行document.write("回答正确,您属于多愁善感型的")
否则,则执行document.write("回答错误!您属于没事找抽型的")
我学到的脚本知识(二)
今夜,让我静静地想你(诗配JS语句篇)
今夜,我怅坐一隅静静地想你,
想知道你在做什么,想知道你有没有在想我;
一、if...else 语句[根据表达式的值,有条件地执行一组语句。]
我想你,你想我吗?如果我不想你,那么你还想我吗?
用语句控制如下:
if 我想你 {你想我吗?} else{那么你还想我吗?}
通常都先定义一个变量来做为判断条件。
a='我想你';
if (a=='我想你') { b='你想我吗?'} else { b='那么你还想我吗?' }
二、do...while 语句[第一次执行一个语句块,然后重复循环的执行该语句块,直到条件表达式等于 false。]
折九百九十九只纸鹤我就会去睡的,
用语句控制如下:
i=1;
do
(折一只纸鹤;)
i=i++;
while(i<999)
三、switch 语句[当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。]
我想你,
(假设前面已经为a赋值)
switch(a){
case 想为你点亮一盏桔色的灯,:
静静守候着你疲惫的归来;
case 想为你递上一杯温热的香茗,:
缓缓驱散你脸上的倦容;
case 想用我温柔纤细的手指,:
轻轻抚平你眼角的皱纹;
case 想用我轻柔温情的呢喃,:
抚慰你驿动不安的心灵。;
}
然后静静地看着你……
我祈求,祈求这一刻的宁静、永恒。
四、for 语句[只要指定条件为 true 都执行语句块。]
(第二条语句也可以用FOR语句来表达)
用语句控制如下:
for (i = 1; i < 999; i++) {
(折一只纸鹤;)
}
五、while 语句[执行一个语句,直到指定的条件为 false。]
(第二条语句也可以用while语句来表达)
折九百九十九只纸鹤我就会去睡的,
用语句控制如下:
var i=1;
while (i < 999) {
(折一只纸鹤;)
i++;
}
我学到的脚本知识(三)
前二篇,已经把脚本的基本知识粗略地介绍了一下,基础知识也介绍得差不多了,再有一些不太常用的只能在实战中总结了。
以下结合寒江322脚本解释一下。
粗看了一下寒江322脚本,大概共分四个部分
第一部分:变量定义部分,前516行。
第二部分:加入新的界面元素
第三部分:重新设置原有界面元素的样式
第四部分:系统初始化
=====第一部分====
这部分内容于“我所学到的脚本知识(一)”中有介绍。
其实就是定义了一些变量(包括数组变量),这些定义好的变量会在下面的几个部分中使用。
例一:
var room_name="心梦如语";// 房间名称
定义了一个变量:room_name,并赋值为:心梦如语
注意写法:
var 变量名 = 变量值 ;
定义一个变量,前面一定要有var,每句结束时要有";"符号。
后面的“// 房间名称”部分为说明文字,在脚本执行时将被自动忽略。
例二:
// 按钮背景图片 宽度,文件名
var a_btn_pic = new Array
( 17, "btn17.gif",
18, "btn18.gif",
19, "btn19.gif",
35, "btn35.gif",
46, "btn46.gif",
70, "btn70.gif"
);
定义一个变量数组,每个值中间以“,”分隔。
其实也可以写成如下形式:
var a_btn_pic = new Array(17,"btn17.gif",18,"btn18.gif",19,"btn19.gif",35,"tn35.gif",46,"btn46.gif",70,"btn70.gif");
这样写的话,脚本的体积会减小,但脚本的可读性会差一些。
例三:
//——图片——
var a_picture = new Array
( "你好", "pic/p001.gif",
"鼓掌", "pic/p002.gif",
。。
。 )
与
//——背景色——
var a_bkcolor = new Array
( "FFFFFF",
"fdd242",
"f8fead",
"a0e4a0",
。。
。 )
只是写法的格式不同,其实都是定义变量数组。
好了,到现在为止,你已经完全理解了寒江322脚本的前516行的内容了(322脚本共1956行)。恭喜恭喜
我学到的脚本知识(四)
前三篇已经把脚本的基本知识粗略地介绍了一下,基础知识也介绍得差不多了,再有一些不太常用的只能在实战中总结了。
以下结合寒江322脚本解释一下。
以下内容由发布之日起执行,如有与国家法律法规相抵触,请按寒江322脚本之标准执行。
粗看了一下寒江322脚本,大概共分四个部分
第一部分:变量定义部分,前516行。
第二部分:加入新的界面元素
第三部分:重新设置原有界面元素的样式
第四部分:系统初始化
=====第一部分====
这部分内容于“我所学到的脚本知识(一)”中有介绍。
其实就是定义了一些变量(包括数组变量),这些定义好的变量会在下面的几个部分中使用。
例一:
var room_name="心梦如语";// 房间名称
定义了一个变量:room_name,并赋值为:心梦如语
注意写法:
var 变量名 = 变量值 ;
定义一个变量,前面一定要有var,每句结束时要有";"符号。
后面的“// 房间名称”部分为说明文字,在脚本执行时将被自动忽略。
例二:
// 按钮背景图片 宽度,文件名
var a_btn_pic = new Array
( 17, "btn17.gif",
18, "btn18.gif",
19, "btn19.gif",
35, "btn35.gif",
46, "btn46.gif",
70, "btn70.gif"
);
定义一个变量数组,每个值中间以“,”分隔。
其实也可以写成如下形式:
var a_btn_pic = new Array(17,"btn17.gif",18,"btn18.gif",19,"btn19.gif",35,"tn35.gif",46,"btn46.gif",70,"btn70.gif");
这样写的话,脚本的体积会减小,但脚本的可读性会差一些。
例三:
//——图片——
var a_picture = new Array
( "你好", "pic/p001.gif",
"鼓掌", "pic/p002.gif",
。。
。 )
与
//——背景色——
var a_bkcolor = new Array
( "FFFFFF",
"fdd242",
"f8fead",
"a0e4a0",
。。
。 )
只是写法的格式不同,其实都是定义变量数组。
好了,到现在为止,你已经完全理解了寒江322脚本的前516行的内容了(322脚本共1956行)。恭喜恭喜
下面我写一点题外的话。脚本做为一种解释性的语言,与真正的程序还是有一定的差距的,从我的感觉来看,写脚本是一种应用,而写程序是一种开发。没有脚本可以写成一个系统,而程序可以,另外,写程序有很多的艺术性在里面。就象画一幅山水画一样,创作的是一种意境,而不是一颗树的外形。写这些话的目的是想表达我的一个想法:脚本既然只是一种应用,那么就把它共享吧,不要让它带有更多的商业目的。
我所学到的脚本知识(五)附:出击代码
从第517行开始,会涉及到JS语句了。其实语句也没有什么,万事开头难,已经学会500多行了,还难个啥呀。
(部分同志可能还对第(三)篇的内容还晕乎着呢。今天开始就会让你一点点清醒了。)
先打个比方:
1、把寒江脚本看做一座楼(注意:是楼,不是平房,有住“别野”的一边凉快去)
2、这座楼分四层(就是我前所说的,332脚本的四个部分。)
3、每层楼会有多个房间(就是各个功能函数)
4、每个房间又会有具体的工作和职责(就是各子功能函数)
5、每个房间里的人,暂且看做各个变量吧。
下面以一段332脚本的函数来说明一下
function add_new_element()//加入新的界面元素
{ 。
。
。
write_button("","欢迎",409,60,35,20,"","快速欢迎","autosend(a_welcome)");
。
。
。
}
这段代码的add_new_element 是一个功能函数(也就是自己定制的一个任务,目的就是在聊天室的输入区加入新的界面元素。)
从“{”开始,到“}”结束
在“{”与“}”之间的内容是add_new_element 功能函数的各项具体工作。例如:write_button(...)、write_bkcolor_select(...)、
write_select(...)等等。
而write_button(...)这些又是一些功能函数,这一函数的具体功能是在脚本第1010-1014行的
function write_button(name,value,left,top,width,height,color,title,action) 中。
而1010-1014行的
function write_button(name,value,left,top,width,height,color,title,action)//加入执行一个函数的按钮
{ write_button_style(name,left,top,width,height,color,title,"");
document.write(' onclick="' + action + '">'+ value +'</button>');
}
这段代码又包含了write_button_style(...)功能函数。
这样一层套一层的,有时容易给人套迷糊,但其实这就象是一个大工作,里面又分很多小的工作,每一个小的工作里面又会分为几个小
的工作一样。
你晚上回家做饭的时候,不能光做饭不做菜吧?所以做饭其实是做饭和做菜两样工作。做菜也不能就一个菜吧?(那也喝不进去小酒啊
),标准再低,也得弄个四菜一汤啥的呀,这每道菜就又是一项工作了。[依吾政府提醒广大社员:喝多酒有害身体健康!]
那么为什么有些功能函数后面的括号里要加那么多字母、数字呢?这些字母和数字就是第一篇我们提到的变量,它的作用就好像某一项
任务在分配之前先指定几个人去做一样。
象 write_button_style(name,left,top,width,height,color,title,"");
的意思就是:write_button_style这个任务指派name,left,top,width,height,color,title,""这几个人去做,最后一个""的意思是空缺
,因为每个功能函数是事先定义好的,本来需要五个变量的,你非得派四个变量去,那对不起,你得写一个""来表示缺一个变量,(到
时候算奖金也得多给一份不是。)
至于具体的浏览器怎么去找那段代码,怎么去执行,你就不用操心了,浏览器会象领导查检劳动纪律一样,从头走到尾。(领导的事最
好别管,把自己的工作干好就成,出了事让领导去兜着。)
以上这段如果看明白了,那332脚本里面的功能函数你就都可以理出一个大体的思路了。至于细节问题如“typeof(parent.r.listhtml)
”“document.inputform.USER...”这些都先不用管。
㈦ 安卓脚本过期了怎么改到期时间呢
一般来说,安卓脚本的过期时间是由开发者在开发过程中设定的,但是如果你想改变它的过期时间雹卖行的话,可以使用Android的代码编辑器来更改它的过配闹期时间。步骤如下:
1. 首先,打开你的Android IDE,然后找到你的Android脚本的代码文件。
2. 找到你的脚本的过期时间设置,一般是一个有效期变量,然后更改它的值为你想要的时间。
3. 保存文件,然后重新编译你的Android脚本,更改后的过期时间将会生效。
4. 完成之后,重新部署你的Android脚本到你的应用中,然后就可以使用新的过期时间来运行你的应用了。
如果你想要更改过期时间,可以使用上述步骤来操作,谨慎操作源哗,确保你的应用不会受到影响。